Commit Graph
100 Commits
Author SHA1 Message Date
zlwu 2de86b0500 提交 2026-07-24 11:55:03 +08:00
zlwu 89fda927a2 提交 2026-07-23 18:01:11 +08:00
zlwuandCursor 91b8dd1aaa fix(oa): align initiator-select picker with flow designer member chips
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 16:27:43 +08:00
zlwuandCursor 4641d333e6 feat(oa): wire start dialog to per-node initiator select in flow preview
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 16:20:06 +08:00
zlwuandCursor eafd3c7d9e feat(oa): allow picking initiator-select users inside flow preview
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 16:14:13 +08:00
zlwuandCursor 624ac87476 feat(oa): switch web-admin OA APIs to initiatorSelectByNode
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 16:11:39 +08:00
zlwuandCursor 5ac5952c55 feat(oa): accept initiatorSelectByNode on start and flow-preview APIs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 16:10:36 +08:00
zlwuandCursor 71424e9dd1 feat(oa): resolve initiator_select per node map in engine
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 16:05:25 +08:00
zlwuandCursor cf270630fe feat(oa): add oa_instance.initiator_select_json for per-node self-select
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 16:00:49 +08:00
zlwuandCursor 1ae72dc659 chore(oa): label transferred status on OA task list pages
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:18:27 +08:00
zlwuandCursor 5350db1dc4 feat(web-admin): add OA task transfer action on instance detail
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:17:25 +08:00
zlwuandCursor 35c60f95e8 feat(web-admin): show transferred status on OA progress lines
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:16:40 +08:00
zlwuandCursor dc54170771 feat(oa): expose POST /tasks/{id}/transfer API
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:14:35 +08:00
zlwuandCursor aaff660d56 feat(oa): add transfer_task to reassign pending approval
Close the current assignee's task as transferred and create a same-node pending task for the target user; include transferred in done lists.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:12:14 +08:00
zlwuandCursor e06e8be60f docs(oa): add implementation plan for approval transfer
Break transfer into engine TDD, API, progress labels, and detail UI tasks aligned with the approved spec.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:06:42 +08:00
zlwuandCursor 2deb0e0539 docs(oa): add transfer action design and interactive mockup
Capture product decisions for replacing the current assignee via close-old + create-new pending task, with optional comment and no app-level switch.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:01:55 +08:00
zlwuandCursor ea4ee3e573 feat(web-admin): print OA or/and-sign nodes as per-person text lines
Align PDF flow section with progress UI person-line format.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 14:16:18 +08:00
zlwuandCursor 1e2b903cd7 feat(web-admin): show per-person approval lines on OA progress chain
Render name/opinion/time under multi-approver nodes; hide duplicate node comment.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 14:13:59 +08:00
zlwuandCursor 043e69f818 feat(web-admin): add OA progress person-line formatter for or/and sign
Provide shared plain-text lines (name opinion time) used by progress UI and PDF.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 14:11:36 +08:00
zlwuandCursor f951c12071 docs(oa): add implementation plan for or/and-sign progress and PDF display
Break work into shared person-line formatter, OaProgressChain, and print flow wiring.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 14:09:31 +08:00
zlwuandCursor 569a13a3ea docs(oa): 明确或签/会签在审批进度与 PDF 中的展示规则
统一为纯文本行「姓名 意见 时间」;或签免处理人仍灰显列出;附 HTML Demo 供对照。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 14:05:36 +08:00
zlwuandCursor 51ce9d6059 docs(oa): add nested relatedApproval print design, plan, and demos
Records screen count+jump vs print multi-line recursion (max 3 levels)
and links the V1 related-approval spec to the revision.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 23:04:41 +08:00
zlwuandCursor 600adfb6d8 feat(web-admin): print relatedApproval as recursive multi-line blocks
PDF export fetches summaries and renders up to three nested levels with
dedupe, instead of dumping raw instance ids.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 23:04:06 +08:00
zlwuandCursor cba3b0cccd feat(web-admin): add related-approval print block assembler
Pure map-based recursion with maxDepth=3 and visited dedupe; async
wrapper batch-fetches summaries for PDF export.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 23:02:19 +08:00
zlwuandCursor 6bb8621578 feat(web-admin): make nested relatedApproval count jump to first instance
Uses relatedIds from enrichment so screen stays count-only without nested cards.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 23:00:51 +08:00
zlwuandCursor 03b47fb266 feat(oa): emit relatedIds when flattening nested relatedApproval fields
Screen jump and print recursion need the instance id list alongside the
「已关联 M 条」summary text without changing form_data shape.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 22:58:56 +08:00
zlwuandCursor 88982878b2 feat(oa): show attachment URLs in related-approval summaries
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 21:41:51 +08:00
zlwuandCursor 7b4e246100 fix(web-admin): avoid unresolved @form-create/utils unique import
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 17:53:55 +08:00
zlwuandCursor 67cdf76741 docs(oa): add related-approval design and plan progress notes
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 17:03:44 +08:00
zlwuandCursor f68927ce70 feat(web-admin): add relatedApproval FormCreate control with picker UI
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 17:03:29 +08:00
zlwuandCursor 14f00d5d3a feat(oa): persist relatedApproval links with field_key on start
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 17:01:53 +08:00
zlwuandCursor f2bf26cd8b feat(oa): add related-approval candidate and summary APIs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 16:48:53 +08:00
zlwuandCursor 5147d79747 feat(oa): add related-approval flatten and extract helpers
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 16:46:21 +08:00
zlwu b8b0446542 提交 2026-07-22 10:43:55 +08:00
zlwu f9c9577843 提交 2026-07-22 09:25:27 +08:00
zlwu c8fe0cdc20 提交 2026-07-21 15:23:59 +08:00
zlwuandCursor 417d6c9c51 docs(oa): 发起审批预览改为钉钉式最终路径规格
条件字段未齐时占位提示,齐后仅展示命中审批链;并在首版预览规格中加交叉引用。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-17 16:10:55 +08:00
zlwu a4fd31f254 提交 2026-07-16 17:37:26 +08:00
zlwu 846aea70bb 提交 2026-07-16 13:48:58 +08:00
zlwuandCursor 381315173d merge: bring storage-release QC completed filter into OA deploy branch
Default pending tab to QC-complete samples with optional filter.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 12:20:30 +08:00
zlwuandCursor 93d148f2d4 chore: update graphify after storage-release QC filter
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 12:16:18 +08:00
zlwuandCursor 27355b5a5d feat(web-admin): default pending storage release to QC-complete samples
Add QC work-order completion filter on the pending tab (default yes) and
pass qcWorkOrderCompleted to the list API.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 12:15:50 +08:00
zlwuandCursor 1ec3d0d775 feat(storage-release): filter pending list by QC work order completion
Add qcWorkOrderCompleted query param and EXISTS-based sample_code filter
so pending reviews can default to QC-complete samples only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 12:11:25 +08:00
zlwuandCursor 747b8f1c06 docs: add storage release QC completed filter design and plan
Document qcWorkOrderCompleted list filter semantics and implementation steps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 12:11:22 +08:00
zlwu 93a83d260f 提交 2026-07-16 11:45:34 +08:00
zlwuandCursor f6efca8fdf merge: bring storage release review pending/reviewed tabs into OA deploy branch
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 11:42:45 +08:00
zlwuandCursor 730d0300d1 feat: split storage release review list into pending and reviewed tabs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 11:21:08 +08:00
zlwuandCursor d1faab8ae5 feat: add reviewPhase param to storage release review list API
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 11:19:59 +08:00
zlwuandCursor 473f345a46 feat: add reviewPhase filter for storage release review list
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 11:18:05 +08:00
zlwuandCursor b3eaf4b4bd docs: add OA approval PDF export design (DingTalk-style stamp v4).
Locks frontend html2canvas/jspdf flow, list entry points, and stamp mapping before implementation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 17:40:12 +08:00
zlwuandCursor 199b401dad chore: update graphify after oa condition-from-form
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 17:09:45 +08:00
zlwuandCursor 638c4184d2 feat(oa): visual condition rules driven by form field flags
Mark eligible form fields for condition branches with required lock,
and replace formula inputs with a field/op/value editor in the flow designer.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 17:09:23 +08:00
zlwuandCursor 9ae239347a feat(oa): validate visual condition rules on publish
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 17:03:13 +08:00
zlwuandCursor e1c41af308 feat(oa): add condition field helpers and rules-match tests
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 16:59:08 +08:00
zlwuandCursor e22be666f0 docs(oa): add implementation plan for form-driven condition branches
Breaks the approved design into backend publish checks, form designer
flagging, and visual FlowDesigner rule editing tasks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 16:53:33 +08:00
zlwuandCursor 23907a544b docs(oa): design form-driven visual condition branches
Spec and mockup for marking form fields for conditions and configuring
branches with field/op/value UI instead of raw formulas.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 16:48:58 +08:00
zlwu 28e59a2262 提交 2026-07-15 16:20:48 +08:00
zlwuandCursor c9711d0dce feat(oa): terminate on return and copy form to start a new instance
Align with DingTalk: returned/rejected/cancelled are terminal; progress
shows return on the approver task only; done list includes returned;
deprecate same-instance resubmit and source-instance linking.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 15:19:20 +08:00
zlwuandCursor 8b2d8284c7 docs(oa): align return/reject/cancel with DingTalk copy-new-instance
Supersede same-instance multi-round return and source-instance linking;
document copy-form restart for returned, cancelled, and rejected.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 15:13:11 +08:00
zlwuandCursor 26800865cd feat(oa): add return, resubmit, and multi-round approval progress
Align with DingTalk semantics: reject ends the instance, return keeps it for initiator edits, and revoke-and-resubmit creates a linked new instance. Progress timeline projects rounds via oa_instance_event.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 14:53:52 +08:00
zlwuandCursor 265d790ea6 feat(oa): render instance detail progress from API projection
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 14:38:39 +08:00
zlwuandCursor 98beade090 feat(oa): project approval progress for instance detail
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 14:34:33 +08:00
zlwuandCursor 53e6be2a73 docs: add DingTalk-style OA approval module design.
Capture the approved redesign for an independent OA approval module with four-step config, approval center, and a Python engine, replacing the unused X6 workflow path.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-14 16:02:32 +08:00
zlwu 6eea13370c 提交 2026-07-14 13:55:11 +08:00
zlwu f90726927e 提交 2026-07-13 12:11:13 +08:00
zlwu df53d05193 提交 2026-07-07 12:32:07 +08:00
zlwu f4bbe3e06e 提交 2026-07-07 11:10:48 +08:00
zlwu 731bbf878a 提交 2026-07-06 20:30:05 +08:00
zlwu b7cd657f32 提交 2026-07-06 19:41:24 +08:00
zlwu cdaa0ac273 提交 2026-07-06 16:59:53 +08:00
zlwu 973176d508 提交 2026-07-06 09:33:50 +08:00
zlwu 3740a7dd80 提交 2026-07-02 12:25:00 +08:00
zlwu 038a60b09e 提交 2026-07-01 16:37:33 +08:00
zlwu 28f233c922 提交 2026-06-30 20:40:22 +08:00
zlwu 17b699b900 提交 2026-06-30 16:48:52 +08:00
zlwu 74e5a0f0cf 提交 2026-06-30 11:20:36 +08:00
zlwu 5b3edb1700 提交 2026-06-30 09:19:06 +08:00
zlwu 1ca2668112 提交 2026-06-29 09:21:09 +08:00
zlwu 4daf990fab 提交 2026-06-26 22:33:05 +08:00
zlwu 0c7034e932 提交 2026-06-26 21:44:33 +08:00
zlwu e4c4cbeedc 提交 2026-06-26 14:36:15 +08:00
zlwu cb8d9fa1c0 提交 2026-06-26 11:49:42 +08:00
zlwu e707ea57ab 提交 2026-06-26 10:48:09 +08:00
zlwu ee364e24aa 提交 2026-06-26 00:50:04 +08:00
zlwu 0b50eff3d8 提交 2026-06-25 12:41:07 +08:00
zlwu 66609c0e21 提交 2026-06-24 11:00:32 +08:00
zlwu b23a2eb350 提交 2026-06-24 10:39:55 +08:00
zlwu 93c28759d0 提交 2026-06-23 10:25:33 +08:00
zlwu 3e15776dba 提交 2026-06-18 15:16:49 +08:00
zlwu 124b15d094 提交 2026-06-18 15:09:50 +08:00
zlwu 9a1656505d 提交 2026-06-18 15:09:40 +08:00
zlwu 805bb0b5fb 提交 2026-06-18 14:57:06 +08:00
zlwu abe3020fcc 提交 2026-06-18 14:57:00 +08:00
zlwu 9d0278d03a 提交 2026-06-18 11:49:43 +08:00
zlwu d39e53d843 提交 2026-06-18 11:14:47 +08:00
zlwu 482d6bbe5d 提交 2026-06-18 11:05:53 +08:00
zlwu 58a47b96a5 提交 2026-06-17 20:31:34 +08:00
zlwu 6bfabac50d 提交 2026-06-17 18:16:23 +08:00
zlwu 3f56586b02 提交 2026-06-17 10:00:54 +08:00
zlwu f1ef768c17 提交 2026-06-16 20:29:25 +08:00