zlwu and Cursor
ac8e471aca
fix: align sample registration, freight scope, and OA datetime display
...
Let customer-service quick register write storage, certificate, and insurance separately without extra menu or data-scope checks. List freight by document data scope like the web admin, allow protocol staff outside the collection region, and pad OA datetimes to seconds so PC date pickers can show historical minute values.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-20 17:30:30 +08:00
zlwu
03fcc01d6d
提交
2026-10-17 17:36:14 +08:00
zlwu and Cursor
3ceee48c00
style(web-admin): skin Fresh Mint info tags as barley soft.
...
Align page/dialog el-tag--info with mobile market neutral tags
(#fff7e8 / #9a7020) so storage-service pending states match H5.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 17:08:03 +08:00
zlwu and Cursor
19dffbaa49
fix(mobile-oa-h5): skin market neutral tags as barley soft.
...
Map Element Plus info tones through Vant default and style them as
浅底大麦黄 so unpaid/pending tags stay visible and distinct from solid semantic tags.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 17:05:46 +08:00
zlwu
be2226e4ca
提交
2026-10-17 11:46:53 +08:00
zlwu and Cursor
48dcf991dc
fix(mobile-oa-h5): finish storage-service tag tone parity for market details
...
Wire detail header statusTone for protocol/payment/freight/chase from the
registry mirror, stop hardcoding primary on nested tags, and map 已过期 to
warning so title and field colors stay consistent.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 11:27:29 +08:00
zlwu and Cursor
d355cd0640
feat(mobile-oa-h5): inline payment detail transfers aligned with web dialog
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 11:12:23 +08:00
zlwu and Cursor
c825c170e7
refactor(mobile-oa-h5): extract ScheduleTransferEditor for shared transfer UI
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 11:04:14 +08:00
zlwu and Cursor
9de7f5456e
refactor(mobile-oa-h5): allow transfer helpers to use payment contextId
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 10:56:43 +08:00
zlwu and Cursor
e2fee1d9c5
feat(mobile-oa-h5): open protocol from payment as readonly detail
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 10:55:59 +08:00
zlwu and Cursor
80d238d31d
feat(mobile-oa-h5): add payment-entry helpers for readonly protocol view
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-17 10:53:11 +08:00
zlwu and Cursor
526c9029c8
fix(web-admin): rename presign collector label to 市场专员
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 17:45:30 +08:00
zlwu and Cursor
b545e5987c
fix(web-admin): remove collector staff from payment confirm timeline
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 17:45:30 +08:00
zlwu and Cursor
d85c70a860
fix(web-admin): hide collector staff on research donation UI
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 17:45:30 +08:00
zlwu and Cursor
b76a7d65be
fix(web-admin): hide collector staff on collection protocol UI
...
Retain silent collectorUserId defaults and edit hydration.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 17:45:30 +08:00
zlwu and Cursor
d998378e12
fix(mobile-oa-h5): rename presign collector label to 市场专员
...
Keep collectorUserId for convert-to-protocol mapping.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 17:44:41 +08:00
zlwu and Cursor
90c1b83a54
fix(mobile-oa-h5): hide collector staff on protocol UI
...
Keep collectorUserId in form state as a hidden field with create defaults.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 17:39:39 +08:00
zlwu and Cursor
75f00a6472
docs: add plan for hiding collector staff UI
...
Break down protocol/donation hide, presign rename to 市场专员, and silent collectorUserId write rules into TDD tasks.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 17:38:14 +08:00
zlwu and Cursor
241dd2861c
docs: specify hide collector staff UI with presign rename
...
Capture the agreed design: hide collector displays on protocol/donation/timeline, keep DB/API fields with silent defaults, and rename presign visible labels to 市场专员 while retaining collectorUserId for convert.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 17:33:59 +08:00
zlwu and Cursor
d29a18db86
chore(graphify): refresh graphs after OA bank receipt feature
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:58:44 +08:00
zlwu and Cursor
3a148b2985
feat(web-admin): add bank receipt upload on OA done center
...
Show permission-gated upload action and wire the receipt dialog.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:58:24 +08:00
zlwu and Cursor
6c8b8025d7
feat(web-admin): add OA bank receipt upload dialog
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:58:24 +08:00
zlwu and Cursor
209fb7bff3
feat(web-admin): add OA bank receipt API clients
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:58:24 +08:00
zlwu and Cursor
e5ae28f0c7
docs(sql): seed oa:done:bank-receipt button permission
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:58:24 +08:00
zlwu and Cursor
0402f797c0
feat(oa): expose bank-receipts GET/PUT with menu permission
...
Gate instance bank receipt APIs behind oa:done:bank-receipt.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:58:24 +08:00
zlwu and Cursor
b042266c5b
fix(oa): stabilize bank receipt list order via order_num
...
Preserve PUT item sequence when create_time ties on replace.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:56:09 +08:00
zlwu and Cursor
5e38dc1eca
feat(oa): add bank receipt attachment service for instances
...
Store multiple bank receipts on biz_attachment keyed by instance id.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:49:33 +08:00
zlwu and Cursor
00a315b61c
docs(plan): OA done-center bank receipt upload implementation
...
Break the approved design into TDD tasks for service, API, SQL, and web-admin UI.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:47:18 +08:00
zlwu and Cursor
35532eceee
docs(spec): design OA done-center bank receipt upload
...
Capture approved approach A (biz_attachment + permission-gated dialog)
and the Fresh Mint HTML demo for the done-center upload flow.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:44:20 +08:00
zlwu and Cursor
a148961b55
feat(oa): add department filter on history list and export
...
Allow filtering OA history by initiator department including descendants, while keeping the existing all-history permission scope.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:23:18 +08:00
zlwu and Cursor
6cd22b218d
docs(plan): OA history department filter implementation
...
Break down backend tests, engine/API wiring, and web-admin filter UI into executable tasks.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:16:15 +08:00
zlwu and Cursor
3ecd8f4a74
docs(spec): design OA history department filter
...
Add confirmed design for initiator-dept tree filter on the web-admin OA history list and export APIs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-16 16:13:44 +08:00
zlwu
06d021807b
提交
2026-10-15 23:21:07 +08:00
zlwu
ecde2ba07d
提交
2026-10-15 14:27:42 +08:00
zlwu and Cursor
b9d981d46b
fix(mobile-oa-h5): finish tagType wiring for market detail sections
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 10:07:32 +08:00
zlwu and Cursor
2b5f2f939c
fix(mobile-oa-h5): align presign and freight tags with registry mirror
...
Use info for draft; full payMode codes; receptionSource/transportType colors.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 10:06:07 +08:00
zlwu and Cursor
7ba336169a
fix(mobile-oa-h5): align protocol and chase tags with registry mirror
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 10:01:43 +08:00
zlwu and Cursor
79f9c8785b
fix(mobile-oa-h5): align payment list/detail tags with registry mirror
...
Prefer progressStatus codes and explicit tagType over Chinese heuristics.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:57:21 +08:00
zlwu and Cursor
87f1e9a4eb
feat(mobile-oa-h5): add market status-tag registry mirror
...
Mirror Web status-tag-registry for market modules with resolveStatusTag and parity tests.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:52:54 +08:00
zlwu and Cursor
a7a5a914f1
fix(web-admin): align freight source and transport tags with registry
...
Use receptionSource and transportType tag types instead of hard-coded success/primary plain.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:51:26 +08:00
zlwu and Cursor
920b432491
fix(web-admin): use registry tag types for protocol payMode and auditStatus
...
Align ProtocolViewDialog tags with status-tag-registry instead of hard-coded success/warning.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:50:45 +08:00
zlwu and Cursor
b592aaec2e
feat(web-admin): add paymentScheduleStatus to status-tag registry
...
Lift schedule open/cleared/void labels from PaymentBySampleTab so Web and mobile share one source.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-15 09:47:18 +08:00
zlwu and Cursor
012527ed35
docs: mark payment detail transfer display design as implemented
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 15:24:34 +08:00
zlwu and Cursor
9d7a72673d
feat(mobile-oa-h5): restyle payment schedule transfers as amount-first cards
...
Render schedule cards with metric grids and white transfer cards (amount, method·time, notes) in payment and protocol detail views.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 15:24:25 +08:00
zlwu and Cursor
5ce18e56a0
docs: design payment detail transfer cards as white amount-first layout
...
Capture approved option A demo and implementation outline for schedule/transfer hierarchy in payment detail.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 15:17:21 +08:00
zlwu and Cursor
f045841f1a
fix(mobile-oa-h5): drop duplicate pay-mode tag on protocol detail payment cards
...
Sample payment cards already show 缴费模式 in the field list; remove the redundant status tag beside the sample code title.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 15:11:02 +08:00
zlwu and Cursor
82b8a9c1b2
fix(mobile-oa-h5): slim payment list card fields to a two-column grid
...
Drop protocol number, storage years, and discount amount; remove wide spans so summary fields sit two per row.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 15:08:49 +08:00
zlwu and Cursor
6eafec3fa9
test(mobile-oa-h5): align payment Excel-column parity with periodBlocks
...
Assert installment amount labels on the list card and periodBlocks/footerFields in the presenter.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 15:03:29 +08:00
zlwu and Cursor
321dd3ca43
feat(mobile-oa-h5): collapse payment installment rows on list cards
...
Render periodBlocks as independent expandable summary rows with footer totals after the period section.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 14:41:34 +08:00
zlwu and Cursor
4e586e905b
feat(mobile-oa-h5): present payment periods as collapsible periodBlocks
...
Stop flattening six installment field groups into list cards; emit periodBlocks and footerFields instead.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 14:40:00 +08:00
zlwu and Cursor
bbc24b7c73
docs: add implementation plan for payment card period collapse
...
Break down presenter periodBlocks, MarketListCard UI, CSS, and TDD steps.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 14:26:45 +08:00
zlwu and Cursor
42dde4b0bc
docs: design payment list card period collapse for mobile market H5
...
Spec and interactive demo for collapsing payment installments on list cards (summary row + expand details).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 14:24:12 +08:00
zlwu
3950b5c334
提交
2026-10-14 12:32:03 +08:00
zlwu and Cursor
a2125374a8
fix(mobile-oa-h5): limit presign detail bottom bar to edit convert delete
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 12:13:23 +08:00
zlwu and Cursor
6e190665c0
test(mobile-oa-h5): expect presign detail actions to be order-level only
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 12:12:59 +08:00
zlwu and Cursor
f040f579d1
docs: design presign detail bottom bar with order-level actions only
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 12:09:18 +08:00
zlwu and Cursor
e16afdee95
feat(web-admin): auto-submit paid earnest transfers after saving presign order
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 12:04:22 +08:00
zlwu and Cursor
e56d8d7f51
feat(web-admin): add presign save auto-submit helpers and silent finance submit option
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 12:02:24 +08:00
zlwu and Cursor
0398cb3897
feat(mobile-oa-h5): auto-submit paid earnest transfers after presign save
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 12:00:48 +08:00
zlwu and Cursor
ee95036666
feat(mobile-oa-h5): add helpers to auto-submit dfj presign transfers on save
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 11:58:11 +08:00
zlwu and Cursor
b217ffcdca
docs: design presign save auto-submit finance confirmation
...
Document frontend orchestration so saving a presign order submits all dfj earnest transfers on web and mobile.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 11:51:11 +08:00
zlwu and Cursor
e4ec917a03
style(mobile-oa-h5): JD-style left status dropdown on presign list
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 10:55:55 +08:00
zlwu and Cursor
63f1d7c2f9
fix(mobile-oa-h5): remove reset button from presign list filters
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 10:53:33 +08:00
zlwu and Cursor
c767373a8f
test(mobile-oa-h5): expect JD-style presign status filter without reset
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 10:51:17 +08:00
zlwu and Cursor
8dd816ee1d
docs: plan JD-style status filter for mobile presign list
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 10:49:47 +08:00
zlwu and Cursor
1c53bcd226
docs: design JD-style status filter for mobile presign list
...
Remove the redundant reset button and adopt a left-aligned lightweight dropdown under the search bar.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-14 10:49:03 +08:00
zlwu
f5c514c520
docs: plan complete mobile market parity implementation
2026-10-13 19:41:55 +08:00
zlwu
f5daab0d44
docs: define complete mobile market parity scope and boundaries
2026-10-13 19:37:15 +08:00
zlwu and Cursor
a7b8560f5f
feat(mobile-oa-h5): integrate sample payment panel into protocol form
...
Validate and persist samplePayments on cell_storage protocol save.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 15:30:22 +08:00
zlwu and Cursor
3354e66d82
feat(mobile-oa-h5): add ProtocolSamplePaymentPanel for mobile protocol forms
...
Mobile card UI for per-sample pay modes, schedules, and autofill rules.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 15:30:22 +08:00
zlwu and Cursor
20a8bf538a
feat(mobile-oa-h5): wire samplePayments into protocol payload and detail
...
Drop read-only payment stubs; detail shows per-sample payment cards.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 15:30:22 +08:00
zlwu and Cursor
66e1c8334c
feat(mobile-oa-h5): port protocol sample payment helpers
...
Share web-aligned installment autofill and mode-switch helpers for
mobile protocol forms.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 15:28:39 +08:00
zlwu and Cursor
be22c37196
feat(backend): persist and return samplePayments for market protocols
...
Mobile protocol create/update saves v2 per-sample payments; detail
includes samplePayments for edit hydration.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 15:23:24 +08:00
zlwu and Cursor
9c61f36db8
feat(backend): accept samplePayments on market protocol body
...
Whitelist per-sample payment payload for mobile protocol create/update.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 15:21:07 +08:00
zlwu
cc843535f5
提交
2026-10-13 15:18:01 +08:00
zlwu and Cursor
d08f03ab03
docs: add mobile protocol payment parity P1 implementation plan
...
Six TDD tasks covering backend samplePayments, shared helpers, and
mobile ProtocolSamplePaymentPanel integration.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 15:16:32 +08:00
zlwu and Cursor
6d56572f8b
docs: add mobile protocol payment parity P1 design
...
Phased plan to align mini-program protocol payment editing with
web SamplePaymentPanel while keeping admin actions closed.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 15:13:04 +08:00
zlwu and Cursor
618d8fe21c
feat(web-admin): wire fq last-period and dj deadline autofill in SamplePaymentPanel
...
Auto-recalculate the final installment due amount when earlier periods
change (with manual override), and sync lump-sum deadline to due date.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 14:53:11 +08:00
zlwu and Cursor
6ec4ec6730
feat(web-admin): sync lump-sum deadline to last due date
...
Add applyLumpSumDeadlineToLastDueDate for dj payment schedules,
skipping locked or void rows.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 14:50:41 +08:00
zlwu and Cursor
5fd5550e0d
feat(web-admin): add last-period due amount calc helpers
...
Pure functions for fq auto-fill of the final installment amount
with override/lock gates, covered by unit tests.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 14:48:43 +08:00
zlwu and Cursor
13ac45d10d
docs: add protocol payment last-period autofill implementation plan
...
Bite-sized TDD tasks for SamplePaymentPanel fq/dj autofill helpers.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 14:44:51 +08:00
zlwu and Cursor
0efcd6a6e5
docs: add protocol payment last-period autofill design
...
Document confirmed rules for fq last-period due amount auto-fill
and dj lump-sum deadline to due date sync in SamplePaymentPanel.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 14:43:07 +08:00
zlwu and Cursor
08150167a8
docs: mark research donation list excel parity design as implemented
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 13:17:20 +08:00
zlwu and Cursor
6c66eb164e
chore: update backend graphify after monthly verify no
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 13:14:25 +08:00
zlwu and Cursor
99e71096ac
feat(mobile-oa-h5): align research donation protocol card with excel fields
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 13:14:09 +08:00
zlwu and Cursor
0ab0774e8a
feat(web-admin): align research donation audit list with excel columns
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 13:14:09 +08:00
zlwu and Cursor
aa231ea5f8
feat(web-admin): flatten research donation excel-parity list fields
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 13:14:09 +08:00
zlwu and Cursor
bee2c0d193
feat(backend): persist monthly verify no and expose research list fields
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 13:14:09 +08:00
zlwu and Cursor
60efc5d5d3
feat(backend): allocate research donation monthly verify numbers
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 13:11:25 +08:00
zlwu and Cursor
e0ef78925a
feat(db): add research donation monthly_verify_no column
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 12:05:54 +08:00
zlwu and Cursor
56f379dd0c
docs: add research donation list Excel parity implementation plan
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 12:05:10 +08:00
zlwu and Cursor
c22c9467f5
docs: add research donation list Excel parity design
...
Capture confirmed field mapping, monthly verify number rules, and Web/mini list scope before implementation.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 12:03:04 +08:00
zlwu and Cursor
22a6e1f4e4
docs: add customer-service management design and plan; note mobile follow-up.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 11:04:45 +08:00
zlwu and Cursor
efbf8f6ac9
feat: switch protocol view cert/insurance handle panels to sample level.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 11:04:25 +08:00
zlwu and Cursor
8cebb8e0b8
feat(web-admin): customer-service toolbar and Excel-aligned wide list columns.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 11:02:11 +08:00
zlwu and Cursor
1c225ec89d
feat(web-admin): expand sample quick-register dialog for customer-service kinds.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 10:59:39 +08:00
zlwu and Cursor
ad18204eb9
feat: rename sample-info menu label and extend quick-register client API.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 10:58:23 +08:00
zlwu and Cursor
9c264d7942
feat(backend): enrich cell-storage sample list with customer-service wide columns.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 10:57:55 +08:00
zlwu and Cursor
aeadaa9919
feat(backend): extend sample-info quick-register for sms/followup/fulfillment/all.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 10:56:41 +08:00
zlwu and Cursor
50400ad19c
feat(backend): write storage cert and insurance at sample level in quick-register.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-13 10:52:45 +08:00