feat(review): 支持多候选稿验收轮次
- 支持每轮提交 1–5 个候选稿并按指定稿验收 - 保留历史轮次只读并兼容单候选稿版本接口 - 同步 SQLite/PostgreSQL schema、迁移验证、测试与项目文档
This commit is contained in:
@@ -13,7 +13,7 @@ if (!fs.existsSync(sqlitePath)) throw new Error(`SQLite 数据库不存在:${s
|
||||
|
||||
const tables = [
|
||||
'operation_groups', 'users', 'projects', 'collections', 'notes', 'images', 'annotations',
|
||||
'work_comments', 'work_versions', 'review_events', 'sessions', 'customer_sessions',
|
||||
'work_comments', 'work_versions', 'review_rounds', 'review_events', 'sessions', 'customer_sessions',
|
||||
'audit_logs', 'api_keys', 'storage_configs',
|
||||
] as const;
|
||||
const booleanColumns: Record<string, Set<string>> = {
|
||||
@@ -47,7 +47,10 @@ try {
|
||||
if (rows.length) await client.query(`SELECT setval(pg_get_serial_sequence('${table}', 'id'), (SELECT MAX(id) FROM "${table}"), true)`);
|
||||
}
|
||||
const collectionStatusRepair = schema.match(/-- COLLECTION_STATUS_REPAIR_START([\s\S]+?)-- COLLECTION_STATUS_REPAIR_END/)?.[1];
|
||||
const reviewRoundRepair = schema.match(/-- REVIEW_ROUND_REPAIR_START([\s\S]+?)-- REVIEW_ROUND_REPAIR_END/)?.[1];
|
||||
if (!collectionStatusRepair) throw new Error('PostgreSQL schema 缺少作品交付集状态修复脚本');
|
||||
if (!reviewRoundRepair) throw new Error('PostgreSQL schema 缺少验收轮次修复脚本');
|
||||
await client.query(reviewRoundRepair);
|
||||
await client.query(collectionStatusRepair);
|
||||
await client.query('COMMIT');
|
||||
process.stdout.write(`迁移完成:${tables.length} 张表已从 ${sqlitePath} 导入 PostgreSQL\n`);
|
||||
|
||||
Reference in New Issue
Block a user