nex_docus/IMPLEMENTATION_PLAN.md

145 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# NexDocus 功能增强实现计划
## Stage 1: 路由调整和项目成员管理
**Goal**: 调整路由结构,实现项目卡片上的成员管理功能
**Success Criteria**:
- /projects/my 路由正常工作
- /projects/share 路由正常工作
- 项目卡片上可以打开成员管理弹窗
- 可以添加/删除项目成员
**Tests**:
- 访问 /projects/my 显示我创建的项目
- 访问 /projects/share 显示我参与的项目
- 点击项目卡片的成员图标打开成员管理弹窗
- 成功添加用户到项目
- 成功从项目删除用户
**Status**: ✅ Completed
---
## Stage 2: 个人桌面统计增强
**Goal**: 在个人桌面增加"参加项目数"统计
**Success Criteria**:
- 个人桌面显示参加项目数
- 统计数据准确(我创建的项目 + 我参与的项目)
**Tests**:
- 创建新项目后,个人项目数 +1
- 加入协作项目后,参加项目数 +1
- 统计卡片正确显示两个数值
**Status**: ✅ Completed
---
## Stage 3: 参与项目视图和权限控制
**Goal**: 实现参与项目单独视图,区分所有者和成员权限
**Success Criteria**:
- /projects/share 页面单独展示我参与的项目(非所有者)
- 项目卡片根据角色显示不同操作选项
- 成员不能删除项目(删除按钮不显示)
- 成员可以编辑项目内文档
**Tests**:
- 参与者打开 /projects/share 只看到协作项目
- 参与者看不到删除项目按钮
- 参与者可以正常编辑文档
**Status**: ✅ Completed
---
## Stage 4: 操作日志功能
**Goal**: 为文档编辑操作记录日志
**Success Criteria**:
- 创建者编辑文档时记录到 operation_logs 表
- 参与者编辑文档时记录到 operation_logs 表
- 日志包含用户ID、操作类型、资源信息
**Tests**:
- 编辑文档后operation_logs 表有新记录
- 日志包含正确的用户ID和文档路径
- 不同用户编辑生成不同日志
**Status**: ✅ Completed
---
## Stage 5: 项目编辑功能
**Goal**: 在我的项目卡片上增加编辑功能
**Success Criteria**:
- 项目卡片显示编辑按钮(仅所有者)
- 点击编辑弹出表单
- 可以修改项目名称、描述、公开性
**Tests**:
- 项目所有者看到编辑按钮
- 编辑项目信息成功保存
- 非所有者不显示编辑按钮
**Status**: ✅ Completed
---
## Stage 6: 全局搜索功能
**Goal**: 实现全局搜索文档内容
**Success Criteria**:
- 后端提供搜索API搜索文档元数据+内容)
- 前端增加全局搜索框
- 搜索结果显示匹配的文档列表
- 点击结果跳转到对应文档
**Tests**:
- 搜索文档标题能找到对应文档
- 搜索文档内容能找到包含关键词的文档
- 搜索结果高亮显示关键词
- 点击搜索结果正确跳转
**Status**: ✅ Completed
---
## 技术决策
### 数据库变更
- 无需修改现有表结构project_members 和 operation_logs 已存在)
### 后端API新增
1. `GET /projects/my` - 获取我创建的项目
2. `GET /projects/shared` - 获取我参与的项目
3. `POST /projects/{project_id}/members` - 添加项目成员(已存在,需测试)
4. `DELETE /projects/{project_id}/members/{user_id}` - 删除项目成员(需新增)
5. `POST /search/documents` - 全局文档搜索(需新增)
6. 修改 `POST /files/{project_id}/file` - 增加操作日志记录
### 前端路由调整
- `/projects/my` - 我的项目(原 /projects
- `/projects/share` - 参与的项目(新增)
- 保持 `/projects` 作为默认,重定向到 `/projects/my`
### 权限控制策略
- 项目所有者:完全控制(增删改查、成员管理、删除项目)
- 项目管理员ADMIN文档管理、成员管理
- 项目编辑者EDITOR文档编辑
- 项目查看者VIEWER仅查看
### 操作日志设计
```json
{
"user_id": 1,
"username": "admin",
"operation_type": "update",
"resource_type": "document",
"resource_id": 123,
"detail": {
"project_id": 10,
"file_path": "/docs/readme.md",
"action": "edit",
"changes": "content_modified"
},
"ip_address": "192.168.1.1",
"status": 1
}
```
### 全局搜索实现方案
1. **基础版本(当前阶段)**:
- 搜索 document_meta 表的 title 字段
- 读取磁盘文件内容进行关键词匹配
- 适用于小规模项目
2. **未来优化(可选)**:
- 使用 Elasticsearch 全文检索
- 添加文档内容索引到数据库
- 实现增量索引更新