690503:1036 Update workflow #02
CI / CD Pipeline / build (push) Failing after 9m43s
CI / CD Pipeline / deploy (push) Has been skipped

This commit is contained in:
2026-05-03 10:36:34 +07:00
parent 2c24991f88
commit 870420204e
4 changed files with 16 additions and 8 deletions
@@ -1724,6 +1724,7 @@ erDiagram
| current_state | VARCHAR(50) | NOT NULL | สถานะปัจจุบัน |
| status | ENUM | DEFAULT 'ACTIVE' | ACTIVE, COMPLETED, CANCELLED, TERMINATED |
| context | JSON | NULL | ตัวแปร Context สำหรับตัดสินใจ (รวม contractId, projectId, initiatorId เป็นต้น) |
| **version_no** | **INT** | **NOT NULL, DEFAULT 1** | **[ADR-001 v1.1 FR-002] Optimistic lock counter — incremented on every successful transition. Client sends current value; server rejects with 409 if mismatch.** |
| created_at | TIMESTAMP | DEFAULT NOW | เวลาที่สร้าง |
| updated_at | TIMESTAMP | ON UPDATE | เวลาที่อัปเดตล่าสุด |
@@ -1737,12 +1738,11 @@ erDiagram
- PRIMARY KEY (id)
- FOREIGN KEY (definition_id) REFERENCES workflow_definitions(id) ON DELETE CASCADE
- **FOREIGN KEY (contract_id) REFERENCES contracts(id) ON DELETE SET NULL** [delta-07]
- FOREIGN KEY (contract_id) REFERENCES contracts(id) ON DELETE SET NULL
- INDEX (entity_type, entity_id)
- INDEX (current_state)
- **INDEX (contract_id, entity_type, status)** — `idx_wf_inst_contract` [delta-07]
---
- INDEX (contract_id, entity_type, status)
- INDEX (id, version_no) — `idx_wf_inst_version` [ADR-001 v1.1 FR-002] — Supports CAS check: WHERE id = ? AND version_no = ?
### 10.3 workflow_histories
@@ -1756,6 +1756,7 @@ erDiagram
| to_state | VARCHAR(50) | NOT NULL | สถานะปลายทาง |
| action | VARCHAR(50) | NOT NULL | Action ที่กระทำ |
| action_by_user_id | INT | FK, NULL | User ID ผู้กระทำ |
| **action_by_user_uuid** | **VARCHAR(36)** | **NULL** | **[ADR-019 FR-003] UUID ของ User ผู้ดำเนินการ — ใช้ใน API Response แทน INT FK. NULL = System Action หรือ Pre-migration record** |
| comment | TEXT | NULL | ความเห็น |
| metadata | JSON | NULL | Snapshot ข้อมูล ณ ขณะนั้น |
| created_at | TIMESTAMP | DEFAULT NOW | เวลาที่กระทำ |
@@ -1381,6 +1381,7 @@ CREATE TABLE workflow_instances (
'TERMINATED'
) DEFAULT 'ACTIVE' COMMENT 'สถานะภาพรวม',
context JSON NULL COMMENT 'ตัวแปร Context สำหรับตัดสินใจ',
version_no INT NOT NULL DEFAULT 1 COMMENT 'Optimistic lock counter — incremented on every successful transition (ADR-001 v1.1 FR-002). Client sends current value; server rejects with 409 if mismatch.',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_wf_inst_def FOREIGN KEY (definition_id) REFERENCES workflow_definitions (id) ON DELETE CASCADE,
@@ -1394,6 +1395,9 @@ CREATE INDEX idx_wf_inst_contract ON workflow_instances (contract_id, entity_typ
CREATE INDEX idx_wf_inst_state ON workflow_instances (current_state);
-- Index เพื่อรองรับ CAS check: WHERE id = ? AND version_no = ?
CREATE INDEX idx_wf_inst_version ON workflow_instances (id, version_no);
-- 3. ตารางเก็บประวัติ (Audit Log / History)
CREATE TABLE workflow_histories (
id CHAR(36) NOT NULL PRIMARY KEY COMMENT 'UUID',
@@ -1402,6 +1406,7 @@ CREATE TABLE workflow_histories (
to_state VARCHAR(50) NOT NULL COMMENT 'สถานะปลายทาง',
ACTION VARCHAR(50) NOT NULL COMMENT 'Action ที่กระทำ',
action_by_user_id INT NULL COMMENT 'User ID ผู้กระทำ',
action_by_user_uuid VARCHAR(36) NULL COMMENT 'UUID ของ User ผู้ดำเนินการ — ใช้ใน API Response แทน INT FK (ADR-019). NULL = System Action หรือ Pre-migration record',
COMMENT TEXT NULL COMMENT 'ความเห็น',
metadata JSON NULL COMMENT 'Snapshot ข้อมูล ณ ขณะนั้น',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,