Files
freedak f7a720204a Update: 将子项目从 submodule 转为完整内容
- 移除 GovAI, nomifun-tauri, 算力盒子 的 submodule 引用
- 添加所有子项目的完整源代码
- 保留原始 .git 为 .git.bak 备份
2026-07-04 19:20:46 +08:00

18 KiB
Raw Permalink Blame History

Commons Platform Phase 1 MVP — 开发任务文档

文档编号:TASK-COMMONSP-001 版本:v1.1.0 日期:2026-03-14 状态:MVP 阶段大部分完成 项目缩写:COMMONSPCommons Platform 最后更新:2026-03-14


0. 进度摘要

0.1 MVP 阶段完成情况

模块 状态 完成度
数据库迁移 完成 100%
用户体系 完成 100%
初始化向导 完成 100%
品牌配置 完成 100%
审计日志 完成 100%
领域配置 完成 100%
登录页改造 完成 100%

0.2 待完成任务

任务 优先级 说明
数据备份接口 P1 S1 阶段,涉及完整数据导出/导入
前端主题动态加载 P1 需要从后端获取品牌配置并设置 CSS 变量
管理后台布局优化 P2 侧边栏导航、权限控制等

1. 任务总览

1.1 阶段划分

阶段 范围 优先级
MVP 核心功能:初始化向导 + 用户体系 + 品牌配置 + 审计日志 P0
S1 重要功能:主题预览 + 领域向导 + 数据备份 P1
S2 增强功能:领域技能包 + 功能开关 + 配置迁移 P2

1.2 模块依赖关系

┌─────────────────────────────────────────────────────────┐
│                    模块依赖图                            │
├─────────────────────────────────────────────────────────┤
│                                                         │
│   ┌─────────────┐                                       │
│   │  数据库迁移  │ ← 所有模块依赖                        │
│   └──────┬──────┘                                       │
│          │                                               │
│          ▼                                               │
│   ┌─────────────┐     ┌─────────────┐                  │
│   │  用户体系   │ ──▶ │  审计日志   │                  │
│   └──────┬──────┘     └─────────────┘                  │
│          │                                               │
│          ▼                                               │
│   ┌─────────────┐     ┌─────────────┐                  │
│   │  初始化向导 │ ──▶ │  品牌配置   │                  │
│   └─────────────┘     └─────────────┘                  │
│                                                         │
└─────────────────────────────────────────────────────────┘

