Files
RiskAgent/migrations/1730000000000_init.cjs
T
freedakgmail c670b9e454 外包风险评估系统:领域引擎+前端+服务端持久化与生产部署
- 确定性领域引擎(分类/评分/分级/红线/费用/裁决)+LLM(通义千问)语言理解
- 6步评估向导、服务端草稿持久化(跨设备/编辑草稿保护)
- 工作流(草稿→风控→管理层)、RBAC、报告导出、校准、客户/费率/红线/最低工资管理
- 专业图标体系替换全部emoji、看板美化
- 生产化:API_BASE可配置(同源反代)、auth密钥惰性读取修复RBAC
- 444单测+204前端测试+51 e2e
2026-06-13 01:06:39 +08:00

49 lines
1.3 KiB
JavaScript

/* eslint-disable */
/**
* 初始 schema:评估记录 / 工作流状态 / 操作记录 / 盈利分析。
* 使用 IF NOT EXISTS 以与早期 initSchema 已建表的环境幂等兼容。
*/
exports.up = (pgm) => {
pgm.sql(`
CREATE TABLE IF NOT EXISTS assessments (
id TEXT PRIMARY KEY,
assessment JSONB NOT NULL,
report JSONB,
saved_at TIMESTAMPTZ NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_assessments_saved_at ON assessments(saved_at DESC);
CREATE TABLE IF NOT EXISTS workflow_status (
assessment_id TEXT PRIMARY KEY,
status TEXT NOT NULL,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE IF NOT EXISTS audit_logs (
id BIGSERIAL PRIMARY KEY,
assessment_id TEXT NOT NULL,
role TEXT NOT NULL,
username TEXT NOT NULL,
action TEXT NOT NULL,
comment TEXT,
ts TIMESTAMPTZ NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_audit_assessment ON audit_logs(assessment_id);
CREATE TABLE IF NOT EXISTS profitability (
assessment_id TEXT PRIMARY KEY,
result JSONB NOT NULL
);
`);
};
exports.down = (pgm) => {
pgm.sql(`
DROP TABLE IF EXISTS profitability;
DROP TABLE IF EXISTS audit_logs;
DROP TABLE IF EXISTS workflow_status;
DROP TABLE IF EXISTS assessments;
`);
};