Validate arranged+this plan qty against fixed contract product quantities on
transport arrange; return post-success remaining/framework cumulative reminders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Shared helpers enforce empty/over-limit export rules and allow
clients to request visible columns by field key.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add duty_time_range dictionary with day/night presets, parse typed ranges on ensure, and replace time pickers with allow-create select in the schedule dialog.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map invalid HH:mm to DutyBizError, serialize workPlans/timeLabel from dict,
ensure dict items on save, and allow custom shift types on public grab.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the hard balance check in debit_reimburse so occupancy can exceed uploaded invoices; balance may go negative until later top-ups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add GET /api/public/db/vehicle-plates for unauthenticated fill/plan pages and remove manual plate entry plus auto-create.
Co-authored-by: Cursor <cursoragent@cursor.com>
Align standard contract nos on create/update (keep seq, bump on collision),
preview the change in contract forms, and sync name parentheses.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bundle pending backend/web-admin feature updates, data-migration scripts,
and related docs so the V1.5 branch on the Tencent Cloud Gogs matches the
current workspace (excluding local secrets).
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist submitted brand qtys even if plan brand_mode lookup fails; resolve soft-deleted plan products for brand metadata instead of substituting another product; stop seeding all actual qty onto the first brand option.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow multi-brand feedback/archive rows when plan brandMode is required; only enforce sum equals actual qty.
Co-authored-by: Cursor <cursoragent@cursor.com>