wuzilong and Cursor
b8e919cc5e
docs: add mp-webview CRM contract design spec.
...
Capture agreed scope for migrating contract manage/approve into mini program H5 (no price letter this round).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 17:20:22 +08:00
wuzilong and Cursor
bdf0d9624f
docs: document CRM quote as mp webview module.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 16:04:07 +08:00
wuzilong and Cursor
458940c665
feat(miniprogram): enable CRM quote webview workbench entries.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 16:04:07 +08:00
wuzilong and Cursor
d0241ddbd4
feat(web-admin): add mp webview CRM quote version history page.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 16:04:06 +08:00
wuzilong and Cursor
b9e44bd697
feat(web-admin): add page variant for quote form in mp webview.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 16:03:19 +08:00
wuzilong and Cursor
eff40b2e8f
feat(web-admin): add mp webview CRM quote detail actions.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 16:01:42 +08:00
wuzilong and Cursor
63f64b1375
feat(web-admin): add mp webview CRM quote list pages.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 15:55:45 +08:00
wuzilong and Cursor
f0680544a1
feat(web-admin): register /m/crm/quote static routes.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 15:53:02 +08:00
wuzilong and Cursor
9af0425b98
docs(sql): add miniprogram CRM quote webview menus and role bind.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 15:50:48 +08:00
wuzilong and Cursor
007eb2233d
feat(web-admin): add mp CRM quote card query helpers.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 15:49:11 +08:00
wuzilong and Cursor
121e431f68
docs: add mp-webview CRM quote implementation plan.
...
Break the quote manage/approve H5 migration into TDD-friendly tasks aligned with the product webview pattern.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 15:43:16 +08:00
wuzilong and Cursor
88cb1a9f62
docs: add mp-webview CRM quote design spec.
...
Capture agreed scope for migrating quote manage/approve into mini program H5, aligned with the product webview pattern.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 15:35:21 +08:00
wuzilong and Cursor
dfd0bb5cc3
fix(web-admin): refresh product form category tree when page reactivated.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 10:11:53 +08:00
wuzilong and Cursor
7297db1da1
docs: document CRM product as mp webview module.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 10:05:06 +08:00
wuzilong and Cursor
0b0ecf2517
feat(miniprogram): enable CRM product webview workbench entry.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 10:04:50 +08:00
wuzilong and Cursor
9de0459edc
feat(web-admin): add mp webview CRM product category page.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 10:03:50 +08:00
wuzilong and Cursor
afad78bf60
feat(web-admin): add page variant for product form in mp webview.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:53:50 +08:00
wuzilong and Cursor
1d3a4f5155
feat(web-admin): add mp webview CRM product detail actions.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:51:39 +08:00
wuzilong and Cursor
74e2267623
feat(web-admin): add mp webview CRM product list page.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:48:25 +08:00
wuzilong and Cursor
a2769c86dc
feat(web-admin): register /m/crm/product static routes.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:43:35 +08:00
wuzilong and Cursor
d3a7e3d3fd
docs(sql): add miniprogram CRM product webview menus and role bind.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:40:37 +08:00
wuzilong and Cursor
2f72c29ee7
feat(web-admin): add mp CRM product card query helpers.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:36:09 +08:00
wuzilong
85559bd414
提交
2026-10-15 08:50:25 +08:00
wuzilong and Cursor
a07568f546
fix(web-admin): fix stock plan list followStatus funnel and view-only dialog
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 23:40:41 +08:00
wuzilong and Cursor
c2ddf344dc
feat(web-admin): stock inbound/outbound tabs show filtered plan lists
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 23:34:59 +08:00
wuzilong and Cursor
ce06f0f4e8
feat(web-admin): add stockRole variant to transport plan list page
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 23:32:35 +08:00
wuzilong and Cursor
c4ee338c3a
feat(pl): wire stockRole into plan list, export, and facets
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 23:29:00 +08:00
wuzilong and Cursor
63f19d2672
feat(pl): add stockRole filter for plan list by stop customer
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 23:25:44 +08:00
wuzilong and Cursor
c626023250
feat(miniprogram): split driver plan copy product into three lines
...
Make copy-to-group text easier to scan: 产品信息 / 计划数量 / 实际数量 as separate lines.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 20:38:17 +08:00
wuzilong and Cursor
36d27416d3
docs: specify driver plan copy text product line split
...
Define three-line product format (产品信息 / 计划数量 / 实际数量) for miniprogram copy-to-group only.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 20:34:19 +08:00
wuzilong and Cursor
fc840d1cbb
feat(miniprogram): enrich driver plan copy-to-group text
...
Show vehicle plate and compact product lines under delivery/load
sections segmented by customer, per the 2026-10-12 design.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-12 22:13:17 +08:00
wuzilong and Cursor
272dfc0d5e
docs: specify enriched driver plan copy-to-group text format
...
Capture the confirmed WeChat paste layout (vehicle, compact product lines, load/delivery sections by customer) so implementation can follow a single source of truth.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-12 22:10:47 +08:00
wuzilong and Cursor
6a8cd90b98
feat: cascade column facet options by current list context
...
Make dynamic column-facet values respect other active filters (Excel-style), with backend facet context helpers, list-page wiring, slip print/sidebar fixes, and refreshed graphify graphs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-11 22:04:20 +08:00
wuzilong
9643b779a9
提交
2026-10-10 21:12:05 +08:00
wuzilong and Cursor
811e6a129f
feat(pl): allocate copy_seq_no on first driver plan share-to-group
...
Add ensure-copy-seq API and miniprogram clipboard prefix so each plan
gets a tenant-scoped fixed serial on first copy; cover allocation with
unit tests and refresh the backend graph.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-09 12:36:58 +08:00
wuzilong and Cursor
5357df1cc2
feat(pl): add pl_plan.copy_seq_no for copy-to-group sequence
...
Persist a tenant-scoped fixed serial for driver-plan clipboard text;
include migration backfill by create_time.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-09 12:33:00 +08:00
wuzilong
8da59453b6
提交
2026-10-08 09:57:09 +08:00
wuzilong
318b934b86
提交
2026-10-06 17:55:20 +08:00
wuzilong and Cursor
56776bb197
feat: split transport plan list columns into load and delivery product rows
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-06 09:45:11 +08:00
wuzilong and Cursor
c19318d0d0
feat: add per-row load and delivery qty helpers for plan list
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-06 09:36:26 +08:00
wuzilong and Cursor
47cd09d1e5
feat: span transport plan list by plan and delivery column props
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-06 09:32:01 +08:00
wuzilong and Cursor
e241a17077
feat: flatten transport plan list rows to one product per line
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-06 09:23:59 +08:00
wuzilong
6abfb6e251
提交
2026-10-05 12:57:51 +08:00
zlwu and Cursor
59fafb92d5
docs: add left-sidebar layout implementation plan
...
Track the approved task breakdown for default LEFT shell, work tabs,
badge styling, and UI spec updates.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-02 09:48:01 +08:00
zlwu and Cursor
a4dc83e7e7
docs: document left-sidebar shell as web-admin default
...
Update Fresh Mint layout section so the runtime shell matches the
approved left-tree + header/worktab/content structure.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-02 09:48:01 +08:00
zlwu and Cursor
3e99904eea
style(web-admin): align menu text badge with Fresh Mint danger
...
Use #dc2626 for sidebar numeric badges so they match the approved
case-style red counters without leaving the design token chain.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-02 09:48:00 +08:00
zlwu and Cursor
60aa9fd28f
feat(web-admin): mount work tabs under left-layout header
...
Assemble header → worktab → content for the non-portal shell and migrate
legacy portal default so the classic sidebar layout is the entry experience.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-02 09:48:00 +08:00
zlwu and Cursor
cfe3ff5576
feat(web-admin): default shell to left menu with work tabs
...
Use LEFT layout as the product default and enable breadcrumbs and
multi-tabs so the classic sidebar shell matches the approved design.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-02 09:43:13 +08:00
zlwu and Cursor
353fefd828
docs: add web-admin left sidebar layout design
...
Capture the approved shell redesign: default LEFT layout with header,
work tabs, and content, while keeping Fresh Mint tokens and menu badges.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-02 09:37:16 +08:00
zlwu
c55f22a603
提交
2026-10-02 09:28:00 +08:00
zlwu and Cursor
7f1f60e259
test: fix vehicle recharge submit fixture required fields
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-29 12:17:04 +08:00
zlwu and Cursor
4e9c539989
feat(mini): add withdraw on ETC vehicle recharge apply list
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-29 12:16:36 +08:00
zlwu and Cursor
94e4ef6f8e
feat(web-admin): add withdraw action on vehicle recharge apply
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-29 12:16:35 +08:00
zlwu and Cursor
7a4ecc34e0
fix(api): commit mineVehicles helper required by recharge withdraw
...
withdraw commit imported should_restrict_mine_vehicles before the helper was on the branch.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-29 12:15:57 +08:00
zlwu and Cursor
c1113cc2ef
test: assert current_node attribute on withdraw apply read model
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-29 12:09:19 +08:00
zlwu and Cursor
d8df5c47e2
feat(api): allow withdraw of in-approval vehicle recharge applies
...
Applicants can return an in-approval apply to draft while keeping prior approval rows.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-29 12:08:48 +08:00
zlwu and Cursor
388eb8cc7e
test: add failing cases for vehicle recharge apply withdraw
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-29 12:06:12 +08:00
zlwu and Cursor
c3e1de2793
docs: add implementation plan for vehicle recharge apply withdraw
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-29 12:04:08 +08:00
zlwu and Cursor
134c541ebc
docs: add ETC vehicle recharge apply withdraw design
...
Capture approved rules for in_approval → draft withdraw on web-admin and miniprogram, aligned with reimbursement withdraw.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-29 12:01:12 +08:00
zlwu
4f364bc9a0
提交
2026-09-29 07:07:51 +08:00
zlwu
c9fb39395c
提交
2026-09-28 10:47:42 +08:00
zlwu and Cursor
37a7acf40d
chore: update backend graphify after mineVehicles recharge apply
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-27 18:39:11 +08:00
zlwu and Cursor
c70b17f8ca
feat(mini): add ETC vehicle recharge apply for drivers and escorts
...
Add menu SQL, workbench entry, mineVehicles API client, and list/form pages styled like fuel register.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-27 18:38:35 +08:00
zlwu and Cursor
48aef9f233
feat(api): filter vehicle options by mineVehicles personnel
...
Limit GET /transport/vehicle to plates linked via pl_vehicle_personnel for the current user.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-27 18:36:28 +08:00
zlwu and Cursor
0a9d5ba2ed
feat(api): accept mineVehicles on vehicle-recharge-apply endpoints
...
Wire query param through list/get/create/update/submit/cancel for mini-program scope.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-27 18:35:59 +08:00
zlwu and Cursor
0d2c5a2048
feat(pl): enforce mineVehicles write rules on recharge apply
...
Reject foreign plates on create and require own applicant for update/submit/cancel when mineVehicles is enabled.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-27 18:33:25 +08:00
zlwu and Cursor
ae1d01bf07
feat(pl): filter recharge applies by mineVehicles plates
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-27 18:25:58 +08:00
zlwu and Cursor
a903206dbe
feat(pl): add helper for user personnel vehicle plates
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-27 18:23:31 +08:00
zlwu and Cursor
6f6793d7d1
docs: add implementation plan for mini ETC recharge apply.
...
Breaks down mineVehicles backend scope, menus, and miniprogram list/form tasks with TDD steps.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-27 18:21:27 +08:00
zlwu and Cursor
3d7d999f48
docs: add miniprogram ETC vehicle recharge apply design.
...
Captures approved scope for driver/escort mine-vehicles filtering, menu perms, and reuse of existing apply APIs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-27 18:18:49 +08:00
zlwu and Cursor
a3fbb92595
chore: update knowledge graphs after vehicle recharge workflow
...
Refresh AST graphs for backend/frontend and mark completed implementation plan steps.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-26 21:08:05 +08:00
zlwu and Cursor
7b99040f9c
feat: add vehicle recharge approval workflow and pending UI
...
Wire configurable workflow config, approval todo with approve/reject/disburse, apply submit and history, and block disburse board for in-approval rows.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-26 21:05:57 +08:00
zlwu and Cursor
a1fbbac370
feat: expose current node name and action type on recharge apply read
...
Approval UI needs node display name and approve/disburse action without a separate node lookup.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-26 21:05:52 +08:00
zlwu and Cursor
f80a29fb8d
feat: add vehicle recharge approval pending approve reject disburse
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-26 20:56:14 +08:00
zlwu and Cursor
ea8c2c0362
feat: add vehicle recharge apply submit and detail approvals
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-26 20:55:43 +08:00
zlwu and Cursor
bdd67d44d9
feat: add recharge workflow models and schema statuses
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-26 20:55:15 +08:00
zlwu and Cursor
94dd52832b
docs: add vehicle recharge workflow design, plan, and migration SQL
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-26 20:48:17 +08:00
zlwu
b430e75a4b
提交
2026-09-26 11:59:39 +08:00
wuzilong and Cursor
d17f6c472d
chore: update graphify after inventory pound QR popup.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-24 21:30:09 +08:00
wuzilong and Cursor
0ce896d9cd
feat(miniprogram): replace inventory list weigh-slip create with pound QR.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-24 21:23:17 +08:00
wuzilong and Cursor
f2dd16d851
fix(miniprogram): guard pound QR popup load against stale races.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-24 21:22:35 +08:00
wuzilong and Cursor
be0764779c
feat(miniprogram): add centered pound QR popup component.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-24 21:19:34 +08:00
wuzilong and Cursor
35563e9709
feat(miniprogram): add local QR temp-file helper via uqrcodejs.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-24 21:16:53 +08:00
wuzilong and Cursor
8d0d301ead
feat(miniprogram): add local QR temp-file helper via uqrcodejs.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-24 21:15:49 +08:00
wuzilong and Cursor
b1719fab23
feat(miniprogram): add pound QR label helpers and node checks.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-24 21:13:08 +08:00
wuzilong and Cursor
a6e0c4481f
docs: add implementation plan for inventory pound QR popup.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-24 21:09:55 +08:00
wuzilong and Cursor
71f3fde31c
docs: add design for miniprogram inventory pound QR popup.
...
Replace list「生成地磅单」with a centered pound-slip QR dialog aligned to the transport-plan popup.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-24 21:07:04 +08:00
wuzilong and Cursor
7d09ebee96
chore: update graphify after attachment image preview rotate/zoom.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 14:33:01 +08:00
wuzilong and Cursor
b9849f33ae
docs(openspec): note image preview rotate/zoom for attachment cards.
...
Document preview-only rotate and zoom expectations under attachment upload card layout.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 14:32:55 +08:00
wuzilong and Cursor
45327b3acb
feat(web-admin): add rotate/zoom/pan to attachment image preview.
...
Enhance AttachmentUploadField image preview dialog with toolbar controls, wheel zoom, and drag pan; fit-full at 100% zoom after rotate.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 14:29:03 +08:00
wuzilong and Cursor
0af792f535
feat(web-admin): add image preview transform helpers for fit/zoom.
...
Pure functions for AttachmentUploadField image preview rotate/zoom math, with a Node assert script.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 14:23:34 +08:00
wuzilong and Cursor
8435836d81
docs: add implementation plan for attachment image preview rotate/zoom.
...
Break down AttachmentUploadField preview enhancements into helper tests, UI wiring, styles, and manual acceptance checks.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 14:19:03 +08:00
wuzilong and Cursor
3583e6456b
docs: add attachment image preview rotate/zoom design and demo.
...
Capture the approved AttachmentUploadField preview enhancements (rotate, fit-full, wheel/button zoom, drag pan) before implementation.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 14:16:00 +08:00
wuzilong and Cursor
65d904fff1
chore: update graphify after archive zip export.
...
Refresh backend and web-admin graphs after plan-archive ZIP export changes.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 12:47:41 +08:00
wuzilong and Cursor
2f3756eab8
feat(web-admin): add archive data-and-attachments ZIP export menu.
...
Extend ListExportDropdown with additional items and wire archive_zip on the plan-archive page.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 12:47:14 +08:00
wuzilong and Cursor
d5c2e1f1a4
feat(pl): wire archive_zip export format on plan export API.
...
Reuse archive row building and attach document plus hazard-cert files into a zip response.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 12:46:52 +08:00
wuzilong and Cursor
81e52477de
feat(pl): build archive export zip with relative hyperlinks.
...
Pack archive xlsx plus attachment files under 附件/, with HYPERLINK columns on each plan's first row.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 12:46:15 +08:00
wuzilong and Cursor
7af4d7ac7e
feat(pl): collect hazard certs for archive zip export.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 12:42:44 +08:00
wuzilong and Cursor
d68a0ef0bd
fix(pl): fix FakePlan id for planId export field.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 12:42:05 +08:00
wuzilong and Cursor
e9ffa5d042
feat(pl): add archive zip naming helpers and planId on export rows.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-23 12:40:04 +08:00