Support server-side filters (app name, initiator, apply time, instance status)
with Fresh Mint filter blocks and 300ms debounced instant search.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add approval instance drafts with menu badges, dual-track user/role read model and role bound names, form-designer outline docs, and bare-metal test deploy scripts. Ignore local test-server credential file.
Co-authored-by: Cursor <cursoragent@cursor.com>
Unify effective roles via post-role bindings, remove dedicated OA role UI, and update OA assignee resolution plus related SQL/docs.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
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>
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>
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>
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>