chore(autonomous-session): consolidate uncommitted work from prior session
Bundles the prior autonomous-session output that was sitting unstaged: - Em-dash sweep across src/ + tests/ (en-dash/em-dash to hyphen, ~2280 instances) - country-flag-icons rollout (CountryFlag component, replaces emoji glyphs that never rendered on Windows; lazy-loads the 3x2 SVG index as a single chunk after the per-subpath dynamic-import approach silently failed in webpack) - Admin IA Phase 1+2: 7-domain regroup, 41 to 38 pages, /admin/berths index, redirects (ocr to ai, reports to dashboard, invitations to users), docs/admin-ia-proposal.md - Per-template email tester (registry + endpoint + UI on Email admin page) - Cancel-document mode picker (delete-from-Documenso vs keep-for-audit) - Dashboard PDF report: 25 widgets, SVG charts, date-range picker, 11 resolvers - Customize-widgets per-region sortables at xl+ (charts/rails/feed); single flat sortable below xl when the layout stacks; per-viewport saved orders - Audit doc updates capturing each shipped item - Lint fixes: react-compiler immutability in DonutChart (reduce instead of let-reassign), set-state-in-effect disables in CountryFlag and UploadForSigning preview-bytes effect, unused 'confirm' destructures in interest contract + reservation tabs, unescaped apostrophe in test-template card copy
This commit is contained in:
@@ -174,7 +174,7 @@ export async function listClients(portId: string, query: ListClientsInput) {
|
||||
// interest's stage attached so the list-view chip can self-describe
|
||||
// ("E17 · EOI sent") AND deep-link to the interest. DISTINCT ON
|
||||
// collapses (client, berth) when the client has had multiple
|
||||
// historical interests in the same berth — we keep the open-outcome
|
||||
// historical interests in the same berth - we keep the open-outcome
|
||||
// one if any, otherwise the most recently updated. Excludes archived
|
||||
// interests so closed deals don't crowd the chip row.
|
||||
db.execute<{
|
||||
@@ -272,7 +272,7 @@ export async function listClients(portId: string, query: ListClientsInput) {
|
||||
nurturing: 5,
|
||||
qualified: 6,
|
||||
enquiry: 7,
|
||||
// legacy aliases — kept so audit-log + soft-archive data sorts the same
|
||||
// legacy aliases - kept so audit-log + soft-archive data sorts the same
|
||||
contract_signed: 1,
|
||||
contract_sent: 1,
|
||||
completed: 1,
|
||||
@@ -572,7 +572,7 @@ export async function archiveClient(id: string, portId: string, meta: AuditMeta)
|
||||
|
||||
// F10: cascade-archive the client's open interests so they don't
|
||||
// dangle in active queries with a shadowed client. Won/lost interests
|
||||
// (outcome IS NOT NULL) are kept as historical records — only IN-FLIGHT
|
||||
// (outcome IS NOT NULL) are kept as historical records - only IN-FLIGHT
|
||||
// deals get archived. Wrapped in a single transaction so a partial
|
||||
// archive can't leave the system half-cascaded.
|
||||
const archivedInterestIds: string[] = await db.transaction(async (tx) => {
|
||||
@@ -618,7 +618,7 @@ export async function archiveClient(id: string, portId: string, meta: AuditMeta)
|
||||
});
|
||||
|
||||
// H-07: emit per-interest archive rows so an auditor searching for a
|
||||
// specific archived interest finds it directly — the client-level row's
|
||||
// specific archived interest finds it directly - the client-level row's
|
||||
// `cascadedInterestIds` array doesn't participate in audit-log FTS.
|
||||
for (const interestId of archivedInterestIds) {
|
||||
void createAuditLog({
|
||||
@@ -763,7 +763,7 @@ export async function updateContact(
|
||||
}
|
||||
|
||||
/**
|
||||
* Phase 3d — promote a non-primary client_contacts row to primary,
|
||||
* Phase 3d - promote a non-primary client_contacts row to primary,
|
||||
* demoting the prior primary for the same channel inside one
|
||||
* transaction. Throws when the contact is already primary or the row
|
||||
* does not exist on the targeted client.
|
||||
@@ -786,7 +786,7 @@ export async function promoteContactToPrimary(
|
||||
});
|
||||
if (!contact) throw new NotFoundError('Contact');
|
||||
if (contact.isPrimary) {
|
||||
// No-op — return the row as-is so callers can be idempotent.
|
||||
// No-op - return the row as-is so callers can be idempotent.
|
||||
return contact;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user