The leading digits in the inbound filename convention identify the
deliverable, not the project. Adds Deliverable.omgJobNumber (unique
per org), flips inbound-ingest-service to resolve the deliverable
directly by that number (no more project hop), points box-outbound's
folder name at the deliverable's OMG, and surfaces the field in the
deliverable form + detail page.
Schema:
- NEW Deliverable.omgJobNumber String?
- @@index([omgJobNumber]) + @@unique([organizationId, omgJobNumber])
- Migration 20260512400000_deliverable_omg_number
Inbound matcher:
- Skips project lookup, resolves deliverable directly.
- Slug capture from the filename becomes a sanity-check warning
instead of a hard requirement (OMG # is authoritative now).
- Unmatched message reads "No deliverable found with OMG # X".
Outbound:
- buildDeliveryNaming now takes deliverable.omgJobNumber.
- "Missing OMG number on deliverable" failure case replaces the
old project-level check.
UI:
- Deliverable form dialog: new "OMG Deliverable #" input with a
one-line hint explaining the inbound matching convention.
- Deliverable detail metadata: shows "OMG Deliverable #" alongside
the existing "OMG Project #" (relabelled from "OMG Job #").
Project.omgJobNumber is kept as-is — still used for OMG webhook
project upserts; just no longer drives the file matcher.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| migrations | ||
| schema.prisma | ||
| seed-dow.ts | ||
| seed-tracker-data.ts | ||
| seed.ts | ||