Files
AIclinicalresearch/docs/03-业务模块/PKB-个人知识库/00-模块当前状态与开发指南.md
HaHafeng 66255368b7 feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1):
- Database: Add user_modules table for fine-grained module permissions
- Database: Add 4 user permissions (view/create/edit/delete) to role_permissions
- Backend: UserService (780 lines) - CRUD with tenant isolation
- Backend: UserController + UserRoutes (648 lines) - 13 API endpoints
- Backend: Batch import users from Excel
- Frontend: UserListPage (412 lines) - list/filter/search/pagination
- Frontend: UserFormPage (341 lines) - create/edit with module config
- Frontend: UserDetailPage (393 lines) - details/tenant/module management
- Frontend: 3 modal components (592 lines) - import/assign/configure
- API: GET/POST/PUT/DELETE /api/admin/users/* endpoints

Architecture Upgrade - Module Permission System:
- Backend: Add getUserModules() method in auth.service
- Backend: Login API returns modules array in user object
- Frontend: AuthContext adds hasModule() method
- Frontend: Navigation filters modules based on user.modules
- Frontend: RouteGuard checks requiredModule instead of requiredVersion
- Frontend: Remove deprecated version-based permission system
- UX: Only show accessible modules in navigation (clean UI)
- UX: Smart redirect after login (avoid 403 for regular users)

Fixes:
- Fix UTF-8 encoding corruption in ~100 docs files
- Fix pageSize type conversion in userService (String to Number)
- Fix authUser undefined error in TopNavigation
- Fix login redirect logic with role-based access check
- Update Git commit guidelines v1.2 with UTF-8 safety rules

Database Changes:
- CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled)
- ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code)
- INSERT 4 permissions + role assignments
- UPDATE PUBLIC tenant with 8 module subscriptions

Technical:
- Backend: 5 new files (~2400 lines)
- Frontend: 10 new files (~2500 lines)
- Docs: 1 development record + 2 status updates + 1 guideline update
- Total: ~4900 lines of code

Status: User management 100% complete, module permission system operational
2026-01-16 13:42:10 +08:00

402 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PKB个人知识库模块 - 当前状态与开发指南
> **文档版本:** v2.0
> **创建日期:** 2026-01-07
> **维护者:** PKB模块开发团队
> **最后更新:** 2026-01-07
> **重大进展:** 🎉 **PKB模块核心功能全部实现具备生产可用性**
> **文档目的:** 反映模块真实状态,记录开发历程
---
## 📋 文档说明
本文档是PKB个人知识库模块的**真实状态快照**,如实记录当前开发状态、技术架构和已知问题。
**与其他文档的关系**
- **本文档00-模块当前状态)**What is真实状态包括问题
- **需求分析文档**What to do产品需求
- **开发记录文档**What done开发历程
- **技术设计文档**How to do设计方案
---
## 🎯 模块概述
### 核心功能
PKBPersonal Knowledge Base个人知识库模块提供
- 🗂️ **知识库管理**:创建、编辑、删除个人知识库
- 📄 **文档管理**上传、处理、组织文档PDF/Word/TXT/MD
- 🤖 **AI问答**:基于知识库内容的智能问答
- 📊 **批处理**:批量提取文档信息,生成结构化数据
### 当前状态
| 组件 | 状态 | 完成度 | 说明 |
|------|------|--------|------|
| **后端API** | ✅ 已完成 | 100% | v1 + v2双路由运行 |
| **前端Dashboard** | ✅ 已完成 | 95% | 基于V5原型实现 |
| **前端Workspace** | ✅ 已完成 | 95% | 基于V3原型实现 |
| **全文阅读模式** | ✅ 已完成 | 95% | Chat组件集成完成 |
| **逐篇精读模式** | ✅ 已完成 | 95% | 文档选择+对话 |
| **批处理模式** | ✅ 已完成 | 95% | 完整流程+结果导出 |
| **文档上传** | ✅ 已完成 | 100% | 拖拽+进度显示 |
| **RAG检索模式** | ⏸️ 暂缓 | 0% | 优先级调整 |
**整体完成度约90%** 🎉
---
## 🏗️ 技术架构
### 前端技术栈
```
框架: 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. RAG检索模式未实现 🟡 中优先级
**问题描述**
- RAG检索模式暂未实现
- 当前优先全文阅读和逐篇精读模式
**影响**:工作模式选择有限
**解决方案**
- v2.1版本实现RAG检索
- 集成Dify知识库检索能力
### 2. 批处理模板有限 🟢 低优先级
**问题描述**
- 当前只支持1个模板临床研究信息提取
- 需要更多预设模板和自定义能力
**影响**:批处理应用场景有限
**解决方案**
- v2.2版本增加药物安全性、患者基线等模板
- 支持用户自定义模板
### 3. 文档预览功能缺失 🟢 低优先级
**问题描述**
- 暂不支持文档在线预览
- 需下载后查看原文
**影响**:用户体验
**解决方案**
- v3.0版本集成PDF预览功能
- 支持文档标注和批注
---
## 📝 下一步开发计划
### v2.1 版本(短期)
1. **RAG检索模式** 🟡
- 实现基于Dify的知识库检索
- 添加工作模式选择器
- 测试检索准确度
2. **性能优化** 🟡
- 批处理并发优化
- 文档加载缓存
- API响应时间优化
### v2.2 版本(中期)
3. **批处理增强** 🟢
- 增加药物安全性模板
- 增加患者基线特征模板
- 支持自定义模板
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%
- 后端API100% ✅
- 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