workflow_approval/mysql.ddl.sql
yumoqing 5472211972 sync: local modifications to workflow_approval
- Updated all model JSON files: approval_instance, approval_step, approval_task, approval_workflow
- Updated init.py, mysql.ddl.sql, mobile_base.ui
- Added __init__.py
- Added API files: instance CRUD, step CRUD, task approve/reject/list, workflow CRUD
- Added UI files: base.ui, approval_instance.ui, approval_task.ui, approval_workflow.ui
2026-04-28 18:55:29 +08:00

77 lines
4.3 KiB
SQL

-- Table from approval_instance.json
CREATE TABLE IF NOT EXISTS `approval_instance` (
`id` VARCHAR(32) NOT NULL COMMENT '主键UUID',
`workflow_id` VARCHAR(32) NOT NULL COMMENT '关联的工作流定义',
`module_type` VARCHAR(50) NOT NULL COMMENT 'customer/opportunity/contract/financial',
`module_record_id` VARCHAR(32) NOT NULL COMMENT '关联的具体业务记录ID',
`current_step_id` VARCHAR(32) COMMENT '当前待审批的步骤',
`status` VARCHAR(20) NOT NULL COMMENT 'pending/approved/rejected/cancelled',
`initiator_id` VARCHAR(32) NOT NULL COMMENT '审批发起人用户ID',
`title` VARCHAR(200) NOT NULL COMMENT '审批标题',
`description` VARCHAR(1000) COMMENT '审批详细描述',
`org_id` VARCHAR(32) NOT NULL COMMENT '多租户组织隔离',
`created_at` TIMESTAMP NOT NULL COMMENT '创建时间',
`completed_at` TIMESTAMP COMMENT '完成时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审批实例';
CREATE INDEX `idx_instance_workflow` ON `approval_instance` (`workflow_id`);
CREATE INDEX `idx_instance_module` ON `approval_instance` (`module_type`, `module_record_id`);
CREATE INDEX `idx_instance_status` ON `approval_instance` (`status`);
CREATE INDEX `idx_instance_org` ON `approval_instance` (`org_id`);
-- Table from approval_step.json
CREATE TABLE IF NOT EXISTS `approval_step` (
`id` VARCHAR(32) NOT NULL COMMENT '主键UUID',
`workflow_id` VARCHAR(32) NOT NULL COMMENT '关联的工作流',
`step_name` VARCHAR(100) NOT NULL COMMENT '审批步骤名称',
`step_order` INT NOT NULL COMMENT '步骤执行顺序',
`approver_type` VARCHAR(20) NOT NULL COMMENT 'role/user/department/dynamic',
`approver_value` VARCHAR(100) COMMENT '角色ID/用户ID/部门ID/动态表达式',
`approval_type` VARCHAR(20) NOT NULL COMMENT 'single/multiple/sequential/parallel',
`timeout_hours` INT COMMENT '审批超时时间(小时)',
`description` VARCHAR(500) COMMENT '步骤描述',
`org_id` VARCHAR(32) NOT NULL COMMENT '多租户组织隔离',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审批步骤';
CREATE INDEX `idx_step_workflow` ON `approval_step` (`workflow_id`);
CREATE INDEX `idx_step_order` ON `approval_step` (`workflow_id`, `step_order`);
-- Table from approval_task.json
CREATE TABLE IF NOT EXISTS `approval_task` (
`id` VARCHAR(32) NOT NULL COMMENT '主键UUID',
`instance_id` VARCHAR(32) NOT NULL COMMENT '关联的审批实例',
`step_id` VARCHAR(32) NOT NULL COMMENT '关联的审批步骤',
`approver_id` VARCHAR(32) NOT NULL COMMENT '具体审批人用户ID',
`status` VARCHAR(20) NOT NULL COMMENT 'pending/approved/rejected',
`decision` VARCHAR(1000) COMMENT '审批意见',
`org_id` VARCHAR(32) NOT NULL COMMENT '多租户组织隔离',
`assigned_at` TIMESTAMP NOT NULL COMMENT '任务分配时间',
`completed_at` TIMESTAMP COMMENT '任务完成时间',
`due_at` TIMESTAMP COMMENT '任务截止时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审批任务';
CREATE INDEX `idx_task_instance` ON `approval_task` (`instance_id`);
CREATE INDEX `idx_task_approver` ON `approval_task` (`approver_id`);
CREATE INDEX `idx_task_status` ON `approval_task` (`status`);
-- Table from approval_workflow.json
CREATE TABLE IF NOT EXISTS `approval_workflow` (
`id` VARCHAR(32) NOT NULL COMMENT '主键UUID',
`workflow_name` VARCHAR(100) NOT NULL COMMENT '审批工作流名称',
`module_type` VARCHAR(50) NOT NULL COMMENT '关联的模块类型(customer/opportunity/contract/financial)',
`trigger_condition` VARCHAR(500) COMMENT 'JSON格式的触发条件表达式',
`description` VARCHAR(500) COMMENT '工作流描述',
`org_id` VARCHAR(32) NOT NULL COMMENT '多租户组织隔离',
`created_at` TIMESTAMP NOT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NOT NULL COMMENT '更新时间',
`is_active` VARCHAR(1) NOT NULL COMMENT 'Y/N',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审批工作流';
CREATE INDEX `idx_workflow_org` ON `approval_workflow` (`org_id`);
CREATE INDEX `idx_workflow_module` ON `approval_workflow` (`module_type`);
CREATE UNIQUE INDEX `uk_workflow_name_org` ON `approval_workflow` (`workflow_name`, `org_id`);