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:
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Phase 3b — EOI field-override side-effects + persistence.
|
||||
* Phase 3b - EOI field-override side-effects + persistence.
|
||||
*
|
||||
* The EOI dialog lets reps override pre-filled fields (email, phone,
|
||||
* yacht name) with one of three intents:
|
||||
@@ -15,7 +15,7 @@
|
||||
* primary inside the same transaction. `documents.override_*`
|
||||
* stays NULL because the canonical record now matches.
|
||||
*
|
||||
* 3. **Neither flag** (default — rep picked a secondary from the
|
||||
* 3. **Neither flag** (default - rep picked a secondary from the
|
||||
* combobox OR typed something fresh)
|
||||
* → if the value is fresh (no `contactId`), insert a non-primary
|
||||
* `client_contacts` row (`source='eoi-custom-input'`,
|
||||
@@ -28,7 +28,7 @@
|
||||
* canonical `yachts.name` column.
|
||||
*
|
||||
* The applied override values are returned so the caller can layer them
|
||||
* onto the in-memory EOI context before rendering — without a separate
|
||||
* onto the in-memory EOI context before rendering - without a separate
|
||||
* round-trip to re-read the freshly-mutated contact rows.
|
||||
*/
|
||||
|
||||
@@ -239,7 +239,7 @@ export async function applyEoiOverridesBeforeRender(
|
||||
if (!value) throw new ValidationError('yacht name override cannot be empty');
|
||||
if (!yacht) {
|
||||
// Yacht-name override without a linked yacht only makes sense
|
||||
// for the per-document path — otherwise there's no canonical
|
||||
// for the per-document path - otherwise there's no canonical
|
||||
// record to update.
|
||||
if (overrides.yachtName.setAsDefault) {
|
||||
throw new ValidationError('cannot setAsDefault for yacht name when no yacht is linked');
|
||||
@@ -269,7 +269,7 @@ export async function applyEoiOverridesBeforeRender(
|
||||
postalCode: (a.postalCode ?? '').trim(),
|
||||
countryIso: (a.countryIso ?? '').trim().toUpperCase(),
|
||||
};
|
||||
// Treat the address as one logical field — at least line1 + countryIso
|
||||
// Treat the address as one logical field - at least line1 + countryIso
|
||||
// must be present for an EOI to render legally.
|
||||
if (!resolvedAddr.line1 || !resolvedAddr.countryIso) {
|
||||
throw new ValidationError('address override requires line1 and countryIso');
|
||||
@@ -296,7 +296,7 @@ export async function applyEoiOverridesBeforeRender(
|
||||
await tx
|
||||
.update(clientAddresses)
|
||||
.set({
|
||||
// client_addresses has no addressLine2 column — concat line1+line2.
|
||||
// client_addresses has no addressLine2 column - concat line1+line2.
|
||||
streetAddress: resolvedAddr.line2
|
||||
? `${resolvedAddr.line1}\n${resolvedAddr.line2}`
|
||||
: resolvedAddr.line1,
|
||||
@@ -314,7 +314,7 @@ export async function applyEoiOverridesBeforeRender(
|
||||
await tx.insert(clientAddresses).values({
|
||||
clientId: client.id,
|
||||
portId: client.portId,
|
||||
// client_addresses has no addressLine2 column — concat line1+line2.
|
||||
// client_addresses has no addressLine2 column - concat line1+line2.
|
||||
streetAddress: resolvedAddr.line2
|
||||
? `${resolvedAddr.line1}\n${resolvedAddr.line2}`
|
||||
: resolvedAddr.line1,
|
||||
@@ -423,7 +423,7 @@ export async function applyEoiOverridesBeforeRender(
|
||||
*
|
||||
* `source_document_id` on any client_contacts rows inserted by the
|
||||
* preceding `applyEoiOverridesBeforeRender` call is left NULL until
|
||||
* this point — the document id doesn't exist yet during the contact
|
||||
* this point - the document id doesn't exist yet during the contact
|
||||
* insert. This function backfills it.
|
||||
*/
|
||||
export async function persistDocumentOverrides(
|
||||
@@ -467,7 +467,7 @@ export async function persistDocumentOverrides(
|
||||
sql`${clientAddresses.sourceDocumentId} IS NULL`,
|
||||
),
|
||||
);
|
||||
// Phase 3 follow-up — yacht spawn from EOI runs BEFORE generateAndSign
|
||||
// Phase 3 follow-up - yacht spawn from EOI runs BEFORE generateAndSign
|
||||
// so the yacht row's source_document_id is NULL at insert time. Same
|
||||
// bounded backfill pattern as contacts.
|
||||
await db
|
||||
|
||||
Reference in New Issue
Block a user