nex_docus/IMPLEMENTATION_PLAN.md

4.4 KiB
Raw Blame History

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仅查看

操作日志设计

{
  "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 全文检索
    • 添加文档内容索引到数据库
    • 实现增量索引更新