-- 迁移脚本 013: 统一任务模型（替代 006-012 的 SOP 流程引擎设计）
-- 设计原则：tw_task 自身闭环，context JSON 作为万能上下文口袋
-- 不依赖 SOP 表，不强制流程引擎，支持轻量任务到复杂 SOP 的全场景

-- 删除旧的流程引擎配套表（如果存在）
DROP TABLE IF EXISTS tw_task_kcp_result;
DROP TABLE IF EXISTS tw_task_draft;
DROP TABLE IF EXISTS tw_task_step_instance;
DROP TABLE IF EXISTS tw_task_process;
DROP TABLE IF EXISTS tw_task_dispatch;
DROP TABLE IF EXISTS tw_task_log;

-- 重建 tw_task 表（统一模型）
DROP TABLE IF EXISTS tw_task;
CREATE TABLE tw_task (
  id                VARCHAR(36) PRIMARY KEY COMMENT '任务ID (UUID)',

  -- 核心字段（所有任务都有）
  title             VARCHAR(200) NOT NULL COMMENT '任务标题',
  description       TEXT COMMENT '任务详情（Markdown 格式）',
  requirements      TEXT COMMENT '处理要求（Markdown 格式）',
  task_type         VARCHAR(50) COMMENT '业务分类（如"合同审核"、"报表整理"）',
  priority          TINYINT DEFAULT 0 COMMENT '优先级: 0=普通, 1=紧急, 2=特急',

  -- 输入
  input_data        JSON COMMENT '结构化输入参数（键值对）',
  input_attachments JSON COMMENT '输入文档列表 [{name, path, type, size}]',

  -- 输出
  output_data       JSON COMMENT '结构化输出结果',
  output_attachments JSON COMMENT '输出文档列表 [{name, path, type, size}]',

  -- 状态与流转
  status            VARCHAR(20) DEFAULT 'PENDING' COMMENT '状态: PENDING/PROCESSING/COMPLETED/CANCELLED/DRAFT',
  flow_steps        JSON COMMENT '流程步骤定义 [{step, assignee_id, status, completed_at}]',

  -- 万能上下文（SOP 快照、历史、相关文档等按需挂载）
  context           JSON COMMENT '上下文数据，结构示例见下方注释',

  -- 指派与时间
  creator_id        VARCHAR(36) COMMENT '创建人ID',
  assignee_id       VARCHAR(36) COMMENT '当前处理人ID',
  created_at        DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  started_at        DATETIME COMMENT '开始处理时间',
  completed_at      DATETIME COMMENT '完成时间',
  deadline          DATETIME COMMENT '截止时间',

  -- TWork 独有（Agent 辅助）
  conversation_id   VARCHAR(100) COMMENT '关联的对话ID',
  agent_cache       JSON COMMENT 'Agent 预填缓存 {input_form, output_form, suggested_docs}',

  -- 文档追踪（来自 012，合并至此统一模型）
  input_document_uris  JSON    COMMENT '入参MD文档URI列表',
  output_document_uris JSON    COMMENT '出参MD文档URI列表',
  sync_status          TINYINT NOT NULL DEFAULT 0 COMMENT '同步状态 0=未同步 1=已同步 2=同步失败',

  -- 回调配置（任务完成后的回传地址）
  callback_config   JSON COMMENT '回调配置 {submit_url, method, auth_type, auth_value, timeout}',

  INDEX idx_status (status),
  INDEX idx_assignee (assignee_id),
  INDEX idx_creator (creator_id),
  INDEX idx_created (created_at),
  INDEX idx_task_type (task_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统一任务表（TWork 任务执行层）';

-- context JSON 结构示例（SOP 场景）：
-- {
--   "source": "sop",
--   "sop_id": "sop_20260701_001",
--   "sop_panorama": {
--     "name": "信贷审批流程",
--     "total_nodes": 12,
--     "current_node": "合规审查",
--     "nodes": [
--       {"name": "发起申请", "status": "completed", "operator": "张三"},
--       {"name": "初审", "status": "completed", "operator": "李四"},
--       {"name": "合规审查", "status": "current", "operator": "王五"},
--       {"name": "终审", "status": "pending", "operator": null}
--     ]
--   },
--   "previous_round": {
--     "node_name": "初审",
--     "operator": "李四",
--     "result": "通过",
--     "comments": "材料齐全，符合审批条件",
--     "completed_at": "2026-07-01T08:30:00Z"
--   },
--   "related_docs": [
--     {"name": "贷款申请表.pdf", "path": "/docs/loan/2026/07/app_001.pdf"},
--     {"name": "征信报告.pdf", "path": "/docs/loan/2026/07/credit_001.pdf"}
--   ]
-- }
