diff --git a/COMMIT_DAY1.txt b/COMMIT_DAY1.txt index edaa52b8..7fe2399b 100644 --- a/COMMIT_DAY1.txt +++ b/COMMIT_DAY1.txt @@ -36,3 +36,4 @@ Status: Day 1 complete (11/11 tasks), ready for Day 2 + diff --git a/DC模块代码恢复指南.md b/DC模块代码恢复指南.md index ece2ac92..062fbf3e 100644 --- a/DC模块代码恢复指南.md +++ b/DC模块代码恢复指南.md @@ -264,5 +264,6 @@ + diff --git a/SAE_WECHAT_MP_DEPLOY_STEPS.md b/SAE_WECHAT_MP_DEPLOY_STEPS.md index 985a2b40..43142be6 100644 --- a/SAE_WECHAT_MP_DEPLOY_STEPS.md +++ b/SAE_WECHAT_MP_DEPLOY_STEPS.md @@ -212,3 +212,4 @@ https://iit.xunzhengyixue.com/api/v1/iit/health + diff --git a/backend/DEPLOY_TO_SAE_FOR_WECHAT_MP.md b/backend/DEPLOY_TO_SAE_FOR_WECHAT_MP.md index a42354b3..2dd7966b 100644 --- a/backend/DEPLOY_TO_SAE_FOR_WECHAT_MP.md +++ b/backend/DEPLOY_TO_SAE_FOR_WECHAT_MP.md @@ -141,3 +141,4 @@ https://iit.xunzhengyixue.com/api/v1/iit/health + diff --git a/backend/RESTART_SERVER_NOW.md b/backend/RESTART_SERVER_NOW.md index f855a4ba..40520db1 100644 --- a/backend/RESTART_SERVER_NOW.md +++ b/backend/RESTART_SERVER_NOW.md @@ -42,3 +42,4 @@ + diff --git a/backend/WECHAT_MP_CONFIG_READY.md b/backend/WECHAT_MP_CONFIG_READY.md index 21e811ef..c8f24536 100644 --- a/backend/WECHAT_MP_CONFIG_READY.md +++ b/backend/WECHAT_MP_CONFIG_READY.md @@ -302,3 +302,4 @@ npx tsx src/modules/iit-manager/test-patient-wechat-url-verify.ts + diff --git a/backend/WECHAT_MP_QUICK_FIX.md b/backend/WECHAT_MP_QUICK_FIX.md index 28b39a62..f66c4baf 100644 --- a/backend/WECHAT_MP_QUICK_FIX.md +++ b/backend/WECHAT_MP_QUICK_FIX.md @@ -164,3 +164,4 @@ npm run dev + diff --git a/backend/migrations/add_data_stats_to_tool_c_session.sql b/backend/migrations/add_data_stats_to_tool_c_session.sql index 00e4d4a6..16223a9b 100644 --- a/backend/migrations/add_data_stats_to_tool_c_session.sql +++ b/backend/migrations/add_data_stats_to_tool_c_session.sql @@ -59,5 +59,6 @@ WHERE table_schema = 'dc_schema' + diff --git a/backend/prisma/manual-migrations/001_add_postgres_cache_and_checkpoint.sql b/backend/prisma/manual-migrations/001_add_postgres_cache_and_checkpoint.sql index 20413ada..f6aa0170 100644 --- a/backend/prisma/manual-migrations/001_add_postgres_cache_and_checkpoint.sql +++ b/backend/prisma/manual-migrations/001_add_postgres_cache_and_checkpoint.sql @@ -97,5 +97,6 @@ ORDER BY ordinal_position; + diff --git a/backend/prisma/manual-migrations/run-migration-002.ts b/backend/prisma/manual-migrations/run-migration-002.ts index 16b36f3b..9173d402 100644 --- a/backend/prisma/manual-migrations/run-migration-002.ts +++ b/backend/prisma/manual-migrations/run-migration-002.ts @@ -110,5 +110,6 @@ runMigration() + diff --git a/backend/prisma/migrations/20251208_add_column_mapping/migration.sql b/backend/prisma/migrations/20251208_add_column_mapping/migration.sql index 11d9f816..148abe0d 100644 --- a/backend/prisma/migrations/20251208_add_column_mapping/migration.sql +++ b/backend/prisma/migrations/20251208_add_column_mapping/migration.sql @@ -44,5 +44,6 @@ COMMENT ON COLUMN "dc_schema"."dc_tool_c_sessions"."column_mapping" IS '列名 + diff --git a/backend/prisma/migrations/create_tool_c_session.sql b/backend/prisma/migrations/create_tool_c_session.sql index 2d7a3e99..42711926 100644 --- a/backend/prisma/migrations/create_tool_c_session.sql +++ b/backend/prisma/migrations/create_tool_c_session.sql @@ -71,5 +71,6 @@ COMMENT ON COLUMN dc_schema.dc_tool_c_sessions.expires_at IS '过期时间(创 + diff --git a/backend/rebuild-and-push.ps1 b/backend/rebuild-and-push.ps1 index 3c4f736a..6e4517d3 100644 --- a/backend/rebuild-and-push.ps1 +++ b/backend/rebuild-and-push.ps1 @@ -113,3 +113,4 @@ Write-Host "" + diff --git a/backend/recover-code-from-cursor-db.js b/backend/recover-code-from-cursor-db.js index 2f15bb41..f7aa7340 100644 --- a/backend/recover-code-from-cursor-db.js +++ b/backend/recover-code-from-cursor-db.js @@ -221,5 +221,6 @@ function extractCodeBlocks(obj, blocks = []) { + diff --git a/backend/scripts/check-dc-tables.mjs b/backend/scripts/check-dc-tables.mjs index cdf01904..1273a367 100644 --- a/backend/scripts/check-dc-tables.mjs +++ b/backend/scripts/check-dc-tables.mjs @@ -240,5 +240,6 @@ checkDCTables(); + diff --git a/backend/scripts/create-tool-c-ai-history-table.mjs b/backend/scripts/create-tool-c-ai-history-table.mjs index ccd4845a..6f2d15bb 100644 --- a/backend/scripts/create-tool-c-ai-history-table.mjs +++ b/backend/scripts/create-tool-c-ai-history-table.mjs @@ -192,5 +192,6 @@ createAiHistoryTable() + diff --git a/backend/scripts/create-tool-c-table.js b/backend/scripts/create-tool-c-table.js index 593618c2..da2a2ce7 100644 --- a/backend/scripts/create-tool-c-table.js +++ b/backend/scripts/create-tool-c-table.js @@ -179,5 +179,6 @@ createToolCTable() + diff --git a/backend/scripts/create-tool-c-table.mjs b/backend/scripts/create-tool-c-table.mjs index 1b770460..49422719 100644 --- a/backend/scripts/create-tool-c-table.mjs +++ b/backend/scripts/create-tool-c-table.mjs @@ -176,5 +176,6 @@ createToolCTable() + diff --git a/backend/scripts/test-pkb-apis-simple.ts b/backend/scripts/test-pkb-apis-simple.ts index 495f97c7..9569debc 100644 --- a/backend/scripts/test-pkb-apis-simple.ts +++ b/backend/scripts/test-pkb-apis-simple.ts @@ -325,3 +325,4 @@ runTests().catch(error => { }); + diff --git a/backend/scripts/verify-pkb-rvw-schema.ts b/backend/scripts/verify-pkb-rvw-schema.ts index 11ff4f0e..13989e48 100644 --- a/backend/scripts/verify-pkb-rvw-schema.ts +++ b/backend/scripts/verify-pkb-rvw-schema.ts @@ -290,3 +290,4 @@ verifySchemas() }); + diff --git a/backend/src/common/jobs/utils.ts b/backend/src/common/jobs/utils.ts index 4067370f..5daea4cf 100644 --- a/backend/src/common/jobs/utils.ts +++ b/backend/src/common/jobs/utils.ts @@ -308,5 +308,6 @@ export function getBatchItems( + diff --git a/backend/src/modules/asl/fulltext-screening/__tests__/api-integration-test.ts b/backend/src/modules/asl/fulltext-screening/__tests__/api-integration-test.ts index 107e157f..eee2b917 100644 --- a/backend/src/modules/asl/fulltext-screening/__tests__/api-integration-test.ts +++ b/backend/src/modules/asl/fulltext-screening/__tests__/api-integration-test.ts @@ -344,5 +344,6 @@ runTests().catch((error) => { + diff --git a/backend/src/modules/asl/fulltext-screening/__tests__/e2e-real-test-v2.ts b/backend/src/modules/asl/fulltext-screening/__tests__/e2e-real-test-v2.ts index a74162c8..f7a2ab58 100644 --- a/backend/src/modules/asl/fulltext-screening/__tests__/e2e-real-test-v2.ts +++ b/backend/src/modules/asl/fulltext-screening/__tests__/e2e-real-test-v2.ts @@ -285,5 +285,6 @@ runTest() + diff --git a/backend/src/modules/asl/fulltext-screening/__tests__/fulltext-screening-api.http b/backend/src/modules/asl/fulltext-screening/__tests__/fulltext-screening-api.http index a2e1c499..074cfe94 100644 --- a/backend/src/modules/asl/fulltext-screening/__tests__/fulltext-screening-api.http +++ b/backend/src/modules/asl/fulltext-screening/__tests__/fulltext-screening-api.http @@ -323,5 +323,6 @@ Content-Type: application/json + diff --git a/backend/src/modules/dc/tool-b/services/ConflictDetectionService.ts b/backend/src/modules/dc/tool-b/services/ConflictDetectionService.ts index 74bdd020..73b70da4 100644 --- a/backend/src/modules/dc/tool-b/services/ConflictDetectionService.ts +++ b/backend/src/modules/dc/tool-b/services/ConflictDetectionService.ts @@ -259,5 +259,6 @@ export const conflictDetectionService = new ConflictDetectionService(); + diff --git a/backend/src/modules/dc/tool-c/README.md b/backend/src/modules/dc/tool-c/README.md index 28bf0f92..b50ea9dc 100644 --- a/backend/src/modules/dc/tool-c/README.md +++ b/backend/src/modules/dc/tool-c/README.md @@ -209,5 +209,6 @@ curl -X POST http://localhost:3000/api/v1/dc/tool-c/test/execute \ + diff --git a/backend/src/modules/dc/tool-c/controllers/StreamAIController.ts b/backend/src/modules/dc/tool-c/controllers/StreamAIController.ts index 67590748..1e9d95c2 100644 --- a/backend/src/modules/dc/tool-c/controllers/StreamAIController.ts +++ b/backend/src/modules/dc/tool-c/controllers/StreamAIController.ts @@ -263,5 +263,6 @@ export const streamAIController = new StreamAIController(); + diff --git a/backend/src/modules/iit-manager/agents/SessionMemory.ts b/backend/src/modules/iit-manager/agents/SessionMemory.ts index 15a2d28c..dec1c012 100644 --- a/backend/src/modules/iit-manager/agents/SessionMemory.ts +++ b/backend/src/modules/iit-manager/agents/SessionMemory.ts @@ -174,3 +174,4 @@ logger.info('[SessionMemory] 会话记忆管理器已启动', { + diff --git a/backend/src/modules/iit-manager/check-iit-table-structure.ts b/backend/src/modules/iit-manager/check-iit-table-structure.ts index 1fdc61f7..0698625a 100644 --- a/backend/src/modules/iit-manager/check-iit-table-structure.ts +++ b/backend/src/modules/iit-manager/check-iit-table-structure.ts @@ -108,3 +108,4 @@ checkTableStructure(); + diff --git a/backend/src/modules/iit-manager/check-project-config.ts b/backend/src/modules/iit-manager/check-project-config.ts index 1c3f7b94..6e8e0bd4 100644 --- a/backend/src/modules/iit-manager/check-project-config.ts +++ b/backend/src/modules/iit-manager/check-project-config.ts @@ -95,3 +95,4 @@ checkProjectConfig().catch(console.error); + diff --git a/backend/src/modules/iit-manager/check-test-project-in-db.ts b/backend/src/modules/iit-manager/check-test-project-in-db.ts index d1a9c975..f6414320 100644 --- a/backend/src/modules/iit-manager/check-test-project-in-db.ts +++ b/backend/src/modules/iit-manager/check-test-project-in-db.ts @@ -77,3 +77,4 @@ main(); + diff --git a/backend/src/modules/iit-manager/docs/微信服务号接入指南.md b/backend/src/modules/iit-manager/docs/微信服务号接入指南.md index 8391c29f..10c9c453 100644 --- a/backend/src/modules/iit-manager/docs/微信服务号接入指南.md +++ b/backend/src/modules/iit-manager/docs/微信服务号接入指南.md @@ -534,3 +534,4 @@ URL: https://iit.xunzhengyixue.com/api/v1/iit/patient-wechat/callback + diff --git a/backend/src/modules/iit-manager/generate-wechat-tokens.ts b/backend/src/modules/iit-manager/generate-wechat-tokens.ts index 83380249..732ccdfb 100644 --- a/backend/src/modules/iit-manager/generate-wechat-tokens.ts +++ b/backend/src/modules/iit-manager/generate-wechat-tokens.ts @@ -169,3 +169,4 @@ console.log(''); + diff --git a/backend/src/modules/iit-manager/services/PatientWechatService.ts b/backend/src/modules/iit-manager/services/PatientWechatService.ts index 09c71d1e..149140f2 100644 --- a/backend/src/modules/iit-manager/services/PatientWechatService.ts +++ b/backend/src/modules/iit-manager/services/PatientWechatService.ts @@ -486,3 +486,4 @@ export const patientWechatService = new PatientWechatService(); + diff --git a/backend/src/modules/iit-manager/test-chatservice-dify.ts b/backend/src/modules/iit-manager/test-chatservice-dify.ts index 48981853..b7c7253c 100644 --- a/backend/src/modules/iit-manager/test-chatservice-dify.ts +++ b/backend/src/modules/iit-manager/test-chatservice-dify.ts @@ -131,3 +131,4 @@ testDifyIntegration().catch(error => { + diff --git a/backend/src/modules/iit-manager/test-iit-database.ts b/backend/src/modules/iit-manager/test-iit-database.ts index 52d29eb3..4f95a9d0 100644 --- a/backend/src/modules/iit-manager/test-iit-database.ts +++ b/backend/src/modules/iit-manager/test-iit-database.ts @@ -160,3 +160,4 @@ testIitDatabase() + diff --git a/backend/src/modules/iit-manager/test-patient-wechat-config.ts b/backend/src/modules/iit-manager/test-patient-wechat-config.ts index 6f532aa5..959711a7 100644 --- a/backend/src/modules/iit-manager/test-patient-wechat-config.ts +++ b/backend/src/modules/iit-manager/test-patient-wechat-config.ts @@ -146,3 +146,4 @@ if (hasError) { + diff --git a/backend/src/modules/iit-manager/test-patient-wechat-url-verify.ts b/backend/src/modules/iit-manager/test-patient-wechat-url-verify.ts index e0025ee2..199185da 100644 --- a/backend/src/modules/iit-manager/test-patient-wechat-url-verify.ts +++ b/backend/src/modules/iit-manager/test-patient-wechat-url-verify.ts @@ -172,3 +172,4 @@ async function testUrlVerification() { + diff --git a/backend/src/modules/iit-manager/test-redcap-query-from-db.ts b/backend/src/modules/iit-manager/test-redcap-query-from-db.ts index 2d50f724..2ce08def 100644 --- a/backend/src/modules/iit-manager/test-redcap-query-from-db.ts +++ b/backend/src/modules/iit-manager/test-redcap-query-from-db.ts @@ -253,3 +253,4 @@ main().catch((error) => { + diff --git a/backend/src/modules/iit-manager/test-wechat-mp-local.ps1 b/backend/src/modules/iit-manager/test-wechat-mp-local.ps1 index 941d7a83..f52c5b31 100644 --- a/backend/src/modules/iit-manager/test-wechat-mp-local.ps1 +++ b/backend/src/modules/iit-manager/test-wechat-mp-local.ps1 @@ -137,3 +137,4 @@ Write-Host "" + diff --git a/backend/src/modules/iit-manager/types/index.ts b/backend/src/modules/iit-manager/types/index.ts index 342aeb52..6819f382 100644 --- a/backend/src/modules/iit-manager/types/index.ts +++ b/backend/src/modules/iit-manager/types/index.ts @@ -230,3 +230,4 @@ export interface CachedProtocolRules { + diff --git a/backend/src/modules/pkb/routes/health.ts b/backend/src/modules/pkb/routes/health.ts index 07a73c7d..dc3275db 100644 --- a/backend/src/modules/pkb/routes/health.ts +++ b/backend/src/modules/pkb/routes/health.ts @@ -43,3 +43,4 @@ export default async function healthRoutes(fastify: FastifyInstance) { } + diff --git a/backend/src/tests/README.md b/backend/src/tests/README.md index 1748a3bc..2ade2ecd 100644 --- a/backend/src/tests/README.md +++ b/backend/src/tests/README.md @@ -409,5 +409,6 @@ SET session_replication_role = 'origin'; + diff --git a/backend/src/tests/verify-test1-database.sql b/backend/src/tests/verify-test1-database.sql index 47bd11a5..ef7b7cee 100644 --- a/backend/src/tests/verify-test1-database.sql +++ b/backend/src/tests/verify-test1-database.sql @@ -111,5 +111,6 @@ WHERE key = 'verify_test'; + diff --git a/backend/src/tests/verify-test1-database.ts b/backend/src/tests/verify-test1-database.ts index 1bca3220..dc4dfb98 100644 --- a/backend/src/tests/verify-test1-database.ts +++ b/backend/src/tests/verify-test1-database.ts @@ -254,5 +254,6 @@ verifyDatabase() + diff --git a/backend/src/types/global.d.ts b/backend/src/types/global.d.ts index 4424d3a3..3c5c1cdc 100644 --- a/backend/src/types/global.d.ts +++ b/backend/src/types/global.d.ts @@ -44,5 +44,6 @@ export {} + diff --git a/backend/sync-dc-database.ps1 b/backend/sync-dc-database.ps1 index ff820966..d1033b4c 100644 --- a/backend/sync-dc-database.ps1 +++ b/backend/sync-dc-database.ps1 @@ -67,5 +67,6 @@ Write-Host "✅ 完成!" -ForegroundColor Green + diff --git a/backend/test-pkb-migration.http b/backend/test-pkb-migration.http index bf1f388f..618b8ab4 100644 --- a/backend/test-pkb-migration.http +++ b/backend/test-pkb-migration.http @@ -157,3 +157,4 @@ DELETE {{baseUrl}}/api/v2/pkb/knowledge/knowledge-bases/{{testKbId}} ### + diff --git a/backend/test-tool-c-advanced-scenarios.mjs b/backend/test-tool-c-advanced-scenarios.mjs index c9f4d0cf..2f8d3c14 100644 --- a/backend/test-tool-c-advanced-scenarios.mjs +++ b/backend/test-tool-c-advanced-scenarios.mjs @@ -354,5 +354,6 @@ runAdvancedTests().catch(error => { + diff --git a/backend/test-tool-c-day2.mjs b/backend/test-tool-c-day2.mjs index fc41e473..40dea2a1 100644 --- a/backend/test-tool-c-day2.mjs +++ b/backend/test-tool-c-day2.mjs @@ -420,5 +420,6 @@ runAllTests() + diff --git a/backend/test-tool-c-day3.mjs b/backend/test-tool-c-day3.mjs index 7c5008fc..8b721345 100644 --- a/backend/test-tool-c-day3.mjs +++ b/backend/test-tool-c-day3.mjs @@ -378,5 +378,6 @@ runAllTests() + diff --git a/deploy-to-sae.ps1 b/deploy-to-sae.ps1 index df8157d5..d6143bec 100644 --- a/deploy-to-sae.ps1 +++ b/deploy-to-sae.ps1 @@ -162,5 +162,6 @@ Set-Location .. + diff --git a/docs/00-系统总体设计/00-系统当前状态与开发指南.md b/docs/00-系统总体设计/00-系统当前状态与开发指南.md index 44ad3de2..749275cc 100644 --- a/docs/00-系统总体设计/00-系统当前状态与开发指南.md +++ b/docs/00-系统总体设计/00-系统当前状态与开发指南.md @@ -1,10 +1,10 @@ # AIclinicalresearch 系统当前状态与开发指南 -> **文档版本:** v2.6 +> **文档版本:** v2.7 > **创建日期:** 2025-11-28 > **维护者:** 开发团队 -> **最后更新:** 2026-01-03 -> **重大进展:** 🎉 **IIT Manager Agent Phase 1.5完成!** - AI基于REDCap真实数据对话,解决LLM幻觉问题! +> **最后更新:** 2026-01-07 +> **重大进展:** 🎉 **PKB模块前端V3设计实现完成!** - Dashboard + Workspace + 3种工作模式 > **部署状态:** ✅ 生产环境运行中 | 公网地址:http://8.140.53.236/ > **文档目的:** 快速了解系统当前状态,为新AI助手提供上下文 @@ -39,7 +39,7 @@ | 模块代号 | 模块名称 | 核心功能 | 商业价值 | 当前状态 | 优先级 | |---------|---------|---------|---------|---------|--------| | **AIA** | AI智能问答 | 10+专业智能体(选题评价、PICO梳理等) | ⭐⭐⭐⭐ | ✅ 已完成 | P1 | -| **PKB** | 个人知识库 | RAG问答、私人文献库 | ⭐⭐⭐ | ✅ 已完成 | P1 | +| **PKB** | 个人知识库 | RAG问答、私人文献库 | ⭐⭐⭐ | ✅ **前端V3设计完成(75%)** | P1 | | **ASL** | AI智能文献 | 文献筛选、Meta分析、证据图谱 | ⭐⭐⭐⭐⭐ | 🚧 **正在开发** | **P0** | | **DC** | 数据清洗整理 | ETL + 医学NER(百万行级数据) | ⭐⭐⭐⭐⭐ | ✅ **Tool B完成 + Tool C 99%(异步架构+性能优化-99%+多指标转换+7大功能)** | **P0** | | **IIT** | IIT Manager Agent | AI驱动IIT研究助手 - 智能质控+REDCap集成 | ⭐⭐⭐⭐⭐ | 🎉 **Phase 1.5完成(60%)- AI对话+REDCap数据集成** | **P0** | @@ -115,7 +115,7 @@ --- -## 🚀 当前开发状态(2025-12-24) +## 🚀 当前开发状态(2026-01-07) ### ✅ 已完成模块 @@ -151,12 +151,35 @@ - ✅ 批处理模式 - **状态**:生产就绪 -#### 3. PKB模块 - 个人知识库(已完成) -- ✅ 知识库CRUD -- ✅ 文档上传(PDF/Word/TXT/MD) -- ✅ RAG问答 -- ✅ 批处理任务 -- **状态**:生产就绪 +#### 3. PKB模块 - 个人知识库 🎉 **前端V3设计完成!** + +**开发进度**: +- ✅ **后端API**:100%完成(v1 + v2双路由运行) +- ✅ **前端Dashboard**:90%完成(基于知识库仪表盘V5原型) +- ✅ **前端Workspace**:85%完成(基于工作台V3原型) +- ✅ **全文阅读模式**:90%完成(Chat组件集成) +- ✅ **逐篇精读模式**:85%完成(文档选择+对话) +- 🔧 **批处理模式**:70%完成(UI完成,API待调试) +- ❌ **RAG检索模式**:0%(后端待实现) + +**核心功能**: +- 知识库CRUD + 文档管理 +- 3种工作模式(全文阅读、逐篇精读、批处理) +- Ant Design X Chat组件集成 +- 响应式全屏布局 + +**技术亮点**: +- ✅ 模块化架构迁移(/modules/pkb) +- ✅ Zustand状态管理 +- ✅ 复用shared/components/Chat通用组件 +- ✅ 单层Header + 紧凑工作模式栏设计 + +**待解决问题**: +- 🔧 批处理API执行待调试 +- 🔧 知识资产页面导航条待完善 +- 🔧 UI与原型图精细化对比 + +**详细文档**:[PKB模块当前状态](../03-业务模块/PKB-个人知识库/00-模块当前状态与开发指南.md) ### 🚧 正在开发模块 @@ -635,7 +658,8 @@ AIclinicalresearch/ | **2025-12-31** | **IIT Agent启动** 🎯 | ✅ Day 1完成(数据库+企微配置+模块骨架) | | **2026-01-01** | **企微可信域名** 🌐 | ✅ iit.xunzhengyixue.com域名验证完成 | | **2026-01-02** | **REDCap对接方案** 🏆 | ✅ REDCap环境部署 + DET+REST API方案确定 | -| **当前** | Day 2准备中 | 🚧 REDCap API集成开发(Adapter+Webhook+SyncManager) | +| **2026-01-07** | **PKB前端V3** 🎉 | ✅ PKB模块前端V3设计实现完成(Dashboard+Workspace+3种工作模式) | +| **当前** | PKB优化中 | 🔧 批处理API调试 + UI精细化 | --- @@ -789,8 +813,8 @@ npm run dev # http://localhost:3000 - **总计**:约 85,000 行 ### 模块完成度 -- ✅ **已完成**:AIA(100%)、PKB(100%)、平台基础层(100%) -- 🚧 **开发中**:ASL(80%)、DC(Tool C 98%,Tool B后端100%,Tool B前端0%) +- ✅ **已完成**:AIA(100%)、平台基础层(100%) +- 🚧 **开发中**:PKB(75%,前端V3设计完成)、ASL(80%)、DC(Tool C 98%,Tool B后端100%,Tool B前端0%)、IIT(60%,Phase 1.5完成) - 📋 **未开始**:SSA、ST、RVW ### 部署完成度 @@ -927,9 +951,9 @@ if (items.length >= 50) { --- -**文档版本**:v2.6 -**最后更新**:2026-01-03 -**下次更新**:IIT Manager Agent Phase 2 或 SAE应用部署完成 +**文档版本**:v2.7 +**最后更新**:2026-01-07 +**下次更新**:PKB批处理功能调试完成 或 IIT Manager Agent Phase 2 --- @@ -937,24 +961,35 @@ if (items.length >= 50) { --- -## 📝 最新更新(2026-01-03) +## 📝 最新更新(2026-01-07) -**IIT Manager Agent Phase 1.5 完成 🎉**: -1. ✅ **AI对话集成完成**:ChatService (390行) + SessionMemory (170行) -2. ✅ **REDCap数据查询集成**:意图识别 + 数据注入LLM -3. ✅ **解决LLM幻觉问题**:AI基于真实数据回答,不编造信息 -4. ✅ **测试通过**:查询test0102项目(10条记录),ID 7患者详细信息 -5. ✅ **上下文记忆**:SessionMemory保存最近3轮对话 -6. ✅ **即时反馈**:"正在查询"消息改善用户体验 -3. ✅ **技术可行性验证通过**(DET功能源码验证,REST API测试通过) -4. ✅ **完整技术方案文档**(1070行《REDCap对接技术方案与实施指南》) -5. ✅ **代码设计100%完成**(RedcapAdapter、WebhookController、SyncManager) -6. ✅ **REDCap文档体系建立**(部署、对接、排查全覆盖) +**PKB模块前端V3设计完成 🎉**: +1. ✅ **后端模块迁移**:迁移到 /modules/pkb,v2 API路由注册 +2. ✅ **Dashboard页面**:基于知识库仪表盘V5原型实现 +3. ✅ **Workspace页面**:基于工作台V3原型实现 +4. ✅ **3种工作模式**:全文阅读、逐篇精读、批处理 +5. ✅ **Chat组件集成**:复用Ant Design X通用Chat组件 +6. ✅ **响应式布局**:单层Header + 紧凑工作模式栏 + 最大化聊天区域 **技术亮点**: -- 🔥 **DET实时触发**:0秒延迟,CRC保存→5秒内质控通知 -- 🔥 **零侵入性**:只用REDCap原生功能,无需修改源码 -- 🔥 **双保险机制**:Webhook(主)+ 轮询(补充),可靠性99.9% -- 🔥 **生产级架构**:Docker配置可直接用于ECS/医院环境 +- 🔥 **模块化架构**:前后端完整迁移到新架构 +- 🔥 **复用通用组件**:shared/components/Chat +- 🔥 **Zustand状态管理**:轻量级状态管理 +- 🔥 **双路由兼容**:v1 + v2 API同时运行 -**模块进度**:Day 1完成 + REDCap环境就绪(18%)→ Day 2准备就绪 +**待解决问题**: +- 🔧 批处理API执行待调试 +- 🔧 知识资产页面导航条待完善 +- 🔧 UI与原型图精细化对比 + +**模块进度**:75%完成 + +--- + +**IIT Manager Agent Phase 1.5 完成(2026-01-03)**: +- ✅ AI对话集成完成:ChatService + SessionMemory +- ✅ REDCap数据查询集成:意图识别 + 数据注入LLM +- ✅ 解决LLM幻觉问题:AI基于真实数据回答 +- ✅ 测试通过:查询test0102项目,ID 7患者详细信息 + +**模块进度**:60%完成(Phase 1.5) diff --git a/docs/02-通用能力层/Postgres-Only异步任务处理指南.md b/docs/02-通用能力层/Postgres-Only异步任务处理指南.md index 1ebe24d2..7018ae42 100644 --- a/docs/02-通用能力层/Postgres-Only异步任务处理指南.md +++ b/docs/02-通用能力层/Postgres-Only异步任务处理指南.md @@ -604,5 +604,6 @@ async saveProcessedData(recordId, newData) { + diff --git a/docs/02-通用能力层/通用能力层技术债务清单.md b/docs/02-通用能力层/通用能力层技术债务清单.md index 57cf2fff..2b75218d 100644 --- a/docs/02-通用能力层/通用能力层技术债务清单.md +++ b/docs/02-通用能力层/通用能力层技术债务清单.md @@ -791,5 +791,6 @@ export const AsyncProgressBar: React.FC = ({ + diff --git a/docs/03-业务模块/ASL-AI智能文献/04-开发计划/05-全文复筛前端开发计划.md b/docs/03-业务模块/ASL-AI智能文献/04-开发计划/05-全文复筛前端开发计划.md index 3b0cd03e..a810efb2 100644 --- a/docs/03-业务模块/ASL-AI智能文献/04-开发计划/05-全文复筛前端开发计划.md +++ b/docs/03-业务模块/ASL-AI智能文献/04-开发计划/05-全文复筛前端开发计划.md @@ -1284,5 +1284,6 @@ interface FulltextScreeningResult { + diff --git a/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-01-23_全文复筛前端开发完成.md b/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-01-23_全文复筛前端开发完成.md index 505afcfe..a2e4cfa1 100644 --- a/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-01-23_全文复筛前端开发完成.md +++ b/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-01-23_全文复筛前端开发完成.md @@ -398,5 +398,6 @@ GET /api/v1/asl/fulltext-screening/tasks/:taskId/export + diff --git a/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-01-23_全文复筛前端逻辑调整.md b/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-01-23_全文复筛前端逻辑调整.md index 600826f4..cf2a37a8 100644 --- a/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-01-23_全文复筛前端逻辑调整.md +++ b/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-01-23_全文复筛前端逻辑调整.md @@ -341,5 +341,6 @@ Linter错误:0个 + diff --git a/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-23_Day5_全文复筛API开发.md b/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-23_Day5_全文复筛API开发.md index aa59400c..7c84896e 100644 --- a/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-23_Day5_全文复筛API开发.md +++ b/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-23_Day5_全文复筛API开发.md @@ -500,5 +500,6 @@ Failed to open file '\\tmp\\extraction_service\\temp_10000_test.pdf' + diff --git a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_AI_Few-shot示例库.md b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_AI_Few-shot示例库.md index 19998c28..d6afb7ce 100644 --- a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_AI_Few-shot示例库.md +++ b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_AI_Few-shot示例库.md @@ -566,5 +566,6 @@ df['creatinine'] = pd.to_numeric(df['creatinine'], errors='coerce') + diff --git a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Bug修复总结_2025-12-08.md b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Bug修复总结_2025-12-08.md index 0c3a9caa..9f42cde7 100644 --- a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Bug修复总结_2025-12-08.md +++ b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Bug修复总结_2025-12-08.md @@ -404,5 +404,6 @@ npm run dev + diff --git a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Day3开发计划.md b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Day3开发计划.md index 795ddcf3..9fe2208e 100644 --- a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Day3开发计划.md +++ b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Day3开发计划.md @@ -981,5 +981,6 @@ export const aiController = new AIController(); + diff --git a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Day4-5前端开发计划.md b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Day4-5前端开发计划.md index c3ae7945..fdc72dbb 100644 --- a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Day4-5前端开发计划.md +++ b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Day4-5前端开发计划.md @@ -1315,5 +1315,6 @@ npm install react-markdown + diff --git a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Pivot列顺序优化总结.md b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Pivot列顺序优化总结.md index 34dc0861..d5979808 100644 --- a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Pivot列顺序优化总结.md +++ b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Pivot列顺序优化总结.md @@ -223,5 +223,6 @@ FMA___基线 | FMA___1个月 | FMA___2个月 + diff --git a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_方案B实施总结_2025-12-09.md b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_方案B实施总结_2025-12-09.md index 73832f04..234da832 100644 --- a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_方案B实施总结_2025-12-09.md +++ b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_方案B实施总结_2025-12-09.md @@ -381,5 +381,6 @@ formula = "FMA总分(0-100) / 100" + diff --git a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_缺失值处理_开发进度_2025-12-10.md b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_缺失值处理_开发进度_2025-12-10.md index 47b2a728..64008ada 100644 --- a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_缺失值处理_开发进度_2025-12-10.md +++ b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_缺失值处理_开发进度_2025-12-10.md @@ -215,5 +215,6 @@ async handleFillnaMice(request, reply) { + diff --git a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_缺失值处理功能_更新说明.md b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_缺失值处理功能_更新说明.md index 66bb454e..818af24b 100644 --- a/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_缺失值处理功能_更新说明.md +++ b/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_缺失值处理功能_更新说明.md @@ -187,5 +187,6 @@ method: 'mean' | 'median' | 'mode' | 'constant' | 'ffill' | 'bfill' + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-02_工作总结.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-02_工作总结.md index af770f3b..9a6ae016 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-02_工作总结.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-02_工作总结.md @@ -337,5 +337,6 @@ Changes: + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-06_工具C_Day1开发完成总结.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-06_工具C_Day1开发完成总结.md index ca35c228..b10eccae 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-06_工具C_Day1开发完成总结.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-06_工具C_Day1开发完成总结.md @@ -409,5 +409,6 @@ cd path; command + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-06_工具C_Day2开发完成总结.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-06_工具C_Day2开发完成总结.md index 42a38d10..db7e57d9 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-06_工具C_Day2开发完成总结.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-06_工具C_Day2开发完成总结.md @@ -638,5 +638,6 @@ import { logger } from '../../../../common/logging/index.js'; + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_AI对话核心功能增强总结.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_AI对话核心功能增强总结.md index 9f077fa9..210cb32f 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_AI对话核心功能增强总结.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_AI对话核心功能增强总结.md @@ -642,5 +642,6 @@ Content-Length: 45234 + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Bug修复_DataGrid空数据防御.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Bug修复_DataGrid空数据防御.md index c200daa8..fbe7a153 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Bug修复_DataGrid空数据防御.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Bug修复_DataGrid空数据防御.md @@ -294,5 +294,6 @@ Response: + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Day5_Ant-Design-X重构完成.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Day5_Ant-Design-X重构完成.md index 08949506..d53cfa10 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Day5_Ant-Design-X重构完成.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Day5_Ant-Design-X重构完成.md @@ -447,5 +447,6 @@ Response: + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Day5最终总结.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Day5最终总结.md index 79098dc1..93f6b3d5 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Day5最终总结.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_Day5最终总结.md @@ -441,5 +441,6 @@ import { ChatContainer } from '@/shared/components/Chat'; + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_UI优化与Bug修复.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_UI优化与Bug修复.md index 73028965..d7f86d89 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_UI优化与Bug修复.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_UI优化与Bug修复.md @@ -351,5 +351,6 @@ const initialMessages = defaultMessages.length > 0 ? defaultMessages : [{ + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_后端API完整对接完成.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_后端API完整对接完成.md index 3151dfe4..ea4adec3 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_后端API完整对接完成.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_后端API完整对接完成.md @@ -391,5 +391,6 @@ python main.py + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_完整UI优化与功能增强.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_完整UI优化与功能增强.md index 67dbc418..9d9f866b 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_完整UI优化与功能增强.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_完整UI优化与功能增强.md @@ -639,5 +639,6 @@ http://localhost:5173/data-cleaning/tool-c + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_工具C_Day4前端基础完成.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_工具C_Day4前端基础完成.md index d1c8fd4d..1b0000e6 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_工具C_Day4前端基础完成.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/2025-12-07_工具C_Day4前端基础完成.md @@ -249,5 +249,6 @@ Day 5 (6-8小时): + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/DC模块重建完成总结-Day1.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/DC模块重建完成总结-Day1.md index e5039cc2..a2f2e9ac 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/DC模块重建完成总结-Day1.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/DC模块重建完成总结-Day1.md @@ -427,5 +427,6 @@ Docs: docs/03-业务模块/DC-数据清洗整理/06-开发记录/DC模块重建 + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Phase1-Portal页面开发完成-2025-12-02.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Phase1-Portal页面开发完成-2025-12-02.md index 59972030..a488dfbf 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Phase1-Portal页面开发完成-2025-12-02.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Phase1-Portal页面开发完成-2025-12-02.md @@ -402,5 +402,6 @@ const mockAssets: Asset[] = [ + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Phase2-ToolB-Step1-2开发完成-2025-12-03.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Phase2-ToolB-Step1-2开发完成-2025-12-03.md index 4dac428b..3abd6886 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Phase2-ToolB-Step1-2开发完成-2025-12-03.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Phase2-ToolB-Step1-2开发完成-2025-12-03.md @@ -386,5 +386,6 @@ frontend-v2/src/modules/dc/ + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Portal页面UI优化-2025-12-02.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Portal页面UI优化-2025-12-02.md index fa84973e..1f80bc45 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Portal页面UI优化-2025-12-02.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Portal页面UI优化-2025-12-02.md @@ -346,5 +346,6 @@ + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Tool-B-MVP完成总结-2025-12-03.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Tool-B-MVP完成总结-2025-12-03.md index 6e580051..910632a7 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Tool-B-MVP完成总结-2025-12-03.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/Tool-B-MVP完成总结-2025-12-03.md @@ -300,5 +300,6 @@ ConflictDetectionService // 冲突检测(字段级对比) + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB-UI优化-2025-12-03.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB-UI优化-2025-12-03.md index f7ce2709..6032c950 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB-UI优化-2025-12-03.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB-UI优化-2025-12-03.md @@ -349,5 +349,6 @@ + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB-UI优化-Round2-2025-12-03.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB-UI优化-Round2-2025-12-03.md index 22704791..85fab828 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB-UI优化-Round2-2025-12-03.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB-UI优化-Round2-2025-12-03.md @@ -312,5 +312,6 @@ + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB浏览器测试计划-2025-12-03.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB浏览器测试计划-2025-12-03.md index f5d58a1a..09f9aad1 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB浏览器测试计划-2025-12-03.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/ToolB浏览器测试计划-2025-12-03.md @@ -376,5 +376,6 @@ + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/后端API测试报告-2025-12-02.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/后端API测试报告-2025-12-02.md index 023c276d..fcf7f7b4 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/后端API测试报告-2025-12-02.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/后端API测试报告-2025-12-02.md @@ -464,5 +464,6 @@ Tool B后端代码**100%复用**了平台通用能力层,无任何重复开发 + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/待办事项-下一步工作.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/待办事项-下一步工作.md index d1e65846..1bd2af2b 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/待办事项-下一步工作.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/待办事项-下一步工作.md @@ -310,5 +310,6 @@ + diff --git a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/数据库验证报告-2025-12-02.md b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/数据库验证报告-2025-12-02.md index 023d7c40..1f2343c3 100644 --- a/docs/03-业务模块/DC-数据清洗整理/06-开发记录/数据库验证报告-2025-12-02.md +++ b/docs/03-业务模块/DC-数据清洗整理/06-开发记录/数据库验证报告-2025-12-02.md @@ -241,5 +241,6 @@ $ node scripts/check-dc-tables.mjs + diff --git a/docs/03-业务模块/DC-数据清洗整理/07-技术债务/Tool-B技术债务清单.md b/docs/03-业务模块/DC-数据清洗整理/07-技术债务/Tool-B技术债务清单.md index 9025fa53..378c81f9 100644 --- a/docs/03-业务模块/DC-数据清洗整理/07-技术债务/Tool-B技术债务清单.md +++ b/docs/03-业务模块/DC-数据清洗整理/07-技术债务/Tool-B技术债务清单.md @@ -474,5 +474,6 @@ ${fields.map((f, i) => `${i + 1}. ${f.name}:${f.desc}`).join('\n')} + diff --git a/docs/03-业务模块/IIT Manager Agent/02-技术设计/IIT Manager Agent 技术路径与架构设计.md b/docs/03-业务模块/IIT Manager Agent/02-技术设计/IIT Manager Agent 技术路径与架构设计.md index 387eb1c8..90fbbc37 100644 --- a/docs/03-业务模块/IIT Manager Agent/02-技术设计/IIT Manager Agent 技术路径与架构设计.md +++ b/docs/03-业务模块/IIT Manager Agent/02-技术设计/IIT Manager Agent 技术路径与架构设计.md @@ -681,3 +681,4 @@ private async processMessageAsync(xmlData: any) { + diff --git a/docs/03-业务模块/IIT Manager Agent/04-开发计划/REDCap对接技术方案与实施指南.md b/docs/03-业务模块/IIT Manager Agent/04-开发计划/REDCap对接技术方案与实施指南.md index 4272ea2a..4be32db6 100644 --- a/docs/03-业务模块/IIT Manager Agent/04-开发计划/REDCap对接技术方案与实施指南.md +++ b/docs/03-业务模块/IIT Manager Agent/04-开发计划/REDCap对接技术方案与实施指南.md @@ -1075,3 +1075,4 @@ async function testIntegration() { + diff --git a/docs/03-业务模块/IIT Manager Agent/04-开发计划/企业微信注册指南.md b/docs/03-业务模块/IIT Manager Agent/04-开发计划/企业微信注册指南.md index ac07d496..461ba6cc 100644 --- a/docs/03-业务模块/IIT Manager Agent/04-开发计划/企业微信注册指南.md +++ b/docs/03-业务模块/IIT Manager Agent/04-开发计划/企业微信注册指南.md @@ -216,3 +216,4 @@ Content-Type: application/json + diff --git a/docs/03-业务模块/IIT Manager Agent/06-开发记录/2026-01-04-Dify知识库集成开发记录.md b/docs/03-业务模块/IIT Manager Agent/06-开发记录/2026-01-04-Dify知识库集成开发记录.md index 58f9e054..19b3129e 100644 --- a/docs/03-业务模块/IIT Manager Agent/06-开发记录/2026-01-04-Dify知识库集成开发记录.md +++ b/docs/03-业务模块/IIT Manager Agent/06-开发记录/2026-01-04-Dify知识库集成开发记录.md @@ -636,3 +636,4 @@ REDCap API: exportRecords success { recordCount: 1 } + diff --git a/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day2-REDCap实时集成开发完成记录.md b/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day2-REDCap实时集成开发完成记录.md index b49da248..0609e006 100644 --- a/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day2-REDCap实时集成开发完成记录.md +++ b/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day2-REDCap实时集成开发完成记录.md @@ -642,3 +642,4 @@ backend/src/modules/iit-manager/ + diff --git a/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day3-企业微信集成与端到端测试完成记录.md b/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day3-企业微信集成与端到端测试完成记录.md index 630b9162..89af6746 100644 --- a/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day3-企业微信集成与端到端测试完成记录.md +++ b/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day3-企业微信集成与端到端测试完成记录.md @@ -792,3 +792,4 @@ CREATE TABLE iit_schema.wechat_tokens ( + diff --git a/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day3-企业微信集成开发完成记录.md b/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day3-企业微信集成开发完成记录.md index 055f09fb..64bfaa60 100644 --- a/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day3-企业微信集成开发完成记录.md +++ b/docs/03-业务模块/IIT Manager Agent/06-开发记录/Day3-企业微信集成开发完成记录.md @@ -549,3 +549,4 @@ Day 3 的开发工作虽然遇到了多个技术问题,但最终成功完成 + diff --git a/docs/03-业务模块/IIT Manager Agent/06-开发记录/Phase1.5-AI对话集成REDCap完成记录.md b/docs/03-业务模块/IIT Manager Agent/06-开发记录/Phase1.5-AI对话集成REDCap完成记录.md index 897255cf..feca4838 100644 --- a/docs/03-业务模块/IIT Manager Agent/06-开发记录/Phase1.5-AI对话集成REDCap完成记录.md +++ b/docs/03-业务模块/IIT Manager Agent/06-开发记录/Phase1.5-AI对话集成REDCap完成记录.md @@ -316,3 +316,4 @@ AI: "出生日期:2017-01-04 + diff --git a/docs/03-业务模块/IIT Manager Agent/06-开发记录/V1.1更新完成报告.md b/docs/03-业务模块/IIT Manager Agent/06-开发记录/V1.1更新完成报告.md index 1c574d23..5e18c307 100644 --- a/docs/03-业务模块/IIT Manager Agent/06-开发记录/V1.1更新完成报告.md +++ b/docs/03-业务模块/IIT Manager Agent/06-开发记录/V1.1更新完成报告.md @@ -260,3 +260,4 @@ Day 4: REDCap EM(Webhook推送)← 作为增强,而非核心 + diff --git a/docs/03-业务模块/IIT Manager Agent/07-技术债务/IIT Manager Agent 技术债务清单.md b/docs/03-业务模块/IIT Manager Agent/07-技术债务/IIT Manager Agent 技术债务清单.md index 3ba00f7a..21203073 100644 --- a/docs/03-业务模块/IIT Manager Agent/07-技术债务/IIT Manager Agent 技术债务清单.md +++ b/docs/03-业务模块/IIT Manager Agent/07-技术债务/IIT Manager Agent 技术债务清单.md @@ -674,3 +674,4 @@ const answer = `根据研究方案[1]和CRF表格[2],纳入标准包括: + diff --git a/docs/03-业务模块/PKB-个人知识库/00-模块当前状态与开发指南.md b/docs/03-业务模块/PKB-个人知识库/00-模块当前状态与开发指南.md new file mode 100644 index 00000000..7a6e6995 --- /dev/null +++ b/docs/03-业务模块/PKB-个人知识库/00-模块当前状态与开发指南.md @@ -0,0 +1,413 @@ +# PKB个人知识库模块 - 当前状态与开发指南 + +> **文档版本:** v1.0 +> **创建日期:** 2026-01-07 +> **维护者:** PKB模块开发团队 +> **最后更新:** 2026-01-07 +> **重大进展:** 🎉 **PKB模块前端V3设计实现完成!** +> **文档目的:** 反映模块真实状态,记录开发历程 + +--- + +## 📋 文档说明 + +本文档是PKB个人知识库模块的**真实状态快照**,如实记录当前开发状态、技术架构和已知问题。 + +**与其他文档的关系**: +- **本文档(00-模块当前状态)**:What is(真实状态,包括问题) +- **需求分析文档**:What to do(产品需求) +- **开发记录文档**:What done(开发历程) +- **技术设计文档**:How to do(设计方案) + +--- + +## 🎯 模块概述 + +### 核心功能 + +PKB(Personal Knowledge Base)个人知识库模块提供: +- 🗂️ **知识库管理**:创建、编辑、删除个人知识库 +- 📄 **文档管理**:上传、处理、组织文档(PDF/Word/TXT/MD) +- 🤖 **AI问答**:基于知识库内容的智能问答 +- 📊 **批处理**:批量提取文档信息,生成结构化数据 + +### 当前状态 + +| 组件 | 状态 | 完成度 | 说明 | +|------|------|--------|------| +| **后端API** | ✅ 已完成 | 100% | v1 + v2双路由运行 | +| **前端Dashboard** | ✅ 已完成 | 90% | 基于V5原型实现 | +| **前端Workspace** | ✅ 已完成 | 85% | 基于V3原型实现 | +| **全文阅读模式** | ✅ 已完成 | 90% | Chat组件集成完成 | +| **逐篇精读模式** | ✅ 已完成 | 85% | 文档选择+对话 | +| **批处理模式** | 🔧 待调试 | 70% | UI完成,API待验证 | +| **RAG检索模式** | ❌ 待开发 | 0% | 后端待实现 | + +**整体完成度:约75%** + +--- + +## 🏗️ 技术架构 + +### 前端技术栈 + +``` +框架: React 19 + TypeScript 5 +路由: React Router DOM v7 +状态管理: Zustand +UI组件: Ant Design v6 + Ant Design X +样式: TailwindCSS v3 +构建工具: Vite 7 +``` + +### 后端技术栈 + +``` +框架: Fastify v4 (Node.js 22) +数据库: PostgreSQL 15 + Prisma 6 +Schema: pkb_schema (独立隔离) +LLM: DeepSeek-V3, Qwen-Max (通过LLMFactory) +RAG: Dify知识库集成 +存储: OSS对象存储 +``` + +### API路由 + +``` +# 新架构 (v2) +/api/v2/pkb/knowledge # 知识库CRUD +/api/v2/pkb/knowledge/:id # 知识库详情 +/api/v2/pkb/documents # 文档管理 + +# 旧架构 (v1,保持兼容) +/api/v1/knowledge # 知识库管理 +/api/v1/documents # 文档管理 +/api/v1/batch-tasks # 批处理任务 +/api/v1/chat/stream # AI对话流 +``` + +--- + +## 📂 代码结构 + +### 后端代码结构 + +``` +backend/src/modules/pkb/ +├── controllers/ +│ ├── knowledgeBaseController.ts # 知识库控制器 +│ ├── documentController.ts # 文档控制器 +│ └── batchController.ts # 批处理控制器 +├── services/ +│ ├── knowledgeBaseService.ts # 知识库服务 (~350行) +│ ├── documentService.ts # 文档服务 (~400行) +│ └── batchService.ts # 批处理服务 (~300行) +├── routes/ +│ └── index.ts # 路由配置 +└── index.ts # 模块入口 + +总计: ~1500行后端代码 +``` + +### 前端代码结构 + +``` +frontend-v2/src/modules/pkb/ +├── api/ +│ └── knowledgeBaseApi.ts # API客户端 (~200行) +├── stores/ +│ └── useKnowledgeBaseStore.ts # Zustand状态 (~150行) +├── pages/ +│ ├── DashboardPage.tsx # 仪表盘 (~450行) +│ └── WorkspacePage.tsx # 工作台 (~513行) +├── components/ +│ └── Workspace/ +│ ├── WorkModeSelector.tsx # 模式选择 (~200行) +│ ├── FullTextMode.tsx # 全文阅读 (~150行) +│ ├── DeepReadMode.tsx # 逐篇精读 (~150行) +│ ├── BatchMode.tsx # 批处理入口 +│ └── BatchModeComplete.tsx # 批处理完整 (~511行) +├── hooks/ +│ └── useWorkMode.ts # 工作模式Hook +├── types/ +│ └── index.ts # 类型定义 +└── styles/ + └── workspace.css # 自定义样式 + +总计: ~2300行前端代码 +``` + +--- + +## 🎨 UI设计 + +### 原型文件 + +- **Dashboard**: `docs/03-业务模块/PKB-个人知识库/01-需求分析/知识库仪表盘V5.html` +- **Workspace**: `docs/03-业务模块/PKB-个人知识库/01-需求分析/工作台V3.html` + +### Workspace布局 + +``` +┌─────────────────────────────────────────────────┐ +│ [返回] │ 知识库名 │ [问答][资产] │ 设置 头像 │ Header 56px +├─────────────────────────────────────────────────┤ +│ [工作模式▼] [文档▼] 已加载 x/y 篇 │ 工作模式栏 40px +├─────────────────────────────────────────────────┤ +│ │ +│ 聊天区域(最大化) │ +│ │ +└─────────────────────────────────────────────────┘ +``` + +### 设计特点 + +- **单层Header**: 整合导航和Tab切换(智能问答/知识资产) +- **紧凑工作模式栏**: 下拉选择,节省空间 +- **最大化聊天区域**: 全屏模式,沉浸式对话体验 +- **响应式布局**: 支持不同屏幕尺寸 + +--- + +## 🔌 工作模式 + +### 1. 全文阅读模式(Full Text) + +**功能说明**: +- 加载知识库全部文档 +- AI具备全知视角 +- 适合文献综述、跨文献分析 + +**技术实现**: +- 调用 `/api/v1/chat/stream` 接口 +- 传入所有文档ID +- 使用SSE流式响应 + +### 2. 逐篇精读模式(Deep Read) + +**功能说明**: +- 选择1-5篇文档 +- 深度解读单篇文献 +- 适合精读、批注、理解 + +**技术实现**: +- 下拉选择文档(最多5篇) +- 调用相同Chat接口 +- 仅传入选中文档ID + +### 3. 批处理模式(Batch) + +**功能说明**: +- 选择批处理模板 +- 批量提取文档信息 +- 生成结构化表格 + +**技术实现**: +- 调用 `/api/v1/batch-tasks` 接口 +- 支持进度查询 +- 结果导出Excel + +**当前状态**:🔧 API执行待调试 + +### 4. RAG检索模式(待开发) + +**功能说明**: +- 基于向量检索 +- 精准定位相关段落 +- 适合快速查找 + +**当前状态**:❌ 后端待实现 + +--- + +## ⚠️ 已知问题 + +### 1. 批处理执行功能 🔴 高优先级 + +**问题描述**: +- 批处理模式前端UI已完成 +- 后端API `/api/v1/batch-tasks` 执行需验证 +- 无法正常执行批量提取 + +**影响**:批处理功能不可用 + +**解决方案**: +1. 验证后端API接口 +2. 检查请求参数格式 +3. 调试执行流程 + +### 2. 知识资产页面导航 🟡 中优先级 + +**问题描述**: +- 知识资产Tab页面缺少工具栏 +- 无法进行筛选、排序操作 + +**影响**:用户操作不便 + +**解决方案**: +- 添加文档筛选工具栏 +- 添加排序功能 +- 添加批量操作 + +### 3. UI精细化 🟡 中优先级 + +**问题描述**: +- 与原型图仍有差距 +- 部分样式需要调整 + +**影响**:视觉体验 + +**解决方案**: +- 逐项对比原型图 +- 调整间距、字体、颜色 +- 完善动画效果 + +### 4. 引用格式化 🟢 低优先级 + +**问题描述**: +- AI回复中的引用格式不够美观 +- 需要自定义渲染 + +**影响**:阅读体验 + +**解决方案**: +- 实现customMessageRenderer +- 解析引用标记 +- 渲染为可点击的引用块 + +--- + +## 📝 下一步开发计划 + +### 立即需要做的(紧急) + +1. **调试批处理API** 🔴 + - 验证 `/api/v1/batch-tasks` 接口 + - 检查请求参数 + - 测试完整流程 + +2. **完善知识资产页面** 🔴 + - 添加工具栏导航 + - 实现筛选功能 + +### 短期任务(本周) + +3. **UI精细化** + - 对比原型图优化 + - 调整样式细节 + +4. **错误处理** + - 完善错误提示 + - 添加重试机制 + +### 中期任务(2周内) + +5. **RAG检索模式** + - 后端API开发 + - 前端集成 + +6. **PDF预览增强** + - 集成PDF查看器 + - 支持标注 + +--- + +## 📚 相关文档 + +### 需求文档 +- [PRD V5.0](./01-需求分析/AI%20临床医生与医院知识库%20-%20MVP%20阶段产品需求文档%20(PRD)%20V5.0.md) +- [知识库仪表盘V5原型](./01-需求分析/知识库仪表盘V5.html) +- [工作台V3原型](./01-需求分析/工作台V3.html) + +### 技术文档 +- [数据库设计](./02-技术设计/01-数据库设计.md) + +### 开发记录 +- [2026-01-07 前端V3设计实现](./06-开发记录/2026-01-07_PKB模块前端V3设计实现.md) + +### 测试文档 +- [与原型图的差距](./05-测试文档/与原型图的差距.md) + +--- + +## 🎓 给新开发者的提示 + +### 快速上手 + +1. **了解模块结构** + - 阅读本文档了解当前状态 + - 查看原型HTML了解UI设计 + +2. **运行项目** + ```bash + # 后端 + cd backend && npm run dev + + # 前端 + cd frontend-v2 && npm run dev + ``` + +3. **查看关键代码** + - `WorkspacePage.tsx` - 工作台主逻辑 + - `knowledgeBaseApi.ts` - API调用 + - `useKnowledgeBaseStore.ts` - 状态管理 + +### 注意事项 + +✅ **应该这样做**: +1. 使用Zustand管理状态 +2. 复用shared/components中的Chat组件 +3. 遵循TailwindCSS样式规范 +4. 使用Ant Design组件 + +❌ **不要这样做**: +1. 创建新的Chat实现 +2. 直接操作DOM +3. 使用行内样式 +4. 忽略TypeScript类型 + +--- + +## 📊 模块统计 + +### 代码量统计 +``` +后端代码:约1,500行 +前端代码:约2,300行 +总计:约3,800行 +``` + +### 开发进度 +``` +整体进度:约75% + +- 后端API:100% ✅ +- Dashboard页面:90% ✅ +- Workspace页面:85% ✅ +- 全文阅读模式:90% ✅ +- 逐篇精读模式:85% ✅ +- 批处理模式:70% 🔧 +- RAG检索模式:0% ❌ +``` + +--- + +## 🔗 Git提交记录 + +**最新提交**: +``` +5a17d09 feat(pkb): Complete PKB module frontend migration with V3 design +``` + +**提交内容**: +- 后端模块迁移到 /modules/pkb +- 前端V3设计实现 +- 3种工作模式框架 +- Chat组件集成 + +--- + +**最后更新:** 2026-01-07 +**文档维护:** PKB模块开发团队 +**联系方式:** 项目Issues + diff --git a/docs/03-业务模块/PKB-个人知识库/06-开发记录/2026-01-07_PKB模块前端V3设计实现.md b/docs/03-业务模块/PKB-个人知识库/06-开发记录/2026-01-07_PKB模块前端V3设计实现.md new file mode 100644 index 00000000..bda58829 --- /dev/null +++ b/docs/03-业务模块/PKB-个人知识库/06-开发记录/2026-01-07_PKB模块前端V3设计实现.md @@ -0,0 +1,230 @@ +# PKB模块前端V3设计实现 - 开发记录 + +> **日期:** 2026-01-07 +> **开发者:** PKB开发团队 +> **版本:** v1.0 +> **状态:** ✅ 基础框架完成,待细化优化 + +--- + +## 📋 今日工作概述 + +今天完成了PKB(个人知识库)模块的前端迁移和V3设计实现工作,主要包括: + +1. **后端模块迁移**:将PKB后端代码迁移到新的模块化架构 +2. **前端V3设计实现**:基于原型图实现Dashboard和Workspace页面 +3. **3种工作模式实现**:全文阅读、逐篇精读、批处理 +4. **Chat组件集成**:使用Ant Design X Chat组件实现AI对话 + +--- + +## ✅ 完成的工作 + +### 1. 后端模块迁移 + +**迁移内容**: +- 将Controller、Service、Route代码迁移到 `backend/src/modules/pkb/` +- 更新import路径 +- 注册新API路由 `/api/v2/pkb/*` +- 保持旧版路由 `/api/v1/knowledge*` 兼容 + +**目录结构**: +``` +backend/src/modules/pkb/ +├── controllers/ +│ ├── knowledgeBaseController.ts +│ ├── documentController.ts +│ └── batchController.ts +├── services/ +│ ├── knowledgeBaseService.ts +│ ├── documentService.ts +│ └── batchService.ts +├── routes/ +│ └── index.ts +└── index.ts +``` + +**路由注册**: +- v2路由:`/api/v2/pkb/knowledge`(新架构) +- v1路由:`/api/v1/knowledge`、`/api/v1/batch-tasks`(兼容) + +### 2. 前端V3设计实现 + +**基于原型图**: +- `知识库仪表盘V5.html` → DashboardPage +- `工作台V3.html` → WorkspacePage + +**前端目录结构**: +``` +frontend-v2/src/modules/pkb/ +├── api/ +│ └── knowledgeBaseApi.ts # API客户端 +├── stores/ +│ └── useKnowledgeBaseStore.ts # Zustand状态管理 +├── pages/ +│ ├── DashboardPage.tsx # 仪表盘页面 +│ └── WorkspacePage.tsx # 工作台页面 +├── components/ +│ └── Workspace/ +│ ├── WorkModeSelector.tsx # 工作模式选择器 +│ ├── FullTextMode.tsx # 全文阅读模式 +│ ├── DeepReadMode.tsx # 逐篇精读模式 +│ ├── BatchMode.tsx # 批处理模式 +│ └── BatchModeComplete.tsx # 批处理完整实现 +├── hooks/ +│ └── useWorkMode.ts # 工作模式Hook +├── types/ +│ └── index.ts # 类型定义 +└── styles/ + └── workspace.css # 自定义样式 +``` + +### 3. WorkspacePage布局设计 + +**最终采用的布局**: +``` +┌─────────────────────────────────────────────────┐ +│ [返回] │ 知识库名 │ [问答][资产] │ 设置 头像 │ Header 56px +├─────────────────────────────────────────────────┤ +│ [工作模式▼] [文档▼] 已加载 x/y 篇 │ 工作模式栏 40px +├─────────────────────────────────────────────────┤ +│ │ +│ 聊天区域(最大化) │ +│ │ +└─────────────────────────────────────────────────┘ +``` + +**设计特点**: +- 单层Header整合导航和Tab切换 +- 紧凑的工作模式选择栏 +- 最大化的聊天区域 +- 全屏模式(fixed定位) + +### 4. 3种工作模式 + +| 模式 | 说明 | 后端API | +|------|------|---------| +| **全文阅读** | 加载全部文档,AI具备全知视角 | `/api/v1/chat/stream` | +| **逐篇精读** | 选择1-5篇文档深度解读 | `/api/v1/chat/stream` | +| **批处理** | 批量提取信息,生成结构化表格 | `/api/v1/batch-tasks` | + +### 5. Chat组件集成 + +**使用Ant Design X Chat组件**: +- 复用 `frontend-v2/src/shared/components/Chat/` +- 支持SSE流式响应 +- 自定义消息渲染(引用格式化) +- 上下文管理 + +--- + +## 🔧 技术细节 + +### API调用配置 + +```typescript +// knowledgeBaseApi.ts +const api = axios.create({ + baseURL: `${API_BASE_URL}/api/v2/pkb`, + timeout: 30000, +}); + +// Chat使用v1接口 +const chatApi = axios.create({ + baseURL: `${API_BASE_URL}/api/v1/chat/stream`, +}); +``` + +### 状态管理 + +使用Zustand管理全局状态: +- 知识库列表 +- 当前知识库 +- 文档列表 +- 工作模式 +- 选中的文档 + +### 样式方案 + +- TailwindCSS作为主要样式方案 +- Ant Design组件库 +- 自定义CSS处理特殊样式(workspace.css) + +--- + +## ⚠️ 已知问题 + +### 1. 批处理执行功能待调试 +- **问题**:批处理模式无法执行 +- **原因**:后端API `/api/v1/batch-tasks` 需要验证 +- **优先级**:🔴 高 + +### 2. 知识资产页面导航条 +- **问题**:知识资产页面缺少导航条 +- **影响**:用户无法在资产页面进行筛选操作 +- **优先级**:🟡 中 + +### 3. UI精细化 +- **问题**:与原型图仍有差距,需要进一步优化 +- **影响**:用户体验 +- **优先级**:🟡 中 + +--- + +## 📝 下一步计划 + +### 高优先级 +1. 调试批处理API执行功能 +2. 完善知识资产页面导航条 +3. 引用格式化优化 + +### 中优先级 +4. UI精细化(与原型图对比优化) +5. 错误处理完善 +6. 加载状态优化 + +### 低优先级 +7. RAG检索模式实现(后端待开发) +8. PDF预览功能增强 + +--- + +## 📊 代码统计 + +| 文件 | 行数 | 说明 | +|------|------|------| +| WorkspacePage.tsx | ~513 | 工作台主页面 | +| DashboardPage.tsx | ~450 | 仪表盘页面 | +| BatchModeComplete.tsx | ~511 | 批处理完整实现 | +| WorkModeSelector.tsx | ~200 | 工作模式选择器 | +| FullTextMode.tsx | ~150 | 全文阅读模式 | +| DeepReadMode.tsx | ~150 | 逐篇精读模式 | +| knowledgeBaseApi.ts | ~200 | API客户端 | +| useKnowledgeBaseStore.ts | ~150 | 状态管理 | +| **总计** | **~2300行** | PKB前端模块 | + +--- + +## 🎯 总结 + +今天完成了PKB模块的核心前端框架搭建,实现了: +- ✅ 后端模块迁移和路由注册 +- ✅ 前端V3设计基础实现 +- ✅ 3种工作模式框架 +- ✅ Chat组件集成 +- ✅ 响应式布局 + +虽然还有一些功能需要调试和优化,但整体架构已经搭建完成,可以作为后续开发的基础。 + +--- + +**Git提交**: +``` +5a17d09 feat(pkb): Complete PKB module frontend migration with V3 design +``` + +--- + +**文档编写时间**:2026-01-07 +**下次更新**:批处理功能调试完成后 + diff --git a/docs/03-业务模块/Redcap/01-部署与配置/10-REDCap_Docker部署操作手册.md b/docs/03-业务模块/Redcap/01-部署与配置/10-REDCap_Docker部署操作手册.md index 6771627c..32527e84 100644 --- a/docs/03-业务模块/Redcap/01-部署与配置/10-REDCap_Docker部署操作手册.md +++ b/docs/03-业务模块/Redcap/01-部署与配置/10-REDCap_Docker部署操作手册.md @@ -764,3 +764,4 @@ docker exec redcap-apache php /tmp/create-redcap-password.php + diff --git a/docs/03-业务模块/Redcap/README.md b/docs/03-业务模块/Redcap/README.md index d2078474..061fd312 100644 --- a/docs/03-业务模块/Redcap/README.md +++ b/docs/03-业务模块/Redcap/README.md @@ -146,3 +146,4 @@ AIclinicalresearch/redcap-docker-dev/ + diff --git a/docs/05-部署文档/02-SAE部署完全指南(产品经理版).md b/docs/05-部署文档/02-SAE部署完全指南(产品经理版).md index fbdafa8c..2e74e677 100644 --- a/docs/05-部署文档/02-SAE部署完全指南(产品经理版).md +++ b/docs/05-部署文档/02-SAE部署完全指南(产品经理版).md @@ -881,5 +881,6 @@ ACR镜像仓库: + diff --git a/docs/05-部署文档/07-前端Nginx-SAE部署操作手册.md b/docs/05-部署文档/07-前端Nginx-SAE部署操作手册.md index 8623af3b..d37daca7 100644 --- a/docs/05-部署文档/07-前端Nginx-SAE部署操作手册.md +++ b/docs/05-部署文档/07-前端Nginx-SAE部署操作手册.md @@ -1368,5 +1368,6 @@ SAE应用配置: + diff --git a/docs/05-部署文档/08-PostgreSQL数据库部署操作手册.md b/docs/05-部署文档/08-PostgreSQL数据库部署操作手册.md index 88d5d8e0..e5b1fc35 100644 --- a/docs/05-部署文档/08-PostgreSQL数据库部署操作手册.md +++ b/docs/05-部署文档/08-PostgreSQL数据库部署操作手册.md @@ -1185,4 +1185,5 @@ docker exec -e PGPASSWORD="密码" ai-clinical-postgres psql -h RDS地址 -U air + diff --git a/docs/05-部署文档/10-Node.js后端-Docker镜像构建手册.md b/docs/05-部署文档/10-Node.js后端-Docker镜像构建手册.md index 61c6f012..b026f18b 100644 --- a/docs/05-部署文档/10-Node.js后端-Docker镜像构建手册.md +++ b/docs/05-部署文档/10-Node.js后端-Docker镜像构建手册.md @@ -597,3 +597,4 @@ scripts/*.ts + diff --git a/docs/05-部署文档/11-Node.js后端-SAE部署配置清单.md b/docs/05-部署文档/11-Node.js后端-SAE部署配置清单.md index 31eeb9fd..fa1db002 100644 --- a/docs/05-部署文档/11-Node.js后端-SAE部署配置清单.md +++ b/docs/05-部署文档/11-Node.js后端-SAE部署配置清单.md @@ -285,3 +285,4 @@ Node.js后端部署成功后: + diff --git a/docs/05-部署文档/12-Node.js后端-SAE部署操作手册.md b/docs/05-部署文档/12-Node.js后端-SAE部署操作手册.md index 9ecece43..568aff18 100644 --- a/docs/05-部署文档/12-Node.js后端-SAE部署操作手册.md +++ b/docs/05-部署文档/12-Node.js后端-SAE部署操作手册.md @@ -508,3 +508,4 @@ Node.js后端 (SAE) ← http://172.17.173.88:3001 + diff --git a/docs/05-部署文档/13-Node.js后端-镜像修复记录.md b/docs/05-部署文档/13-Node.js后端-镜像修复记录.md index 2c6d73d7..a581de03 100644 --- a/docs/05-部署文档/13-Node.js后端-镜像修复记录.md +++ b/docs/05-部署文档/13-Node.js后端-镜像修复记录.md @@ -223,3 +223,4 @@ curl http://localhost:3001/health + diff --git a/docs/05-部署文档/14-Node.js后端-pino-pretty问题修复.md b/docs/05-部署文档/14-Node.js后端-pino-pretty问题修复.md index 2913e980..6e68da3a 100644 --- a/docs/05-部署文档/14-Node.js后端-pino-pretty问题修复.md +++ b/docs/05-部署文档/14-Node.js后端-pino-pretty问题修复.md @@ -261,3 +261,4 @@ npm run dev + diff --git a/docs/05-部署文档/16-前端Nginx-部署成功总结.md b/docs/05-部署文档/16-前端Nginx-部署成功总结.md index e64575d6..7e9b7cdd 100644 --- a/docs/05-部署文档/16-前端Nginx-部署成功总结.md +++ b/docs/05-部署文档/16-前端Nginx-部署成功总结.md @@ -485,3 +485,4 @@ pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432 + diff --git a/docs/05-部署文档/17-完整部署实战手册-2025版.md b/docs/05-部署文档/17-完整部署实战手册-2025版.md index 545f63c6..5d3d004e 100644 --- a/docs/05-部署文档/17-完整部署实战手册-2025版.md +++ b/docs/05-部署文档/17-完整部署实战手册-2025版.md @@ -1813,3 +1813,4 @@ curl http://8.140.53.236/ + diff --git a/docs/05-部署文档/18-部署文档使用指南.md b/docs/05-部署文档/18-部署文档使用指南.md index 68db2e91..af4f533f 100644 --- a/docs/05-部署文档/18-部署文档使用指南.md +++ b/docs/05-部署文档/18-部署文档使用指南.md @@ -361,3 +361,4 @@ crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-se + diff --git a/docs/05-部署文档/19-日常更新快速操作手册.md b/docs/05-部署文档/19-日常更新快速操作手册.md index 60b618d3..f8ed21a4 100644 --- a/docs/05-部署文档/19-日常更新快速操作手册.md +++ b/docs/05-部署文档/19-日常更新快速操作手册.md @@ -683,3 +683,4 @@ docker login --username=gofeng117@163.com \ + diff --git a/docs/05-部署文档/文档修正报告-20251214.md b/docs/05-部署文档/文档修正报告-20251214.md index f633de18..c87f7258 100644 --- a/docs/05-部署文档/文档修正报告-20251214.md +++ b/docs/05-部署文档/文档修正报告-20251214.md @@ -492,5 +492,6 @@ NAT网关成本¥100/月,对初创团队是一笔开销 + diff --git a/docs/07-运维文档/03-SAE环境变量配置指南.md b/docs/07-运维文档/03-SAE环境变量配置指南.md index 6b940867..0ed898f5 100644 --- a/docs/07-运维文档/03-SAE环境变量配置指南.md +++ b/docs/07-运维文档/03-SAE环境变量配置指南.md @@ -397,5 +397,6 @@ curl http://你的SAE地址:3001/health + diff --git a/docs/07-运维文档/05-Redis缓存与队列的区别说明.md b/docs/07-运维文档/05-Redis缓存与队列的区别说明.md index aaa7ff5f..8af0b996 100644 --- a/docs/07-运维文档/05-Redis缓存与队列的区别说明.md +++ b/docs/07-运维文档/05-Redis缓存与队列的区别说明.md @@ -729,5 +729,6 @@ const job = await queue.getJob(jobId); + diff --git a/docs/07-运维文档/06-长时间任务可靠性分析.md b/docs/07-运维文档/06-长时间任务可靠性分析.md index c4b8fcf1..0d8c240a 100644 --- a/docs/07-运维文档/06-长时间任务可靠性分析.md +++ b/docs/07-运维文档/06-长时间任务可靠性分析.md @@ -496,5 +496,6 @@ processLiteraturesInBackground(task.id, projectId, testLiteratures); + diff --git a/docs/07-运维文档/07-Redis使用需求分析(按模块).md b/docs/07-运维文档/07-Redis使用需求分析(按模块).md index 864f05a3..058a92ac 100644 --- a/docs/07-运维文档/07-Redis使用需求分析(按模块).md +++ b/docs/07-运维文档/07-Redis使用需求分析(按模块).md @@ -973,5 +973,6 @@ ROI = (¥22,556 - ¥144) / ¥144 × 100% = 15,564% + diff --git a/docs/08-项目管理/03-每周计划/2025-12-13-Postgres-Only架构改造完成.md b/docs/08-项目管理/03-每周计划/2025-12-13-Postgres-Only架构改造完成.md index 43f0e689..8e2c84af 100644 --- a/docs/08-项目管理/03-每周计划/2025-12-13-Postgres-Only架构改造完成.md +++ b/docs/08-项目管理/03-每周计划/2025-12-13-Postgres-Only架构改造完成.md @@ -1030,5 +1030,6 @@ Redis 实例:¥500/月 + diff --git a/docs/08-项目管理/05-技术债务/通用对话服务抽取计划.md b/docs/08-项目管理/05-技术债务/通用对话服务抽取计划.md index 92d72b0a..d9742325 100644 --- a/docs/08-项目管理/05-技术债务/通用对话服务抽取计划.md +++ b/docs/08-项目管理/05-技术债务/通用对话服务抽取计划.md @@ -488,5 +488,6 @@ import { ChatContainer } from '@/shared/components/Chat'; + diff --git a/docs/08-项目管理/PKB前端问题修复报告.md b/docs/08-项目管理/PKB前端问题修复报告.md index 5e999fa2..048f9f29 100644 --- a/docs/08-项目管理/PKB前端问题修复报告.md +++ b/docs/08-项目管理/PKB前端问题修复报告.md @@ -408,3 +408,4 @@ frontend-v2/src/modules/pkb/ **验证状态**: 待用户确认 + diff --git a/docs/08-项目管理/PKB前端验证指南.md b/docs/08-项目管理/PKB前端验证指南.md index e6610b85..03491bb9 100644 --- a/docs/08-项目管理/PKB前端验证指南.md +++ b/docs/08-项目管理/PKB前端验证指南.md @@ -270,3 +270,4 @@ npm run dev **下一步**: 根据验证结果修复问题,然后进入RVW模块迁移! + diff --git a/docs/08-项目管理/PKB功能审查报告-阶段0.md b/docs/08-项目管理/PKB功能审查报告-阶段0.md index ec21f273..c7339bb0 100644 --- a/docs/08-项目管理/PKB功能审查报告-阶段0.md +++ b/docs/08-项目管理/PKB功能审查报告-阶段0.md @@ -785,3 +785,4 @@ AIA智能问答模块 **下一步:** 创建测试用例清单和测试数据准备方案 + diff --git a/docs/08-项目管理/PKB和RVW功能迁移计划.md b/docs/08-项目管理/PKB和RVW功能迁移计划.md index f3fe300a..01b4707b 100644 --- a/docs/08-项目管理/PKB和RVW功能迁移计划.md +++ b/docs/08-项目管理/PKB和RVW功能迁移计划.md @@ -930,3 +930,4 @@ CREATE INDEX idx_rvw_tasks_created_at ON rvw_schema.review_tasks(created_at); + diff --git a/docs/08-项目管理/PKB精细化优化报告.md b/docs/08-项目管理/PKB精细化优化报告.md index ed685298..bf77b62a 100644 --- a/docs/08-项目管理/PKB精细化优化报告.md +++ b/docs/08-项目管理/PKB精细化优化报告.md @@ -583,3 +583,4 @@ const typography = { **验证状态**: 待用户刷新页面确认 + diff --git a/docs/08-项目管理/PKB迁移-超级安全执行计划.md b/docs/08-项目管理/PKB迁移-超级安全执行计划.md index afa79b97..7b33a110 100644 --- a/docs/08-项目管理/PKB迁移-超级安全执行计划.md +++ b/docs/08-项目管理/PKB迁移-超级安全执行计划.md @@ -895,3 +895,4 @@ app.use('/api/v1/knowledge', (req, res) => { **准备好了吗?让我们从阶段0开始!** 🚀 + diff --git a/docs/08-项目管理/PKB迁移-阶段1完成报告.md b/docs/08-项目管理/PKB迁移-阶段1完成报告.md index 6ddbe427..9492e3ca 100644 --- a/docs/08-项目管理/PKB迁移-阶段1完成报告.md +++ b/docs/08-项目管理/PKB迁移-阶段1完成报告.md @@ -209,3 +209,4 @@ rm -rf src/modules/pkb **阶段1评估:✅ 成功完成,可以进入阶段2!** 🚀 + diff --git a/docs/08-项目管理/PKB迁移-阶段2完成报告.md b/docs/08-项目管理/PKB迁移-阶段2完成报告.md index 930b6ebc..3e5ab34c 100644 --- a/docs/08-项目管理/PKB迁移-阶段2完成报告.md +++ b/docs/08-项目管理/PKB迁移-阶段2完成报告.md @@ -384,3 +384,4 @@ GET /api/v2/pkb/batch-tasks/batch/templates **文档更新完成!** 📚 + diff --git a/docs/08-项目管理/PKB迁移-阶段2进行中.md b/docs/08-项目管理/PKB迁移-阶段2进行中.md index f3e7a47c..0546f5e5 100644 --- a/docs/08-项目管理/PKB迁移-阶段2进行中.md +++ b/docs/08-项目管理/PKB迁移-阶段2进行中.md @@ -28,3 +28,4 @@ import pkbRoutes from './modules/pkb/routes/index.js'; - 验证新旧路由都可用 + diff --git a/docs/08-项目管理/PKB迁移-阶段3完成报告.md b/docs/08-项目管理/PKB迁移-阶段3完成报告.md index ceecb90f..663916fd 100644 --- a/docs/08-项目管理/PKB迁移-阶段3完成报告.md +++ b/docs/08-项目管理/PKB迁移-阶段3完成报告.md @@ -297,3 +297,4 @@ backend/ **我们已经完成了PKB后端的完整迁移和验证!** 🎊 + diff --git a/docs/08-项目管理/PKB迁移-阶段4完成报告.md b/docs/08-项目管理/PKB迁移-阶段4完成报告.md index f5519aae..71715e73 100644 --- a/docs/08-项目管理/PKB迁移-阶段4完成报告.md +++ b/docs/08-项目管理/PKB迁移-阶段4完成报告.md @@ -508,3 +508,4 @@ const response = await fetch('/api/v2/pkb/batch-tasks/batch/execute', { **审核状态**: 待用户验证 + diff --git a/extraction_service/.dockerignore b/extraction_service/.dockerignore index 858fee61..a1f0ae68 100644 --- a/extraction_service/.dockerignore +++ b/extraction_service/.dockerignore @@ -64,4 +64,5 @@ models/ + diff --git a/extraction_service/operations/__init__.py b/extraction_service/operations/__init__.py index 172b3f29..ab49d46e 100644 --- a/extraction_service/operations/__init__.py +++ b/extraction_service/operations/__init__.py @@ -51,5 +51,6 @@ __version__ = '1.0.0' + diff --git a/extraction_service/operations/dropna.py b/extraction_service/operations/dropna.py index 88913cab..70511a14 100644 --- a/extraction_service/operations/dropna.py +++ b/extraction_service/operations/dropna.py @@ -184,5 +184,6 @@ def get_missing_summary(df: pd.DataFrame) -> dict: + diff --git a/extraction_service/operations/filter.py b/extraction_service/operations/filter.py index 3f3ed88a..1b22a277 100644 --- a/extraction_service/operations/filter.py +++ b/extraction_service/operations/filter.py @@ -144,5 +144,6 @@ def apply_filter( + diff --git a/extraction_service/operations/unpivot.py b/extraction_service/operations/unpivot.py index bcc8dc06..06975245 100644 --- a/extraction_service/operations/unpivot.py +++ b/extraction_service/operations/unpivot.py @@ -308,5 +308,6 @@ def get_unpivot_preview( + diff --git a/extraction_service/test_dc_api.py b/extraction_service/test_dc_api.py index 1d2b2275..0580b8de 100644 --- a/extraction_service/test_dc_api.py +++ b/extraction_service/test_dc_api.py @@ -318,5 +318,6 @@ if __name__ == "__main__": + diff --git a/extraction_service/test_execute_simple.py b/extraction_service/test_execute_simple.py index 088ff993..bb13e8f6 100644 --- a/extraction_service/test_execute_simple.py +++ b/extraction_service/test_execute_simple.py @@ -84,5 +84,6 @@ except Exception as e: + diff --git a/extraction_service/test_module.py b/extraction_service/test_module.py index b165f3b6..b59c93dc 100644 --- a/extraction_service/test_module.py +++ b/extraction_service/test_module.py @@ -64,5 +64,6 @@ except Exception as e: + diff --git a/frontend-v2/.dockerignore b/frontend-v2/.dockerignore index 9608387b..4e2882d5 100644 --- a/frontend-v2/.dockerignore +++ b/frontend-v2/.dockerignore @@ -83,5 +83,6 @@ vite.config.*.timestamp-* + diff --git a/frontend-v2/docker-entrypoint.sh b/frontend-v2/docker-entrypoint.sh index 434284cf..3a2b3cdc 100644 --- a/frontend-v2/docker-entrypoint.sh +++ b/frontend-v2/docker-entrypoint.sh @@ -50,5 +50,6 @@ exec nginx -g 'daemon off;' + diff --git a/frontend-v2/nginx.conf b/frontend-v2/nginx.conf index 8c45e23d..c56d4213 100644 --- a/frontend-v2/nginx.conf +++ b/frontend-v2/nginx.conf @@ -206,5 +206,6 @@ http { + diff --git a/frontend-v2/src/modules/asl/components/FulltextDetailDrawer.tsx b/frontend-v2/src/modules/asl/components/FulltextDetailDrawer.tsx index 65417087..36dedb88 100644 --- a/frontend-v2/src/modules/asl/components/FulltextDetailDrawer.tsx +++ b/frontend-v2/src/modules/asl/components/FulltextDetailDrawer.tsx @@ -553,5 +553,6 @@ export default FulltextDetailDrawer; + diff --git a/frontend-v2/src/modules/dc/hooks/useAssets.ts b/frontend-v2/src/modules/dc/hooks/useAssets.ts index f2888720..858e2167 100644 --- a/frontend-v2/src/modules/dc/hooks/useAssets.ts +++ b/frontend-v2/src/modules/dc/hooks/useAssets.ts @@ -146,5 +146,6 @@ export const useAssets = (activeTab: AssetTabType) => { + diff --git a/frontend-v2/src/modules/dc/hooks/useRecentTasks.ts b/frontend-v2/src/modules/dc/hooks/useRecentTasks.ts index 5e121b7b..5809fa01 100644 --- a/frontend-v2/src/modules/dc/hooks/useRecentTasks.ts +++ b/frontend-v2/src/modules/dc/hooks/useRecentTasks.ts @@ -136,5 +136,6 @@ export const useRecentTasks = () => { + diff --git a/frontend-v2/src/modules/dc/pages/tool-c/components/DropnaDialog.tsx b/frontend-v2/src/modules/dc/pages/tool-c/components/DropnaDialog.tsx index 846c49e6..701965c8 100644 --- a/frontend-v2/src/modules/dc/pages/tool-c/components/DropnaDialog.tsx +++ b/frontend-v2/src/modules/dc/pages/tool-c/components/DropnaDialog.tsx @@ -335,5 +335,6 @@ export default DropnaDialog; + diff --git a/frontend-v2/src/modules/dc/pages/tool-c/components/MetricTimePanel.tsx b/frontend-v2/src/modules/dc/pages/tool-c/components/MetricTimePanel.tsx index 1e824fe5..52d8f2fd 100644 --- a/frontend-v2/src/modules/dc/pages/tool-c/components/MetricTimePanel.tsx +++ b/frontend-v2/src/modules/dc/pages/tool-c/components/MetricTimePanel.tsx @@ -420,5 +420,6 @@ export default MetricTimePanel; + diff --git a/frontend-v2/src/modules/dc/pages/tool-c/components/PivotPanel.tsx b/frontend-v2/src/modules/dc/pages/tool-c/components/PivotPanel.tsx index b108cb03..3427bd20 100644 --- a/frontend-v2/src/modules/dc/pages/tool-c/components/PivotPanel.tsx +++ b/frontend-v2/src/modules/dc/pages/tool-c/components/PivotPanel.tsx @@ -306,5 +306,6 @@ export default PivotPanel; + diff --git a/frontend-v2/src/modules/dc/pages/tool-c/hooks/useSessionStatus.ts b/frontend-v2/src/modules/dc/pages/tool-c/hooks/useSessionStatus.ts index 2cab7896..61883850 100644 --- a/frontend-v2/src/modules/dc/pages/tool-c/hooks/useSessionStatus.ts +++ b/frontend-v2/src/modules/dc/pages/tool-c/hooks/useSessionStatus.ts @@ -106,5 +106,6 @@ export function useSessionStatus({ + diff --git a/frontend-v2/src/modules/dc/pages/tool-c/types/index.ts b/frontend-v2/src/modules/dc/pages/tool-c/types/index.ts index d19e0a14..4d0e9c69 100644 --- a/frontend-v2/src/modules/dc/pages/tool-c/types/index.ts +++ b/frontend-v2/src/modules/dc/pages/tool-c/types/index.ts @@ -98,5 +98,6 @@ export interface DataStats { + diff --git a/frontend-v2/src/modules/dc/types/portal.ts b/frontend-v2/src/modules/dc/types/portal.ts index ad6a1b43..e2c346ad 100644 --- a/frontend-v2/src/modules/dc/types/portal.ts +++ b/frontend-v2/src/modules/dc/types/portal.ts @@ -94,5 +94,6 @@ export type AssetTabType = 'all' | 'processed' | 'raw'; + diff --git a/frontend-v2/src/modules/pkb/api/knowledgeBaseApi.ts b/frontend-v2/src/modules/pkb/api/knowledgeBaseApi.ts index 974a3103..1e219d65 100644 --- a/frontend-v2/src/modules/pkb/api/knowledgeBaseApi.ts +++ b/frontend-v2/src/modules/pkb/api/knowledgeBaseApi.ts @@ -215,3 +215,4 @@ export const documentSelectionApi = { }; + diff --git a/frontend-v2/src/modules/pkb/pages/KnowledgePage.tsx b/frontend-v2/src/modules/pkb/pages/KnowledgePage.tsx index 737056e6..9b2bf0a3 100644 --- a/frontend-v2/src/modules/pkb/pages/KnowledgePage.tsx +++ b/frontend-v2/src/modules/pkb/pages/KnowledgePage.tsx @@ -283,3 +283,4 @@ const KnowledgePage: React.FC = () => { export default KnowledgePage; + diff --git a/frontend-v2/src/modules/pkb/stores/useKnowledgeBaseStore.ts b/frontend-v2/src/modules/pkb/stores/useKnowledgeBaseStore.ts index b8fa1dcb..6a38e49a 100644 --- a/frontend-v2/src/modules/pkb/stores/useKnowledgeBaseStore.ts +++ b/frontend-v2/src/modules/pkb/stores/useKnowledgeBaseStore.ts @@ -221,3 +221,4 @@ export const useKnowledgeBaseStore = create((set, get) => ({ })); + diff --git a/frontend-v2/src/modules/pkb/types/workspace.ts b/frontend-v2/src/modules/pkb/types/workspace.ts index 5e8dcc44..f22ebda7 100644 --- a/frontend-v2/src/modules/pkb/types/workspace.ts +++ b/frontend-v2/src/modules/pkb/types/workspace.ts @@ -38,3 +38,4 @@ export interface BatchTemplate { } + diff --git a/frontend-v2/src/shared/components/index.ts b/frontend-v2/src/shared/components/index.ts index 97cc157f..2e73aba3 100644 --- a/frontend-v2/src/shared/components/index.ts +++ b/frontend-v2/src/shared/components/index.ts @@ -49,5 +49,6 @@ export { default as Placeholder } from './Placeholder'; + diff --git a/frontend-v2/src/vite-env.d.ts b/frontend-v2/src/vite-env.d.ts index 3637f83f..52592af0 100644 --- a/frontend-v2/src/vite-env.d.ts +++ b/frontend-v2/src/vite-env.d.ts @@ -29,5 +29,6 @@ interface ImportMeta { + diff --git a/git-cleanup-redcap.ps1 b/git-cleanup-redcap.ps1 index c83f2c40..f7944b92 100644 --- a/git-cleanup-redcap.ps1 +++ b/git-cleanup-redcap.ps1 @@ -24,3 +24,4 @@ Write-Host "Next step: Run the commit command" -ForegroundColor Cyan + diff --git a/git-commit-day1.ps1 b/git-commit-day1.ps1 index 29497a1f..e50b7661 100644 --- a/git-commit-day1.ps1 +++ b/git-commit-day1.ps1 @@ -80,3 +80,4 @@ Write-Host "Git commit and push completed!" -ForegroundColor Green + diff --git a/git-fix-lock.ps1 b/git-fix-lock.ps1 index 745d550a..8aeb8c64 100644 --- a/git-fix-lock.ps1 +++ b/git-fix-lock.ps1 @@ -28,3 +28,4 @@ Write-Host "Now you can run git commands again." -ForegroundColor Cyan + diff --git a/python-microservice/operations/__init__.py b/python-microservice/operations/__init__.py index 172b3f29..ab49d46e 100644 --- a/python-microservice/operations/__init__.py +++ b/python-microservice/operations/__init__.py @@ -51,5 +51,6 @@ __version__ = '1.0.0' + diff --git a/python-microservice/operations/binning.py b/python-microservice/operations/binning.py index f2c1bcec..b0861423 100644 --- a/python-microservice/operations/binning.py +++ b/python-microservice/operations/binning.py @@ -158,5 +158,6 @@ def apply_binning( + diff --git a/python-microservice/operations/filter.py b/python-microservice/operations/filter.py index 3f3ed88a..1b22a277 100644 --- a/python-microservice/operations/filter.py +++ b/python-microservice/operations/filter.py @@ -144,5 +144,6 @@ def apply_filter( + diff --git a/python-microservice/operations/recode.py b/python-microservice/operations/recode.py index 6061e669..c675ded5 100644 --- a/python-microservice/operations/recode.py +++ b/python-microservice/operations/recode.py @@ -114,5 +114,6 @@ def apply_recode( + diff --git a/recover_dc_code.py b/recover_dc_code.py index ca125fdd..202f1c9d 100644 --- a/recover_dc_code.py +++ b/recover_dc_code.py @@ -258,5 +258,6 @@ if __name__ == "__main__": + diff --git a/redcap-docker-dev/.gitattributes b/redcap-docker-dev/.gitattributes index bdd78932..2ed9b11d 100644 --- a/redcap-docker-dev/.gitattributes +++ b/redcap-docker-dev/.gitattributes @@ -40,3 +40,4 @@ + diff --git a/redcap-docker-dev/.gitignore b/redcap-docker-dev/.gitignore index ca7d4836..c4f541b6 100644 --- a/redcap-docker-dev/.gitignore +++ b/redcap-docker-dev/.gitignore @@ -71,3 +71,4 @@ Desktop.ini + diff --git a/redcap-docker-dev/README.md b/redcap-docker-dev/README.md index 655b1a46..bb664eb8 100644 --- a/redcap-docker-dev/README.md +++ b/redcap-docker-dev/README.md @@ -372,3 +372,4 @@ docker-compose -f docker-compose.prod.yml up -d + diff --git a/redcap-docker-dev/docker-compose.prod.yml b/redcap-docker-dev/docker-compose.prod.yml index df905b65..a038e48b 100644 --- a/redcap-docker-dev/docker-compose.prod.yml +++ b/redcap-docker-dev/docker-compose.prod.yml @@ -133,3 +133,4 @@ volumes: + diff --git a/redcap-docker-dev/docker-compose.yml b/redcap-docker-dev/docker-compose.yml index 1d1e1483..502f78ed 100644 --- a/redcap-docker-dev/docker-compose.yml +++ b/redcap-docker-dev/docker-compose.yml @@ -131,3 +131,4 @@ volumes: + diff --git a/redcap-docker-dev/env.template b/redcap-docker-dev/env.template index e55a4f29..7681895d 100644 --- a/redcap-docker-dev/env.template +++ b/redcap-docker-dev/env.template @@ -67,3 +67,4 @@ PMA_UPLOAD_LIMIT=50M + diff --git a/redcap-docker-dev/scripts/clean-redcap.ps1 b/redcap-docker-dev/scripts/clean-redcap.ps1 index 4b704d57..916565b3 100644 --- a/redcap-docker-dev/scripts/clean-redcap.ps1 +++ b/redcap-docker-dev/scripts/clean-redcap.ps1 @@ -75,3 +75,4 @@ Write-Host "" + diff --git a/redcap-docker-dev/scripts/create-redcap-password.php b/redcap-docker-dev/scripts/create-redcap-password.php index f029e6a3..1f8f14af 100644 --- a/redcap-docker-dev/scripts/create-redcap-password.php +++ b/redcap-docker-dev/scripts/create-redcap-password.php @@ -53,3 +53,4 @@ try { + diff --git a/redcap-docker-dev/scripts/logs-redcap.ps1 b/redcap-docker-dev/scripts/logs-redcap.ps1 index 8b6704e8..99b9a728 100644 --- a/redcap-docker-dev/scripts/logs-redcap.ps1 +++ b/redcap-docker-dev/scripts/logs-redcap.ps1 @@ -66,3 +66,4 @@ Write-Host "" + diff --git a/redcap-docker-dev/scripts/reset-admin-password.php b/redcap-docker-dev/scripts/reset-admin-password.php index 36390ca6..edcc0393 100644 --- a/redcap-docker-dev/scripts/reset-admin-password.php +++ b/redcap-docker-dev/scripts/reset-admin-password.php @@ -29,3 +29,4 @@ if ($result) { + diff --git a/redcap-docker-dev/scripts/start-redcap.ps1 b/redcap-docker-dev/scripts/start-redcap.ps1 index 838c989f..b03d6b65 100644 --- a/redcap-docker-dev/scripts/start-redcap.ps1 +++ b/redcap-docker-dev/scripts/start-redcap.ps1 @@ -51,3 +51,4 @@ if ($LASTEXITCODE -eq 0) { + diff --git a/redcap-docker-dev/scripts/stop-redcap.ps1 b/redcap-docker-dev/scripts/stop-redcap.ps1 index b80f134a..9f22fcae 100644 --- a/redcap-docker-dev/scripts/stop-redcap.ps1 +++ b/redcap-docker-dev/scripts/stop-redcap.ps1 @@ -37,3 +37,4 @@ if ($LASTEXITCODE -eq 0) { + diff --git a/run_recovery.ps1 b/run_recovery.ps1 index 251ea689..d2e2f5b9 100644 --- a/run_recovery.ps1 +++ b/run_recovery.ps1 @@ -82,5 +82,6 @@ Write-Host "==================================================================== + diff --git a/tests/QUICKSTART_快速开始.md b/tests/QUICKSTART_快速开始.md index 27a2d37f..5dc4a5ed 100644 --- a/tests/QUICKSTART_快速开始.md +++ b/tests/QUICKSTART_快速开始.md @@ -129,5 +129,6 @@ INFO: Uvicorn running on http://0.0.0.0:8001 + diff --git a/tests/README_测试说明.md b/tests/README_测试说明.md index 7fb6f16d..83080e9d 100644 --- a/tests/README_测试说明.md +++ b/tests/README_测试说明.md @@ -285,5 +285,6 @@ df_numeric.to_excel('test_data/numeric_test.xlsx', index=False) + diff --git a/tests/run_tests.bat b/tests/run_tests.bat index e063f8a4..bb615ec5 100644 --- a/tests/run_tests.bat +++ b/tests/run_tests.bat @@ -80,5 +80,6 @@ pause + diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 969a2ea2..9ba00b56 100644 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -76,5 +76,6 @@ echo "========================================" + diff --git a/快速部署到SAE.md b/快速部署到SAE.md index 4adb36ea..07bc9514 100644 --- a/快速部署到SAE.md +++ b/快速部署到SAE.md @@ -341,5 +341,6 @@ OSS AccessKeySecret:_______________ + diff --git a/部署检查清单.md b/部署检查清单.md index 511fbb5a..88d85c67 100644 --- a/部署检查清单.md +++ b/部署检查清单.md @@ -377,5 +377,6 @@ OSS配置: +