Files
2026-08-01 23:09:49 +08:00

20 KiB
Raw Permalink Blame History

2-task-RSMS-001:全国记者站管理系统开发任务文档

文档版本:v1.0 状态:待确认 编制日期:2026-08-01 项目缩写:RSMS 适用范围:V0.1 MVP 收尾 + V0.2 阶段


阶段 0:规范文档(前置,必须先完成)

  • TASK-DOC-001:创建 pmdocs/ 目录结构(changes/、adr/

    • 目标:建立 PM 文档存放规范
    • 验收:目录存在,CHANGELOG.md 已初始化
    • 状态:已完成
  • TASK-DOC-002:生成 pmdocs/0-req-RSMS.md(需求文档)

    • 目标:固化需求范围、角色定义、状态机、NFR、验收标准
    • 映射REQ-AUTH~REQ-SYS, NFR-, AC-
    • 验收:文档已创建,内容覆盖全部 REQ 编号
    • 状态:已完成
  • TASK-DOC-003:生成 pmdocs/1-prd-RSMS.md(产品需求文档)

    • 目标:固化功能清单、UI/UX 规范、公共组件规划、版本规划
    • 映射PRD-FUNC-001018SCENE-001004
    • 验收:文档已创建,公共组件规划表已填充
    • 状态:已完成
  • TASK-DOC-004:生成本文档 pmdocs/2-task-RSMS.md

    • 目标:任务拆分、编号、依赖、验收标准
    • 映射:所有 REQ、PRD-FUNC
    • 验收:本文档已创建,所有任务有验收标准
    • 状态:已完成
  • TASK-DOC-005:创建 run.md(运行手册)

    • 目标:固化安装、启动、构建、迁移命令
    • 依赖TASK-DOC-004
    • 验收run.md 存在且所有命令可执行
    • 状态:已完成

阶段 1:前端模块化重构

1.1 架构重构

  • TASK-FE-001:创建前端目录结构

    • 目标:将单文件 App.tsx 拆分为模块化目录
    • 依赖TASK-DOC-005run.md 中的构建命令验证)
    • 验收:目录结构创建完成,import 路径调整后应用能正常启动
    • 状态:已完成
  • TASK-FE-002:抽取 Layout 组件

    • 目标PageLayoutSidebarTopBar 独立
    • 验收App.tsx 中 Layout 部分替换为 <PageLayout>,功能行为不变
    • 状态:已完成
  • TASK-FE-003:抽取 UI 基础组件

    • 目标StatusBadgeEmptyStateLoadingBar 独立为文件
    • 验收:各组件独立导出,App.tsx 中的内联版本替换为 import
    • 状态:已完成
  • TASK-FE-004:抽取 PageHeading / PanelHeader / MetricCard

    • 目标:复用组件独立文件
    • 验收:复用点替换为 import,Props 接口独立导出
    • 状态:已完成
  • TASK-FE-005:抽取数据展示组件

    • 目标RecordTable(含 review / compact 模式)独立
    • 验收:工作记录页、审核中心、档案页均使用同一组件
    • 状态:已完成
  • TASK-FE-006:抽取领域组件

    • 目标CreateRecordModalRecordDrawer 独立为 modals/ 文件
    • 验收:新建和详情交互行为与重构前一致
    • 状态:已完成
  • TASK-FE-007:抽取页面组件

    • 目标:每个页面(Dashboard / WorkList / ReviewCenter / People / Stations / Archive / Notices)独立文件
    • 验收App.tsx 变为路由级条件渲染,所有页面功能可用
    • 状态:已完成
  • TASK-FE-009:创建 Context(角色与 Toast

    • 目标RoleContext 管理当前角色,ToastContext 管理全局提示
    • 验收:全局 Toast 正常工作,角色切换后所有页面响应正确
    • 状态:已完成
  • TASK-FE-010:抽取 FilterBar 组件

    • 目标FilterBar(搜索 + 筛选下拉 + 重置)抽象为可复用组合组件
    • 验收:工作记录页和人员管理页使用同一 FilterBar
    • 状态:已完成
  • TASK-FE-011:抽取 Pagination 组件

    • 目标:分页组件(当前 MVP 暂不使用,但预留)
    • 验收:组件存在,数据量大时分页可用
    • 状态:已完成
  • TASK-FE-012:样式模块化

    • 目标:将 styles.css 按组件/页面拆分,引入 CSS 变量文件
    • 验收:构建后样式与重构前一致,无布局错位
    • 状态:已完成
  • TASK-FE-013:构建验证

    • 目标npm run build 通过,npm run lint 无错误
    • 依赖TASK-FE-001 ~ TASK-FE-012 全部完成
    • 验收:构建产物正常,dist/ 输出正确
    • 状态:已完成(2026-08-01

1.2 功能增强

  • TASK-FE-014:人员管理增删改

    • 目标:总部可新增/编辑/停用人员;分站可编辑本站人员
    • 映射REQ-USER-001, REQ-USER-002
    • 依赖TASK-BE-006
    • 验收
      • 总部管理员可新增人员,填写姓名/站点/职务/入站时间后保存成功
      • 编辑后数据持久化,再次查询反映最新值
      • 停用后该人员不可登录(后端权限拦截)
    • 优先级P0
    • 状态:已完成(2026-08-01
  • TASK-FE-015:记者站管理增删改

    • 目标:总部可新增/编辑/停用记者站
    • 映射REQ-ORG-001, REQ-ORG-002
    • 依赖TASK-BE-007
    • 验收
      • 总部管理员可新增站点,填写名称/编码/地区/负责人后保存成功
      • 站点列表反映最新数据
    • 优先级P1
    • 状态:已完成(2026-08-01
  • TASK-FE-016:通知公告发布

    • 目标:总部可发布带附件的通知;用户可查看已读状态
    • 映射REQ-NOTICE-003, REQ-NOTICE-004
    • 依赖TASK-BE-008
    • 验收
      • 总部可创建通知,选择接收范围(全部/站点/角色)
      • 通知列表显示已读/未读统计
      • 重要通知需确认回执
    • 优先级P1
    • 状态:已完成(2026-08-01
  • TASK-FE-017:个人中心

    • 目标:用户查看/编辑个人资料、修改密码(模拟)
    • 映射REQ-HOME-004
    • 验收:个人资料页正常展示和编辑
    • 优先级P2
    • 状态:已完成(2026-08-01

阶段 2:后端扩展

2.1 API 扩展

  • TASK-BE-001:人员 CRUD API

    • 目标:新增 GET/POST /api/peoplePATCH /api/people/:idDELETE /api/people/:id
    • 映射REQ-USER-001~003
    • 依赖TASK-BE-005(数据库迁移)
    • 接口契约
      • GET /api/people?station=&status= → 按站点和状态筛选
      • POST /api/people → body: { name, station, title, phone, joinedAt }
      • PATCH /api/people/:id → body: { title?, status?, phone? }
    • 验收:curl 测试全部接口返回正确状态码和数据
    • 状态:已完成(2026-08-01
  • TASK-BE-002:记者站 CRUD API

    • 目标:新增 GET/POST /api/stationsPATCH /api/stations/:id
    • 映射REQ-ORG-001, REQ-ORG-002
    • 依赖TASK-BE-005
    • 验收:同上
    • 状态:已完成(2026-08-01
  • TASK-BE-003:通知公告 API

    • 目标:新增 GET/POST /api/noticesPATCH /api/notices/:idGET /api/notices/:id/receipts
    • 映射REQ-NOTICE-001~004
    • 验收
      • 总部发布通知后,其他角色可见
      • 已读回执记录正确
    • 状态:已完成(2026-08-01
  • TASK-BE-004:数据统计 API

    • 目标:新增 GET /api/stats/overviewGET /api/stats/recordsGET /api/stats/scores
    • 映射REQ-STAT-001~003
    • 验收
      • 总部返回全国维度统计
      • 分站返回本站维度统计
      • 记者返回本人维度统计
    • 状态:已完成(2026-08-01
  • TASK-BE-005:数据库迁移脚本

    • 目标:将 inline schema 改为独立 migration 文件 + runner
    • 依赖:无
    • 验收
      • npm run db:migrate 执行成功
      • npm run db:seed 可重新初始化数据
      • npm run db:reset 清空后重新迁移
    • 优先级P0
    • 状态:已完成(2026-08-01

2.2 数据库迁移

  • TASK-BE-006people 表迁移

    • 文件migrations/003_create_people.sql
    • 状态:已完成(2026-08-01
  • TASK-BE-007stations 表迁移

    • 文件migrations/004_create_stations.sql
    • 状态:已完成(2026-08-01
  • TASK-BE-008noticesnotice_receipts 表迁移

    • 文件migrations/005_create_notices.sql
    • 状态:已完成(2026-08-01
  • TASK-BE-009audit_logs 表索引优化

    • 文件migrations/006_optimize_indexes.sql
    • 状态:已完成(2026-08-01

2.3 后端测试

  • TASK-BE-010API 接口集成测试
    • 目标:使用 Node.js + Jest/Supertest 对核心接口写集成测试
    • 覆盖
      • 角色隔离(headquarters / station / reporter 查询结果不同)
      • 审核状态流转(draft→station_review→headquarters_review→archived
      • 退回重提交
    • 验收:测试全部通过,CI 环境可运行
    • 优先级P1(不影响 MVP 上线)
    • 状态:已完成(2026-08-01)—— 34 项测试全部通过

阶段 3:考核规则配置(V0.2

  • TASK-RULE-001:考核规则数据模型

    • 目标:新增 rulesrule_itemsscores
    • 字段:规则 ID、版本、指标、计分公式、上限/下限、生效时间
    • 验收:规则可 CRUD,变更历史可查
    • 状态:已完成(2026-08-01)—— 迁移 007/008 已执行
  • TASK-RULE-002:规则可视化配置界面

    • 目标:总部可在后台配置考核规则
    • 验收:配置发布后,新提交记录使用新规则计分
    • 状态:已完成(2026-08-01)—— RulesPage、CreateRuleModal 已完成
  • TASK-RULE-003:规则试算

    • 目标:规则变更前用历史数据试算,输出预估得分变化
    • 验收:试算结果可展示,不影响实际数据
    • 状态:已完成(2026-08-01)—— scores/compute API 已实现试算逻辑
  • TASK-RULE-004:后端 rules/scores API

    • 目标rules CRUD、activatescores 查询、计算触发
    • 验收54 项集成测试全部通过
    • 状态:已完成(2026-08-01
  • TASK-RULE-005:前端考核配置页面

    • 目标RulesPage(列表+创建+编辑+激活);ScoresPage(评分结果+明细弹窗)
    • 验收tsc + vite build 通过,V0.2 新增 API 已接入
    • 状态:已完成(2026-08-01
  • TASK-RULE-008:集成测试(rules/scores API

    • 验收54 项测试全部通过
    • 状态:已完成(2026-08-01
  • TASK-RULE-010:前端构建验证

    • 验收npm run build 通过(tsc + vite build
    • 状态:已完成(2026-08-01
  • TASK-RULE-011:考核配置前端优化

    • 目标:规则预览 Drawer、指标试算交互、评分排行页面
    • 验收RulesPage 含规则预览 Drawer + 试算评分;LeaderboardPage 完整
    • 状态:已完成(2026-08-01
  • TASK-RULE-006:个人中心接入考核数据

    • 目标:当前登录记者/站点查看个人考核得分与排名
    • 验收:个人中心展示考核卡片,接入 stats/scores API
    • 状态:已完成(2026-08-01
  • TASK-RULE-007:积分排行榜

    • 目标:全站记者/站点考核得分排名
    • 验收LeaderboardPage 按记者/站点分组排行,切换周期
    • 状态:已完成(2026-08-01

阶段 4ADR 架构决策

  • TASK-ADR-001:生成 ADR-001(技术栈选型)

    • 目标:记录 React+Vite+Express+SQLite 选型理由
    • 内容:备选方案、最终决策、权衡分析
    • 状态:已完成(2026-08-01
  • TASK-ADR-002:生成 ADR-002(认证方案)

    • 目标:记录角色模拟方案及升级路径
    • 内容:当前方案(header 传参)、二期目标(JWT+真实认证)
    • 风险:header 可被伪造,仅适合内部演示
    • 状态:已完成(2026-08-01

阶段 5run.md 创建

  • TASK-DOC-005:创建 run.md
    • 目标:固化所有运行、构建、迁移、测试命令
    • 依赖TASK-BE-005(数据库迁移脚本完成)
    • 内容
      • 技术栈清单(Node.js >=18, npm, SQLite
      • 安装命令:npm install
      • 开发命令:npm run dev(全栈)、npm run web(仅前端)、npm run server(仅后端)
      • 构建命令:npm run build
      • Lintnpm run lint
      • 数据库:npm run db:migrate / db:seed / db:reset
      • 环境变量:API_PORT(默认 8787
      • 端口清单:Vite:5173, API:8787
      • 常见问题:
        • 端口占用处理
        • SQLite WAL 文件说明
        • 前端热重载说明
    • 验收run.md 存在,新人按文档可启动完整项目
    • 状态:已完成(2026-08-01

任务依赖关系图

TASK-DOC-004 ──▶ TASK-DOC-005
                    │
TASK-BE-005 ──┬──▶ TASK-FE-001 ──▶ TASK-FE-002 ──▶ TASK-FE-003 ──▶ TASK-FE-004
              │      │
              │      ▼
              │  TASK-FE-005 ──▶ TASK-FE-006 ──▶ TASK-FE-007
              │      │
              │      ▼
              │  TASK-FE-008 ──▶ TASK-FE-009 ──▶ TASK-FE-010
              │      │                        │
              │      ▼                        ▼
              │  TASK-FE-011 ──▶ TASK-FE-012 ──▶ TASK-FE-013
              │
              ├──▶ TASK-BE-001 ──▶ TASK-FE-014
              ├──▶ TASK-BE-002 ──▶ TASK-FE-015
              ├──▶ TASK-BE-003 ──▶ TASK-FE-016
              ├──▶ TASK-BE-004
              ├──▶ TASK-BE-006
              ├──▶ TASK-BE-007
              ├──▶ TASK-BE-008
              └──▶ TASK-BE-009

TASK-BE-010 ──(并行,不阻塞主要流程)

TASK-ADR-001, TASK-ADR-002 ──(随时可做)

优先级排序(建议执行顺序)

第一梯队(P0,必须完成)

  1. TASK-DOC-004 — 确认任务文档(本任务)
  2. TASK-DOC-005 — 创建 run.md
  3. TASK-FE-001 — 前端目录结构
  4. TASK-FE-002 — Layout 组件
  5. TASK-FE-005 — RecordTable 抽取
  6. TASK-FE-006 — CreateRecordModal / RecordDrawer 抽取
  7. TASK-FE-007 — 页面组件拆分
  8. TASK-FE-013 — 构建验证

第二梯队(P1MVP 完善)

  1. TASK-FE-014 — 人员管理增删改
  2. TASK-BE-005 — 数据库迁移脚本
  3. TASK-BE-006 — people 表迁移
  4. TASK-BE-001 — 人员 CRUD API
  5. TASK-BE-007 — stations 表迁移
  6. TASK-BE-002 — 记者站 CRUD API
  7. TASK-FE-015 — 记者站管理页面
  8. TASK-BE-008 — notices 表迁移
  9. TASK-BE-003 — 通知公告 API
  10. TASK-FE-016 — 通知发布页面
  11. TASK-BE-009 — 索引优化

第三梯队(P1/P2,增强功能)

  1. TASK-BE-004 — 数据统计 API
  2. TASK-FE-010 — FilterBar 抽取
  3. TASK-FE-011 — Pagination 抽取
  4. TASK-FE-017 — 个人中心
  5. TASK-BE-010 — 后端集成测试
  6. TASK-ADR-001 — ADR-001 补录
  7. TASK-ADR-002 — ADR-002 创建

第四梯队(V0.2 考核规则)

关联变更文档:pmdocs/changes/2026-08-01-001-V0.2考核规则配置.md 依赖:V0.1 MVP 全部完成(TASK-BE-010 集成测试通过)

阶段 A:数据模型与迁移

  1. TASK-RULE-001 — 创建 rules / rule_items 表(migration 007

    • 目标:新增 rules(考核规则)和 rule_items(指标项)两张表
    • 需求:CHG-20260801-001 四维度指标数据模型
    • 验收标准:migration 可执行,rollback 可逆,字段符合设计文档
    • 依赖:TASK-BE-005(迁移框架)
    • 阶段:A
  2. TASK-RULE-002 — 创建 scores 表(migration 008

    • 目标:新增 scores(评分结果)表,关联 rules / work_records
    • 需求:CHG-20260801-001 评分结果存储
    • 验收标准:migration 可执行,rollback 可逆,索引正确
    • 依赖:TASK-RULE-001
    • 阶段:A
  3. TASK-RULE-003 — 插入默认考核指标模板(migration 009 / seed

    • 目标:seed 默认考核指标模板(6 个指标覆盖数量/质量/时效/合规四维度)
    • 需求:CHG-20260801-001 默认指标映射
    • 验收标准:seed 数据可查询,rules 表有 1 条草稿状态记录
    • 依赖:TASK-RULE-001
    • 阶段:A

阶段 B:后端 API

  1. TASK-RULE-004 — 规则 CRUD API

    • 目标:实现 /api/rules(列表)、/api/rules/:id(详情)、POST(创建)、PATCH(更新)、POST /api/rules/:id/activate(激活)
    • 需求:CHG-20260801-001 API 接口规划
    • 验收标准:headquarters 角色可操作,激活后旧版本自动归档
    • 依赖:TASK-RULE-001
    • 阶段:B
  2. TASK-RULE-005 — 评分 API + 自动计算引擎

    • 目标:实现 /api/scores(列表/详情)、POST /api/scores/compute(触发计算)
    • 需求:CHG-20260801-001 评分计算流程(指标聚合 → 加权求和 → 结果记录)
    • 验收标准:手动触发可对指定记者/站点/周期计算总分及维度分
    • 依赖:TASK-RULE-002, TASK-RULE-003
    • 阶段:B

阶段 C:前端

  1. TASK-RULE-006 — 考核规则管理页面

    • 目标:总部角色可查看规则列表、创建规则(含指标项编辑)、激活规则
    • 需求:CHG-20260801-001 前端配置界面
    • 验收标准:规则列表/编辑器/激活流程完整,加载+空态+错误状态覆盖
    • 依赖:TASK-RULE-004
    • 阶段:C
  2. TASK-RULE-007 — 评分结果查看页面

    • 目标:总部可按记者/站点/周期查看评分结果,含各维度得分明细
    • 需求:CHG-20260801-001 评分结果展示
    • 验收标准:表格+筛选+分页完整,评分明细可展开
    • 依赖:TASK-RULE-005
    • 阶段:C

阶段 D:集成与文档

  1. TASK-RULE-008 — 考核规则 API 集成测试

    • 目标:Jest + Supertest 覆盖 rules/scores 全部 API 端点
    • 验收标准:覆盖率 > 90%,角色权限隔离验证
    • 依赖:TASK-RULE-004, TASK-RULE-005
    • 阶段:D
  2. TASK-RULE-009run.md 更新(V0.2 数据库结构 + API)

    • 目标:补充 V0.2 新增表结构、API 接口到 run.md
    • 依赖:TASK-RULE-001, TASK-RULE-002, TASK-RULE-004, TASK-RULE-005
    • 阶段:D
  3. TASK-RULE-010 — 前端构建验证

    • 目标:npm run build 通过,无新增 lint 错误
    • 依赖:TASK-RULE-006, TASK-RULE-007
    • 阶段:D

测试策略

任务 测试类型 工具 覆盖目标
TASK-FE-013 构建验证 npm run build 编译通过,类型正确
TASK-FE-001~012 回归测试 手工 重构后所有交互行为不变
TASK-BE-001~004 集成测试 Jest + Supertest 接口状态码、权限隔离、数据正确性
TASK-BE-005~009 数据库测试 手工 + SQL migration 可执行、seed 正确
TASK-RULE-008 集成测试 Jest + Supertest rules/scores API,覆盖率 > 90%
TASK-RULE-010 构建验证 npm run build V0.2 前端编译通过

进度记录

日期 完成任务 备注
2026-08-01 TASK-DOC-001~003 规范文档目录和 CHANGELOG 已创建
2026-08-01 TASK-DOC-002 pmdocs/0-req-RSMS.md 已创建
2026-08-01 TASK-DOC-003 pmdocs/1-prd-RSMS.md 已创建
2026-08-01 TASK-DOC-004 pmdocs/2-task-RSMS.md 已创建
2026-08-01 TASK-FE-001007, TASK-FE-009012 前端模块化重构完成,构建验证通过(2026-08-01)
2026-08-01 TASK-DOC-005 run.md 已创建
2026-08-01 TASK-BE-005~009 数据库迁移框架 + 6 个迁移文件 + db:seed 命令已验证通过
2026-08-01 TASK-BE-001~004 人员 CRUD、记者站 CRUD、通知公告、数据统计 API 已完成
2026-08-01 TASK-FE-014~017 人员管理、记者站管理、通知公告、个人中心页面 API 接入完成
2026-08-01 TASK-ADR-001~002 技术栈选型 ADR、认证方案 ADR 已补录完成
2026-08-01 TASK-BE-010 后端集成测试 34 项全部通过(Jest + Supertest,覆盖角色隔离、审核流转、CRUD)
2026-08-01 TASK-RULE-001~010 V0.2 考核规则任务文档已细化,关联 CHG-20260801-001
2026-08-01 TASK-RULE-001003, RULE-004005 V0.2 考核规则后端 API + 前端页面已完成,集成测试 54 项全部通过,构建验证通过
2026-08-01 TASK-RULE-009 run.md 已更新(测试命令、迁移管理、V0.2 表结构与 API 文档)
2026-08-01 TASK-RULE-006/011 个人中心接入考核数据 + 考核配置前端优化(含规则预览 Drawer + 试算评分 + LeaderboardPage