Commit Graph
100 Commits
Author SHA1 Message Date
zlwuandCursor 55e4134050 feat(backend): validate OA money field values on instance start
Reject negatives, non-finite values, and missing required money controls.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 11:04:30 +08:00
zlwuandCursor 0a24f707bf fix(web-admin): avoid duplicate 零 in RMB uppercase for yi+rest
Add regression tests for 亿到元段间零填充。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 11:01:33 +08:00
zlwuandCursor e6d7eecdc6 feat(web-admin): add RMB uppercase converter for OA money field
Pure function with node:test coverage for zero, jiao/fen, and range limits.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 10:56:03 +08:00
zlwuandCursor 98074bf201 docs: add OA money field (amount + RMB uppercase) design.
Captures DingTalk-aligned product decisions for the approval form designer amount control before implementation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 10:48:55 +08:00
zlwu 43d117133b 提交 2026-07-29 17:04:36 +08:00
zlwuandCursor 1b934a2037 fix(outbound-release): use eq_unicode for schedule id EXISTS joins
Avoid Illegal mix of collations when correlating QC/production work orders to infusion schedules in list filters.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 16:36:34 +08:00
zlwu 5d17113e1a 提交 2026-07-29 16:08:34 +08:00
zlwuandCursor 111baacd2d docs: mark outbound release card align-protocol design as implemented
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 16:04:09 +08:00
zlwuandCursor 20e3022f07 style(web-admin): drop unused protocol-card block modifiers on outbound cards
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 16:03:48 +08:00
zlwuandCursor 6445e51523 feat(web-admin): align outbound release cards with protocol-card layout
Reuse protocol-card class names and structure; map outbound fields into aside and three sections.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 16:02:28 +08:00
zlwuandCursor 745802ce61 docs: add outbound release card align-protocol implementation plan
Rewrite OutboundReleaseReviewCardList to protocol-card DOM and copied SCSS.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 15:58:45 +08:00
zlwuandCursor cccee8e2cc docs: add outbound release card align-to-protocol design and demo
Document reusing protocol-card class names with outbound fields; include HTML comparison demo.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 15:57:05 +08:00
zlwuandCursor df973f6bdb docs: mark outbound release tabs/ready/void design as implemented
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 13:37:59 +08:00
zlwuandCursor 5e9e81d28e feat(web-admin): outbound release pending/reviewed tabs and ready checkbox
Match storage-release review UX for pilot/basic-experiment outbound release lists.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 13:37:13 +08:00
zlwuandCursor 12df6d6836 feat(outbound-release): add reviewPhase, ready filter, and void hide
List supports pending/reviewed phase, readyForReviewOnly, and always hides schedules whose outbound QC or production WOs are all voided.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 13:34:29 +08:00
zlwuandCursor d3cc76d560 docs: add outbound release tabs/ready/void implementation plan
Break down backend list filters and web-admin tabs/checkbox aligned with storage-release.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 13:32:15 +08:00
zlwuandCursor 5c7372ee06 docs: add outbound release tabs/ready/void design
Align outbound release review with inbound tabs, ready-for-review checkbox, and voided WO list hide.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 13:30:40 +08:00
zlwuandCursor b1cb13fdfe docs: mark storage-release hide-voided design as implemented
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 13:19:41 +08:00
zlwuandCursor 8b18d21c88 feat(storage-release): hide list rows when related docs are void
Exclude reviews whose protocol is inactive or whose inbound QC/production work orders are all voided.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 13:17:13 +08:00
zlwuandCursor a922ad12f4 feat(storage-release): add hide-voided predicate helpers
Document protocol inactive and all-inbound-WO-void semantics for list filtering.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 13:10:12 +08:00
zlwuandCursor 5d15d8ad6f docs: add storage-release hide-voided implementation plan
Break down list SQL filter and predicate unit tests for voided related documents.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 13:06:41 +08:00
zlwuandCursor 3928d9e118 docs: add storage-release hide voided related design
Document list-only hide rules when protocol is inactive or all inbound QC/production work orders are voided.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 13:04:57 +08:00
zlwuandCursor 38f18f1926 docs: mark storage-release ready filter as implemented
Add design spec, plan checkboxes, and interactive filter demo for the pending readyForReviewOnly feature.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 11:25:04 +08:00
zlwuandCursor 63074c0032 feat(web-admin): pending storage-release ready checkbox filter
Replace QC-completed select with show-all checkbox; request readyForReviewOnly when unchecked.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 11:21:21 +08:00
zlwuandCursor 9e5cc9188b feat(storage-release): add readyForReviewOnly list filter
Default pending list can exclude rows with unfinished QC or production work orders via SQL NOT EXISTS.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 11:16:42 +08:00
zlwu 3317d4a077 提交 2026-07-29 10:26:07 +08:00
zlwuandCursor 56cee052d4 docs: add lineage QC design/plan and pass project fields to material dialog
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 09:56:08 +08:00
zlwuandCursor 33c4408557 feat: expose lineage QC API and wire viewer in outbound material dialog
Add GET /cell-products/{id}/lineage-qc, frontend client, readonly dialog,
and a 查看质检 action on outbound cell rows.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 09:55:51 +08:00
zlwuandCursor 40d93934a9 feat: add cell product lineage QC aggregate loader
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 09:54:28 +08:00
zlwuandCursor f2e582b4dc feat: add lineage node flatten helper for cell product QC view
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 09:49:35 +08:00
zlwu b569643581 提交 2026-07-28 21:33:15 +08:00
zlwuandCursor b105bd9b7d chore: update graphify and mark batch outbound plan complete
Refresh knowledge graphs after storage facility batch outbound changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 19:15:35 +08:00
zlwuandCursor 9978ae7724 feat(web-admin): add shelf cell checkboxes for batch outbound
Occupied cells show always-on checkboxes; body click still opens detail dialog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 19:15:05 +08:00
zlwuandCursor 789c6443f3 feat(web-admin): add batch outbound selection state and toolbar
Wire selected slots map, confirm dialog, and serial remove occupancy calls on storage shelf.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 19:13:26 +08:00
zlwuandCursor 0a055557cb feat(storage): expose storedOccupancyId on shelf slot enrichment
Enable web-admin batch outbound to call existing remove occupancy API per selected cell.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 19:11:24 +08:00
zlwuandCursor d4c927a8b9 docs: add storage facility batch outbound implementation plan
Break down shelf checkbox selection and serial occupancy remove into backend enrichment and Vue tasks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 19:10:29 +08:00
zlwuandCursor 45c2e3df01 docs: add storage facility batch outbound design and demo
Capture confirmed UI (always-on checkboxes) and serial remove via existing occupancy API for implementation planning.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 19:08:43 +08:00
zlwuandCursor d323e09894 chore: track app.pid and misplaced graphify AST caches
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 18:48:07 +08:00
zlwuandCursor d51bbad12d chore(web-admin): update graphify after qc conclusion and storage facility changes
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 18:46:39 +08:00
zlwuandCursor a3af039e74 feat: 质检工单结论、库位批量/筛选与协议样本接收质检摘要
落库并展示质检工单级结论(可编辑/任务派生),库位树支持批量新增子节点与货架格子检索,协议/捐赠列表补充接收与门禁质检摘要,并同步生产物料与工单卡片展示优化。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 18:46:24 +08:00
zlwuandCursor f554d77e59 chore(web-admin): update graphify after product-lines batch fill
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 18:33:20 +08:00
zlwuandCursor d620d5d857 feat(web-admin): enable copy-first and batch slot fill on cell product create
Keep inbound product-lines UX consistent with task output dialog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 13:35:59 +08:00
zlwuandCursor 3079d5da7e feat(web-admin): enable copy-first and batch slot fill on task output dialog
Speed up multi-line cell product inbound entry in production task execution.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 13:35:59 +08:00
zlwuandCursor 0c24165922 feat(web-admin): add product-lines batch storage slot fill dialog
Pick same-box start/end slots and resolve fill targets for empty lines.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 13:35:59 +08:00
zlwuandCursor eae8743826 feat(web-admin): add storage slot range-fill helpers for product lines
Pure functions for copy-first-row attrs and same-box start/end slot pick.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 13:33:32 +08:00
zlwuandCursor 5942feb06e docs: add product-lines batch fill design and plan
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 13:31:49 +08:00
zlwuandCursor e6c8a9c88d feat(web-admin): expose facilityNodeId on storage slot select options
Needed so batch start/end fill can verify slots belong to the same box.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 13:30:56 +08:00
zlwu bff544404f 提交 2026-07-27 19:47:13 +08:00
zlwuandCursor 51f205e89b fix(oa): skip dept tree fetch inside form designer iframe
oa-fc-host has no Pinia/auth; mounting OaDeptSelect previously called
fetchDeptTree and surfaced false network errors when dragging the control.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 18:43:01 +08:00
zlwuandCursor 2e6e1f47d6 feat(oa): add dept select FormCreate control with print formatting
Register type=dept on main app and oa-fc-host, with PC tree-select and
narrow drawer pickers storing {id,name} path snapshots; format dept values
in print and related-summary flatten.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 18:32:44 +08:00
zlwuandCursor 45d84d9642 feat(oa): reject invalid dept form_data on start
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 18:27:27 +08:00
zlwuandCursor babe26a23d fix(oa): coerce dept max prop when validating form_data
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 18:26:57 +08:00
zlwuandCursor 260a461d05 feat(oa): validate dept control form_data shapes
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 18:24:28 +08:00
zlwuandCursor 1d24f1c682 docs(oa): add department select implementation plan
Break the approved dept control design into TDD-ready tasks covering
validation, FormCreate registration, PC/narrow pickers, and print formatting.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 18:21:54 +08:00
zlwuandCursor 19c97d148f docs(oa): add department select control design and mockup
Capture the approved OA form designer dept control contract (multi/single,
{id,name} path snapshot, mobile full-screen picker) and a Fresh Mint HTML demo.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 18:17:38 +08:00
zlwuandCursor d5b0f2d797 chore(graphify): sync knowledge graph artifacts after protocol fix
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 17:50:02 +08:00
zlwuandCursor 57487fd0dc fix(protocol): save DJ pay details without blocking on due-sum mismatch
Persist payment before samples to avoid consuming sample codes on validation failure, soft-delete samples on create rollback, and surface DJ due-amount mismatch as a hint only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 17:49:36 +08:00
zlwuandCursor f661d40f3a feat(oa): add auto-pass-when-approver-is-initiator advanced switch
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 17:43:39 +08:00
zlwuandCursor 1fafb4a157 test(oa): cover auto-pass or/and/consecutive/commentRequired cases
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 17:43:18 +08:00
zlwuandCursor 8bd45561b7 feat(oa): auto-pass approval when assignee is initiator
Extract approve core and hook after creating approval tasks when the advanced setting is enabled.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 17:42:41 +08:00
zlwuandCursor d69388573a test(oa): add failing auto-pass-when-approver-is-initiator case
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 17:41:56 +08:00
zlwuandCursor b9193b3175 docs(oa): add auto-pass-when-approver-is-initiator implementation plan
Break the approved design into TDD tasks for engine core, tests, and designer switch.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 17:37:07 +08:00
zlwuandCursor 9b76aa654e docs(oa): add auto-pass when approver is initiator design
Document advanced setting and engine behavior for skipping self-approval when the assignee equals the initiator.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 17:32:48 +08:00
zlwu 7f4c9720e9 提交 2026-07-25 09:37:24 +08:00
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