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
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
b15d1ddde3
chore: update graphify after wx-qr web login.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 20:22:42 +08:00
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
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
wuzilong and Cursor
ef8b59d23c
docs: add web-admin WeChat QR phone login design.
...
Record the shanxia-shell + zkxw-tab dual-mode login approach (mini program code, session poll, phone_no match) with an interactive HTML demo for review.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 18:08:11 +08:00
wuzilong
1ba1f38321
提交
2026-09-18 12:01:13 +08:00
wuzilong and Cursor
98531845e4
chore: update graphify after mini phone quick login.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:16:25 +08:00
wuzilong and Cursor
b5a58583bd
feat(miniprogram): add phone quick login button on login page.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:15:47 +08:00
wuzilong and Cursor
6f39801c63
feat(miniprogram): add wechatLogin API client on user store.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:14:59 +08:00
wuzilong and Cursor
713aa700ae
feat(api): add mini wechat-login and share JWT issuance with web login.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:14:18 +08:00
wuzilong and Cursor
7ccd1f553e
feat(backend): resolve wechat login user by phone and bind openid.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:12:03 +08:00
wuzilong and Cursor
3d003e8d37
feat(backend): add wechat mini auth helpers and user phone lookups.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:09:04 +08:00
wuzilong and Cursor
7e7f9226cf
feat(config): add WECHAT_MP credentials for mini wechat login.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:06:54 +08:00
wuzilong and Cursor
2ce31b903f
feat(db): add sys_user wx_openid columns for mini phone login.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:05:22 +08:00
wuzilong and Cursor
53795c535d
docs: add miniprogram phone quick login implementation plan.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:04:00 +08:00
wuzilong and Cursor
7f3f569722
docs: add miniprogram phone quick login design.
...
Capture the approved WeChat getPhoneNumber login flow for shanxia mini program, including WECHAT_MP_* config, sys_user openid columns, and parity with password login JWT.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:00:42 +08:00
wuzilong
86694f739f
提交
2026-09-17 09:10:10 +08:00
wuzilong and Cursor
a0da6427ef
chore(miniprogram): update graphify after invoice thumbnails.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 21:23:55 +08:00
wuzilong and Cursor
d6fddc666c
feat(miniprogram): show linked invoice thumbnails on reimburse detail.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 21:22:09 +08:00
wuzilong and Cursor
0c269b6e73
fix(miniprogram): retry invoice picker load after empty failure.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 21:20:44 +08:00
wuzilong and Cursor
ffec3ecd94
feat(miniprogram): show invoice thumbnails in reimburse apply picker.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 21:17:34 +08:00
wuzilong and Cursor
01553ef0f7
style(miniprogram): add invoice thumbnail grid styles for bx.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 21:15:31 +08:00
wuzilong and Cursor
4201d656b1
feat(miniprogram): add invoice thumb helper utilities.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 21:11:59 +08:00
wuzilong and Cursor
ea4d990abb
docs: add reimburse invoice thumbnail implementation plan.
...
Break scheme-1 into helper, styles, apply picker, and detail tasks with verification steps.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 21:10:25 +08:00
wuzilong and Cursor
1af6a944fb
docs: add miniprogram reimburse invoice thumbnail design.
...
Record the approved scheme-1 UI for picker thumbnails, scroll paging, and detail linked-invoice display, with companion HTML demo.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 21:07:35 +08:00
wuzilong and Cursor
ca0098f6ca
feat(web-admin): add mp plan form anchors and polish print customer pick.
...
Improve the page-variant plan form for WebView and align print customer selection with the mobile demo.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-15 09:35:17 +08:00
wuzilong and Cursor
bf81d9b77c
feat(web-admin): redesign mp transport plan detail sections.
...
Align mobile detail with demo IA including hazard cert slots and capped footer actions.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-15 09:34:16 +08:00
wuzilong and Cursor
8d1d5c19b5
feat(web-admin): redesign mp transport plan list to match demo.
...
Use dual dropdown filters, richer cards, and a speed dial for create actions.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-15 09:32:47 +08:00
wuzilong and Cursor
92bb4bf0d0
feat(web-admin): add mp plan detail action splitter.
...
Cap the sticky footer at two primary actions and park the rest in a more sheet.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-15 09:31:43 +08:00
wuzilong and Cursor
b3ad19f6a9
feat(web-admin): enrich mp plan card with party and follower fields.
...
List cards need supplier→buyer and follow user to match the approved mobile demo.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-15 09:29:46 +08:00
wuzilong and Cursor
8c69a01e16
feat(web-admin): add mp webview sheet and list chrome styles.
...
Provide shared Bottom Sheet and filter/speed-dial/fab tokens for the transport plan mobile redesign.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-15 09:27:11 +08:00
wuzilong and Cursor
3795fa2b5a
docs: add implementation plan for mp plan mobile redesign.
...
Break the approved WebView UI redesign into sequenced tasks for list, detail, form, print, and paste.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-15 01:46:49 +08:00
wuzilong and Cursor
43f5ae8603
docs: add mobile redesign spec for WebView transport plans.
...
Capture the approved HTML demo as the UI authority for rewriting /#/m/pl/* without changing ticket or shell architecture.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-15 01:40:45 +08:00
wuzilong and Cursor
fe9d30105d
docs: describe how to add more miniprogram webview modules.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:48:30 +08:00
wuzilong and Cursor
bf22c4b031
style(web-admin): format webview plan form and paste helpers.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:48:25 +08:00
wuzilong and Cursor
a382f3e730
feat(web-admin): add mobile paste-create for third-party vehicle bundles.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:47:14 +08:00
wuzilong and Cursor
866a87f747
feat(web-admin): add mobile print preview for transport plan slips.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:47:12 +08:00
wuzilong and Cursor
bc7a1c225a
feat(web-admin): reuse plan form as a full-page webview variant.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:47:05 +08:00
wuzilong and Cursor
1a5aa1c934
feat(web-admin): add mobile plan detail and shared action guards.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:25:09 +08:00
wuzilong and Cursor
17edd7016f
feat(web-admin): add mobile card list for transport plans in webview.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:25:09 +08:00
wuzilong and Cursor
5220637639
docs(sql): add miniprogram menu for webview transport plan.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:22:12 +08:00
wuzilong and Cursor
57a831a36f
feat(miniprogram): add reusable web-view shell for H5 business pages.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:22:12 +08:00
wuzilong and Cursor
8fbe0679c9
feat(web-admin): add mp webview shell and /m/pl/plan static routes.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:21:37 +08:00
wuzilong and Cursor
c0721786ff
feat(web-admin): skip desktop chrome and login page inside mp webview routes.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:15:08 +08:00
wuzilong and Cursor
5eb7b0b193
feat(backend): exchange miniprogram webview tickets for JWT sessions.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:11:36 +08:00
wuzilong and Cursor
98292cb914
fix(backend): consume webview tickets atomically and fail closed on Redis errors.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:07:45 +08:00
wuzilong and Cursor
62161e2905
feat(backend): add one-time Redis tickets for miniprogram webview login.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 16:03:18 +08:00
wuzilong and Cursor
da7476df5a
docs: record miniprogram WebView template and transport plan design.
...
Capture the approved card-list, ticket-based login, and reusable shell so later modules can follow the same path.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 15:50:12 +08:00
wuzilong
b7d0d4a4f8
提交
2026-09-14 11:57:58 +08:00
wuzilong and Cursor
31d3a044cf
feat(miniprogram): add withdraw button on reimburse and advance lists
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 11:51:10 +08:00
wuzilong and Cursor
f8c93d2bd6
chore: update graphify after attachment display name feature
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 11:38:22 +08:00
wuzilong and Cursor
a1ace0cf9a
feat(miniprogram): show remark-based names on reimburse apply attachments
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 11:32:20 +08:00
wuzilong and Cursor
f05e353d1e
feat(miniprogram): add apply attachment display name helper
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 11:32:17 +08:00
wuzilong and Cursor
76e5d27a79
feat(web-admin): pass remark into reimburse apply attachment UI
...
Wire addForm.remark into apply upload and viewData.remark into apply attachment readonly on reimburse apply and approve pages.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 11:31:00 +08:00
wuzilong and Cursor
e50d2c27c8
feat(web-admin): show remark-based names on bx attachment cards
...
Add optional remark prop to BxAttachmentUpload and BxAttachmentReadonly so cards display sanitized remark_index names while download keeps the original fileName.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 11:30:55 +08:00
wuzilong and Cursor
a564bfe733
feat(web-admin): add apply attachment display name helper
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 11:30:16 +08:00
wuzilong and Cursor
5d4e1e14ad
docs: add plan for reimburse apply attachment display names
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 11:29:55 +08:00
wuzilong and Cursor
6d0668bf58
docs: add design for reimburse apply attachment display names
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 11:27:10 +08:00
wuzilong and Cursor
07f45a1c92
fix(miniprogram): refresh detail after withdraw failure
...
Also add the bx apply withdraw implementation plan.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 10:07:44 +08:00
wuzilong and Cursor
7a45df9de7
chore: update graphify after bx apply withdraw
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 10:05:16 +08:00
wuzilong and Cursor
d2a13bdf87
feat(miniprogram): add advance detail withdraw
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 10:04:22 +08:00
wuzilong and Cursor
c1a999e490
feat(miniprogram): add reimburse detail withdraw
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 10:04:20 +08:00
wuzilong and Cursor
904630d695
feat(web-admin): add withdraw on advance apply page
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 10:03:40 +08:00
wuzilong and Cursor
1917661266
feat(web-admin): add withdraw on reimburse apply page
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 10:03:11 +08:00
wuzilong and Cursor
d058518e57
feat(bx): wire advance/reimburse withdraw API clients
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 10:00:54 +08:00
wuzilong and Cursor
9d06e1830e
feat(bx): add advance apply withdraw API
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 09:59:02 +08:00
wuzilong and Cursor
ac713070ab
docs: add design for bx apply withdraw (reimburse + advance)
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-14 09:55:23 +08:00
wuzilong
8c96de2c0c
提交
2026-09-13 13:08:52 +08:00
wuzilong and Cursor
499896b29c
fix(web-admin): put trip driver/escort on vehicle summary row
...
Merge「本次安排」into PlVehicleSummaryStrip instead of a separate
row above the vehicle info strip.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 12:29:47 +08:00
wuzilong and Cursor
c580bdf03f
feat(web-admin): show this-trip driver and escort on plan view
...
Add a「本次安排」row above the vehicle personnel strip so the
selected driver and escort are visible separately from vehicle bindings.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 12:28:04 +08:00
wuzilong and Cursor
7f25ff0fc0
docs: add design for trip driver/escort on plan view
...
Document approved layout: show this-trip driver and escort above
the vehicle personnel strip in the plan detail dialog.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 12:27:47 +08:00
wuzilong and Cursor
407dd76a6f
chore: update graphify after driver-plan feature
...
Refresh backend AST graph after new driver-plan service and routes.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 11:46:03 +08:00
wuzilong and Cursor
74ed4ba534
feat(miniprogram): add driver-plan list and receipt pages
...
Wire workbench menu, login APIs, calendar list without plate
search, and native receipt detail aligned with site-plan shell.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 11:45:43 +08:00
wuzilong and Cursor
7f9be18ab6
docs(sql): add mini driver-plan menu and role bindings
...
Create/reuse 司机 and 押运员 roles and bind the miniprogram
司机运输计划单 menu under 运输管理.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 11:45:43 +08:00
wuzilong and Cursor
57ca252f81
feat(pl): add JWT driver-plan routes for miniprogram
...
Expose history/detail/feedback/attachments under /transport/driver-plan
and exclude the path from API encryption middleware.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 11:44:24 +08:00
wuzilong and Cursor
1303fae1e0
feat(pl): add driver-plan service for personnel-scoped history
...
Resolve plans by linked driver/escort personnel and reuse public
driver page/feedback helpers for login-state miniprogram APIs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 11:44:24 +08:00
wuzilong and Cursor
ca3062b0e2
feat(pl): optional escort selection on transport arrange
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 10:48:23 +08:00
wuzilong and Cursor
3dc71788d4
feat(web-admin): link system user on personnel form
...
Allow binding a login account on driver/escort personnel so
miniprogram driver-plan visibility can resolve by sys_user_id.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 10:42:19 +08:00
wuzilong and Cursor
26b096ae38
feat(pl): bind sys user on personnel and snapshot selectedEscortId
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 10:37:11 +08:00
wuzilong and Cursor
0658090223
feat(pl): add personnel sys_user_id and transport escort columns
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 10:30:49 +08:00
wuzilong and Cursor
5102817782
docs: add mini driver transport plan implementation plan
...
Break the approved driver-plan design into schema, web arrange/escort,
login APIs, menu SQL, and miniprogram list/detail tasks.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 10:26:07 +08:00
wuzilong and Cursor
3a70c44508
docs: add mini driver transport plan design spec
...
Capture approved decisions for miniprogram driver/escort plan list,
escort selection on arrange, and personnel-user linking.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 10:23:34 +08:00
wuzilong and Cursor
1c631ccd50
chore: update graphify after pound QR public link
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 09:45:42 +08:00
wuzilong and Cursor
ee8bf14eb5
feat(web-admin): add pound QR button on public driver transport page
...
Show a third footer action that opens the shared weighbridge QR card popup.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 09:42:57 +08:00
wuzilong and Cursor
ab3a90c3f5
feat(web-admin): append pound QR links in copy-to-driver text
...
Include multi-line public pound QR URLs after the driver link when dibang slips exist.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 09:41:41 +08:00