zlwu and Cursor
a6d900ee1f
fix(pl): harden load-contract product checks and tests
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-30 10:53:10 +08:00
zlwu and Cursor
fbcd27b213
feat(pl): require load products to belong to selected contract
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-30 10:49:36 +08:00
zlwu and Cursor
eb1bfc5732
feat(pl): enforce at most one contract per plan stop
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-30 10:46:41 +08:00
zlwu
63a1209620
提交
2026-08-30 09:30:02 +08:00
zlwu
16986f443e
提交
2026-08-27 19:38:12 +08:00
zlwu
ebf006eeff
提交
2026-08-27 19:38:01 +08:00
zlwu
4611dbc2b2
提交
2026-08-27 14:23:18 +08:00
zlwu and Cursor
e56d227fe8
feat(pl): add customer stop pref service and unit tests
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-26 17:10:37 +08:00
zlwu and Cursor
4a194aa25e
feat(backend): add list export column filter and row-count guards
...
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 >
2026-08-21 16:52:50 +08:00
zlwu
d26fb23fcf
提交
2026-08-21 16:50:47 +08:00
zlwu and Cursor
f342208a8a
feat(bx): raise my reimburses pageSize max to 500 for apply list pilot
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-21 14:15:19 +08:00
zlwu and Cursor
0e90b1d949
feat(pl): add transport history helpers and schemas
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-21 11:18:34 +08:00
zlwu
44749ae716
提交
2026-08-21 09:35:11 +08:00
zlwu and Cursor
b9ff9c9d67
feat(duty): make duty time range a single-select dict like work plans
...
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 >
2026-08-20 21:58:18 +08:00
zlwu and Cursor
cd0491e601
feat(duty): persist work plans and times; relax grab shift types
...
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 >
2026-08-20 21:14:36 +08:00
zlwu and Cursor
4447a1e8e6
feat(duty): add time/work-plan helpers and dict ensure
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-20 21:06:07 +08:00
zlwu and Cursor
211156a94c
feat(pl): add contract-gap SQL filter and response schemas
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-20 11:56:40 +08:00
zlwu and Cursor
a79e8a3e12
feat(pl): add plan contract gap side computation helpers
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-20 11:54:10 +08:00
zlwu
1938a9b76a
提交
2026-08-19 22:20:42 +08:00
zlwu
a52fe77e34
提交
2026-08-19 09:14:37 +08:00
zlwu and Cursor
9345cf4ad8
fix(duty): allow re-saving historical assigns without duty staff role
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-17 18:29:20 +08:00
zlwu and Cursor
0c4a4bf14a
feat(duty): restrict assign and grab to duty staff role
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-17 18:23:20 +08:00
zlwu and Cursor
3b8a0eb7d8
feat(bx): add parse_optional_date for nullable occur dates
...
Empty values map to None so optional detail dates do not default to today.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-17 15:57:15 +08:00
zlwu
8558d9439e
提交
2026-08-17 15:25:28 +08:00
zlwu and Cursor
a73ee89f44
feat(crm): add settlement clause default text helper
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-16 15:01:47 +08:00
zlwu
34e5fcf0be
提交
2026-08-16 14:58:19 +08:00
zlwu and Cursor
49cad98c84
feat(duty): add schemas and duty_schedule service with capacity tests
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-14 17:12:13 +08:00
zlwu and Cursor
99e4d4c69a
fix(bx): allow reimburse submit when invoice wallet balance is insufficient
...
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 >
2026-08-12 20:57:54 +08:00
zlwu
5fcdb03da1
提交
2026-08-11 07:54:28 +08:00
zlwu and Cursor
7898d65437
feat: add menu favorites API under /web/admin/menu-favorites
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-08 12:01:28 +08:00
zlwu and Cursor
659fc89179
feat: store and search customer name pinyin initials.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-07 17:24:28 +08:00
zlwu and Cursor
ba3f2c19bb
feat: store and search product name pinyin initials.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-07 17:18:59 +08:00
zlwu and Cursor
fa9b3429c7
feat: add pinyin initial abbr helper for CRM names.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-07 16:57:05 +08:00
zlwu
f3693be913
提交
2026-08-06 09:58:20 +08:00
zlwu
5cf67f60d1
提交
2026-08-04 15:33:41 +08:00
zlwu and Cursor
5f2a6f2338
feat: public vehicle plate options for H5 fill pages; select-only plates
...
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 >
2026-08-03 22:44:01 +08:00
zlwu and Cursor
594e4ce38e
feat(crm): sync contract number date segment with sign date
...
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 >
2026-08-03 11:46:11 +08:00
zlwu
272c68af4b
提交
2026-08-02 17:18:33 +08:00
zlwu and Cursor
479851ba4c
feat(pl): expose photoUrls on vehicle and personnel APIs
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-02 10:30:14 +08:00
zlwu and Cursor
3aafae6a9d
feat(crm): add quote approver setting id helpers and unit tests
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-01 12:54:29 +08:00
zlwu and Cursor
10c3c5470c
chore: sync local PL/CRM/BX and migration work to new Gogs host
...
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 >
2026-08-01 09:19:21 +08:00
zlwu and Cursor
5a9abfdd5d
fix(pl): keep multi-brand site feedback when plan product row is stale
...
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 >
2026-07-31 07:06:41 +08:00
zlwu and Cursor
156e4b63e5
fix(pl): treat required brand as preference in brand qty validation
...
Allow multi-brand feedback/archive rows when plan brandMode is required; only enforce sum equals actual qty.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-31 06:52:49 +08:00
zlwu and Cursor
b0346e688d
feat(pl): add feedback brand qty persist helpers and tests
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-31 05:14:54 +08:00
zlwu and Cursor
cc2edfc61f
feat(pl): post brand-level inventory on plan archive
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-28 09:34:07 +08:00
zlwu and Cursor
32533948e3
feat(pl): validate and persist archive quantities by brand
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-28 09:32:36 +08:00
zlwu and Cursor
349e031790
feat(pl): persist create_date on plan create APIs
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-27 16:29:35 +08:00
zlwu
bede140d12
提交
2026-07-26 21:06:09 +08:00
zlwu and Cursor
1567762ceb
feat(bx): invoice ledger balance service with unit tests
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-25 19:11:53 +08:00
zlwu and Cursor
d92bd7940e
fix(pl): 取消承运商审核与资质协议准入门禁
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-25 10:49:12 +08:00