2. MVP 阶段任务(P0

2.1 数据库迁移

目标:扩展 nomifun-tauri 数据库 schema,支持用户角色、品牌配置、审计日志

依赖:无

任务 2.1.1:创建数据库迁移文件

  • 创建 002_user_role.sql 迁移文件

    • 目标:为 users 表添加 role 字段(admin/user
    • 验收标准:迁移可正常执行,不破坏现有数据
    • 需求映射:FR-AUTH-002
  • 创建 003_system_config.sql 迁移文件

    • 目标:创建 system_config 表(组织名、领域类型)
    • 验收标准:迁移可正常执行
    • 需求映射:FR-TENANT-001
  • 创建 004_branding_config.sql 迁移文件

    • 目标:创建 branding_config 表(Logo、主题配色)
    • 验收标准:迁移可正常执行
    • 需求映射:FR-THEME-001, FR-THEME-002
  • 创建 005_audit_log.sql 迁移文件

    • 目标:创建 audit_log
    • 验收标准:迁移可正常执行,支持大量写入
    • 需求映射:FR-AUDIT-001
  • 创建 006_domain_config.sql 迁移文件

    • 目标:创建 domain_config
    • 验收标准:迁移可正常执行
    • 需求映射:FR-DOMAIN-001

任务 2.1.2:定义 Rust 数据模型

  • nomifun-db/src/models/ 下新增模型文件
    • 目标:定义 UserRoleSystemConfigBrandingConfigAuditLogDomainConfig 模型
    • 验收标准:模型字段与数据库表一致,实现 FromRow trait
    • 依赖:2.1.1

2.2 用户体系

目标:实现多用户注册、登录、RBAC 权限控制

依赖2.1

任务 2.2.1:扩展用户注册接口

  • 修改 POST /api/auth/register 接口
    • 目标:首次启动时创建 admin 用户,后续注册为普通用户
    • 验收标准:
      • 未初始化时,第一个注册用户自动成为 admin
      • 已初始化后,注册用户默认为 user 角色
    • 需求映射:FR-AUTH-001, FR-AUTH-002
    • 状态 已完成(通过 /api/auth/setup 实现)

任务 2.2.2:扩展登录接口

  • 修改 POST /login 接口
    • 目标:返回用户角色信息到前端
    • 验收标准:JWT payload 包含 role 字段
    • 需求映射:FR-AUTH-001
    • 状态 已完成

任务 2.2.3:添加用户管理接口

  • 添加 GET /api/users 接口

    • 目标:列出租户内所有用户(仅 admin 可访问)
    • 验收标准:返回用户列表,不包含密码
    • 需求映射:FR-AUTH-002
    • 状态 已完成
  • 添加 POST /api/users 接口

    • 目标:创建新用户(仅 admin 可访问)
    • 验收标准:可指定角色,密码加密存储
    • 需求映射:FR-AUTH-002
    • 状态 已完成
  • 添加 PUT /api/users/{id} 接口

    • 目标:更新用户信息(仅 admin 可访问)
    • 验收标准:可修改角色,不可修改自己
    • 需求映射:FR-AUTH-002
    • 状态 已完成
  • 添加 DELETE /api/users/{id} 接口

    • 目标:删除用户(仅 admin 可访问)
    • 验收标准:不可删除自己,最后一个 admin 不能删除
    • 需求映射:FR-AUTH-002
    • 状态 已完成

任务 2.2.4:添加权限中间件

  • 实现 require_admin 中间件
    • 目标:检查 JWT 中的 role 字段
    • 验收标准:非 admin 用户返回 403
    • 需求映射:FR-AUTH-002
    • 状态 已完成

2.3 初始化向导

目标:首次启动引导用户完成系统配置

依赖2.1, 2.2

任务 2.3.1:添加初始化状态检查

  • 添加 GET /api/system/initialized 接口
    • 目标:检查系统是否已完成初始化
    • 验收标准:返回 { initialized: bool }
    • 状态 已完成(依赖 SystemConfigRepository

任务 2.3.2:添加初始化接口

  • 添加 POST /api/system/init 接口
    • 目标:创建系统管理员、设置组织信息、选择领域、预设主题
    • 验收标准:
      • 仅在未初始化时可用
      • 创建 admin 用户
      • 保存组织名和领域配置
      • 应用预设主题
    • 需求映射:FR-TENANT-001
    • 状态 已完成

任务 2.3.3:前端初始化向导页面

  • 创建 src/pages/setupWizard/SetupWizard.tsx 组件
    • 目标:5 步引导用户完成初始化
    • 步骤:
      1. 欢迎页(检测未初始化状态)
      2. 创建管理员账号
      3. 配置组织信息
      4. 选择领域类型
      5. 选择预设主题
    • 验收标准:
      • 每步验证输入
      • 完成后跳转到登录页
    • 需求映射:FR-TENANT-001
    • 状态 已完成(需要 /api/auth/setup 后端支持)
    • 文件
      • ui/src/renderer/pages/setupWizard/SetupWizard.tsx
      • ui/src/renderer/pages/setupWizard/SetupWizard.css
      • ui/src/renderer/services/i18n/locales/zh-CN/setupWizard.json
      • ui/src/renderer/services/i18n/locales/en-US/setupWizard.json
    • 路由:添加 /setup 路由,needsSetup 时自动重定向

2.4 品牌配置

目标:支持预设主题和自定义品牌配置

依赖2.1

任务 2.4.1:添加品牌配置接口

  • 添加 GET /api/system/branding 接口

    • 目标:获取当前品牌配置
    • 验收标准:返回 Logo URL、主题配色
    • 需求映射:FR-THEME-001
    • 状态 已完成
  • 添加 PATCH /api/system/branding 接口

    • 目标:更新品牌配置(仅 admin 可访问)
    • 验收标准:保存配色和 Logo 配置
    • 需求映射:FR-THEME-001, FR-THEME-002
    • 状态 已完成
  • 添加 POST /api/system/branding/logo 接口

    • 目标:上传 Logo 文件
    • 验收标准:支持 PNG/SVG,保存到 static 目录
    • 需求映射:FR-THEME-002
    • 状态 已完成(支持 PNG/SVG/JPG,保存到 data_dir/logos/
  • 添加 GET /api/system/branding/presets 接口

    • 目标:获取预设主题列表
    • 验收标准:返回政务蓝/企业蓝/学术绿主题配置
    • 需求映射:FR-THEME-002
    • 状态 已完成
  • 添加 POST /api/system/branding/presets/{preset_id} 接口

    • 目标:应用预设主题
    • 验收标准:一键切换主题
    • 需求映射:FR-THEME-002
    • 状态 已完成

任务 2.4.2:前端品牌配置页面

  • 创建 src/views/admin/BrandingConfig.vue 组件
    • 目标:可视化配置品牌
    • 功能:
      • 预设主题选择(点击一键应用)
      • 颜色选择器(主色/辅色/强调色)
      • Logo 上传(支持拖拽)
      • 实时预览
    • 验收标准:
      • 预览与发布后一致
      • 切换主题 < 100ms
    • 需求映射:FR-THEME-001, FR-THEME-002, FR-THEME-003
    • 状态 已完成(ui/src/renderer/pages/settings/BrandingConfig.tsx

任务 2.4.3:前端主题动态加载

  • 修改 src/App.vue 或主题入口
    • 目标:从后端获取品牌配置,动态设置 CSS 变量
    • 验收标准:
      • 页面加载时获取品牌配置
      • 设置 --theme-* CSS 变量
      • 主题切换无需刷新
    • 需求映射:FR-THEME-001

2.5 审计日志

目标:记录敏感操作,支持查询和导出

依赖2.1

任务 2.5.1:添加审计日志服务

  • 创建审计日志数据库层
    • 目标:封装审计日志写入和查询逻辑
    • 功能:
      • 异步写入日志
      • 自动补充时间戳
      • 支持分页查询和筛选
    • 验收标准:写入不影响主业务响应时间
    • 需求映射:FR-AUDIT-001
    • 状态 已完成(nomifun-db::IAuditLogRepository

任务 2.5.2:审计日志切面

  • 在关键接口添加审计日志调用
    • 目标:登录/登出、配置变更、用户管理操作自动记录
    • 验收标准:操作被正确记录到 audit_log 表
    • 需求映射:FR-AUDIT-001
    • 状态 已完成(已在 system_init、branding_config、domain_config 等操作中集成)

任务 2.5.3:添加审计日志查询接口

  • 添加 GET /api/system/audit-logs 接口

    • 目标:查询审计日志(仅 admin 可访问)
    • 参数:pagepage_sizestart_dateend_dateactionuser_idcategorystatus
    • 验收标准:支持分页和筛选
    • 需求映射:FR-AUDIT-002
    • 状态 已完成
  • 添加 POST /api/system/audit-logs 接口

    • 目标:创建新的审计日志条目
    • 验收标准:写入成功并返回日志条目
    • 需求映射:FR-AUDIT-001
    • 状态 已完成
  • 添加 GET /api/system/audit-logs/{id} 接口

    • 目标:获取单条审计日志
    • 验收标准:返回指定ID的日志条目
    • 需求映射:FR-AUDIT-002
    • 状态 已完成
  • 添加 GET /api/system/audit-logs/export 接口

    • 目标:导出审计日志为 CSV
    • 验收标准:导出文件可被 Excel 正确打开
    • 需求映射:FR-AUDIT-002
    • 状态 已完成(支持导出最多 10,000 条记录)

任务 2.5.4:前端审计日志页面

  • 创建 src/views/admin/AuditLogs.vue 组件
    • 目标:展示和查询审计日志
    • 功能:
      • 筛选条件(时间范围、操作类型、用户)
      • 日志列表展示
      • CSV 导出按钮
    • 验收标准:日志按时间倒序展示
    • 需求映射:FR-AUDIT-002

3. S1 阶段任务(P1

3.1 领域向导

目标:引导用户配置领域特定的参数

依赖2.1, 2.3

任务 3.1.1:添加领域配置接口

  • 添加 GET /api/domains 接口

    • 目标:获取当前领域配置
    • 验收标准:返回领域类型和配置参数
    • 状态 已完成(GET /api/system/domain-config
  • 添加 POST /api/domains/init 接口

    • 目标:领域初始化向导
    • 功能:根据领域类型初始化部门/知识库分类/技能包
    • 验收标准:按领域类型加载不同的初始化模板
    • 备注:已通过 POST /api/system/init + 预设应用实现
  • 添加 GET /api/domains/skill-packs 接口

    • 目标:获取领域技能包列表
    • 验收标准:返回该领域可用的技能包
    • 备注:属于 MCP 系统功能,暂不在此实现

任务 3.1.2:前端领域配置页面

  • 创建 src/views/admin/DomainConfig.vue 组件
    • 目标:领域初始化向导
    • 功能:部门设置、知识库分类、预置技能包选择
    • 状态 已完成(ui/src/renderer/pages/admin/DomainConfigPage.tsx

3.2 数据备份

目标:支持数据导出和导入

依赖2.1

任务 3.2.1:添加备份接口

  • 添加 POST /api/config/backup 接口

    • 目标:导出完整数据备份
    • 验收标准:生成包含 schema 和数据的 zip 文件
  • 添加 POST /api/config/restore 接口

    • 目标:导入备份文件
    • 验收标准:验证完整性后重建数据

任务 3.2.2:前端备份页面

  • 在设置页添加备份功能
    • 目标:一键备份和导入
    • 功能:下载备份文件、上传恢复

4. S2 阶段任务(P2

4.1 功能开关

目标:按需启用/禁用某些功能

依赖2.1

任务 4.1.1:添加功能开关表和接口

  • 创建 feature_flags
  • 添加 GET/PUT /api/features 接口

任务 4.1.2:前端功能开关控件

  • 在设置页添加功能开关

4.2 配置导入导出

目标:迁移系统配置

依赖2.1

任务 4.2.1:添加配置导出接口

  • 添加 GET /api/config/export 接口
    • 目标:导出配置(不含用户数据)
    • 验收标准:导出 JSON 可被导入

任务 4.2.2:添加配置导入接口

  • 添加 POST /api/config/import 接口
    • 目标:导入配置,支持合并或覆盖模式

5. 前端通用任务

5.1 管理后台布局

  • 创建 src/views/admin/ 目录结构
  • 添加管理员侧边栏导航
  • 添加管理员权限控制(未登录/非 admin 跳转)

5.2 登录页改造

  • 添加注册入口
    • 状态 已完成(通过 /setup 向导和管理员创建用户实现)
  • 首次启动时重定向到初始化向导
    • 状态 已完成(Router 中已实现 needsSetup 重定向)

5.3 设置页改造

  • 添加系统配置入口(admin
  • 添加品牌配置入口(admin
  • 添加用户管理入口(admin
  • 添加审计日志入口(admin
  • 添加数据备份入口(admin

6. 验收与测试

6.1 构建验证

  • cargo build --release 成功
  • npm run build 成功
  • 数据库迁移无报错

6.2 功能验收

功能 验收标准
首次启动 访问根路径自动跳转到初始化向导
初始化向导 5 步内完成配置,admin 用户创建成功
登录/登出 JWT 正确生成,刷新令牌正常
用户管理 admin 可创建/编辑/删除用户,普通用户无法访问
品牌配置 预设主题一键切换,主题 < 100ms 生效
Logo 上传 PNG/SVG 上传成功,页面正确显示
审计日志 登录/配置变更/用户管理操作自动记录
审计查询 支持筛选和 CSV 导出

6.3 回归测试

  • 现有 AI 对话功能正常
  • 现有知识库功能正常
  • 现有插件系统正常

7. 进度记录

7.1 完成项

日期 任务 状态 备注
2026-03-14 需求文档确认 v2.0.0 单租户优先
2026-03-14 PRD 确认 v1.0.0
2026-03-14 2.1 数据库迁移 6个迁移文件 + 6个模型定义
2026-03-14 2.3.1 初始化状态检查 API GET /api/system/initialized
2026-03-14 2.3.2 初始化接口 POST /api/system/init
2026-03-14 2.3.3 前端初始化向导 5步向导组件 + i18n + 路由
2026-03-14 2.4.1 品牌配置接口(部分) GET/PATCH branding + presets API
2026-03-14 2.5.1 审计日志数据库层 IAuditLogRepository + CRUD
2026-03-14 2.5.3 审计日志查询接口 GET/POST/GET(id) audit-logs API
2026-03-14 2.2 用户体系 CRUD 用户管理 + require_admin 中间件

7.2 变更记录

日期 变更内容 原因
2026-03-14 多租户改为单租户优先 私有化部署场景物理隔离已够用

文档结束 — 请检查确认后开始阶段 5(按任务文档执行开发)。