Commit Graph
100 Commits
Author SHA1 Message Date
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 7f1f60e259 test: fix vehicle recharge submit fixture required fields
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-29 12:17:04 +08:00
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 37a7acf40d chore: update backend graphify after mineVehicles recharge apply
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 18:39:11 +08:00
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor ae1d01bf07 feat(pl): filter recharge applies by mineVehicles plates
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 18:25:58 +08:00
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor 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
zlwuandCursor bdd67d44d9 feat: add recharge workflow models and schema statuses
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-26 20:55:15 +08:00
zlwuandCursor 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
wuzilongandCursor d17f6c472d chore: update graphify after inventory pound QR popup.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 21:30:09 +08:00
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor be0764779c feat(miniprogram): add centered pound QR popup component.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 21:19:34 +08:00
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 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
wuzilongandCursor 1c3c0d40b6 docs: add implementation plan for plan-archive attachment ZIP export.
Break work into TDD tasks for zip helpers, hazard cert collection, API wiring, and ListExportDropdown menu items.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 12:38:51 +08:00
wuzilongandCursor f5b76ef711 docs: add plan-archive data-and-attachments ZIP export design.
Capture brainstorming decisions for coexisting Excel and ZIP export, reference-zip folder layout, document attachments plus hazard certs, and relative-path hyperlinks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 12:36:18 +08:00
wuzilong c270d14057 提交 2026-09-23 12:03:07 +08:00
wuzilongandCursor b15d1ddde3 chore: update graphify after wx-qr web login.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 20:22:42 +08:00
wuzilongandCursor cce8fae673 feat(miniprogram): add web QR phone confirm page for admin login.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 20:21:47 +08:00
wuzilongandCursor 29898a107b feat(web-admin): default login to WeChat QR with password tab.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 20:20:11 +08:00
wuzilongandCursor e54c1bdfef chore: untrack web-admin env files force-added in Task 6.
Keep wx-qr encrypt exclude paths in local env files only; they remain gitignored.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 20:18:36 +08:00
wuzilongandCursor c5a0e17a05 feat(web-admin): add wx-qr create and status API clients.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 20:18:08 +08:00
wuzilongandCursor 98e31c88b2 feat(api): confirm web QR login from mini program phone auth.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 20:17:14 +08:00
wuzilongandCursor ec0045d5bf feat(api): add web wx-qr create and status endpoints.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 20:16:15 +08:00
wuzilongandCursor 22634330d5 feat(wechat): generate unlimited mini program codes for web QR login.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 20:15:15 +08:00
wuzilongandCursor 1e7c8bde3b test(auth): force in-memory backend for wx-qr session unit tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 20:14:35 +08:00
wuzilongandCursor 56a3311c45 feat(auth): add wx-qr session state machine for web login.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 19:55:00 +08:00
wuzilongandCursor 7f2b5d06c1 chore: add wx-qr login config and encrypt exclude paths.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 18:15:27 +08:00
wuzilongandCursor b438495b1d docs: add implementation plan for web-admin WeChat QR login.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 18:13:31 +08:00