feat(rvw): Complete RVW module development Phase 1-3

Summary:
- Migrate backend to modules/rvw with v2 API routes (/api/v2/rvw)
- Add new database fields: selectedAgents, editorialScore, methodologyStatus, picoExtract, isArchived
- Create frontend module in frontend-v2/src/modules/rvw
- Implement Dashboard with task list, filtering, batch operations
- Implement ReportDetail with dual tabs (editorial/methodology)
- Implement AgentModal for intelligent agent selection
- Register RVW module in moduleRegistry.ts
- Add navigation entry in TopNavigation
- Update documentation for RVW module status (v3.0)
- Update system status document (v2.9)

Features:
- User can select agents: editorial, methodology, or both
- Support batch task execution
- Task status filtering
- Replace console.log with logger service
- Maintain v1 API backward compatibility

Tested: Frontend and backend verified locally
Status: 85% complete (Phase 1-3 done)
This commit is contained in:
2026-01-07 22:39:08 +08:00
parent 06028c6952
commit 179afa2c6b
226 changed files with 5860 additions and 21 deletions

View File

@@ -99,5 +99,6 @@ ORDER BY ordinal_position;

View File

@@ -112,5 +112,6 @@ runMigration()

View File

@@ -46,5 +46,6 @@ COMMENT ON COLUMN "dc_schema"."dc_tool_c_sessions"."column_mapping" IS '列名

View File

@@ -73,5 +73,6 @@ COMMENT ON COLUMN dc_schema.dc_tool_c_sessions.expires_at IS '过期时间(创

View File

@@ -303,9 +303,25 @@ model ReviewTask {
extractedText String @map("extracted_text")
wordCount Int? @map("word_count")
status String @default("pending")
// 🆕 智能体选择Phase 2新增
selectedAgents String[] @default(["editorial", "methodology"]) @map("selected_agents")
// 评估结果
editorialReview Json? @map("editorial_review")
methodologyReview Json? @map("methodology_review")
overallScore Float? @map("overall_score")
// 🆕 结果摘要Phase 2新增用于列表展示
editorialScore Float? @map("editorial_score")
methodologyStatus String? @map("methodology_status") // pass/warn/fail
// 🆕 预留字段(暂不使用)
picoExtract Json? @map("pico_extract")
isArchived Boolean @default(false) @map("is_archived")
archivedAt DateTime? @map("archived_at")
// 元数据
modelUsed String? @map("model_used")
startedAt DateTime? @map("started_at")
completedAt DateTime? @map("completed_at")
@@ -318,6 +334,7 @@ model ReviewTask {
@@index([userId])
@@index([status])
@@index([createdAt])
@@index([isArchived])
@@map("review_tasks")
@@schema("public")
}