20 KiB
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-001
018,SCENE-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-005(run.md 中的构建命令验证)
- 验收:目录结构创建完成,import 路径调整后应用能正常启动
- 状态:已完成
- 目标:将单文件
-
TASK-FE-002:抽取 Layout 组件
- 目标:
PageLayout、Sidebar、TopBar独立 - 验收:
App.tsx中 Layout 部分替换为<PageLayout>,功能行为不变 - 状态:已完成
- 目标:
-
TASK-FE-003:抽取 UI 基础组件
- 目标:
StatusBadge、EmptyState、LoadingBar独立为文件 - 验收:各组件独立导出,App.tsx 中的内联版本替换为 import
- 状态:已完成
- 目标:
-
TASK-FE-004:抽取 PageHeading / PanelHeader / MetricCard
- 目标:复用组件独立文件
- 验收:复用点替换为 import,Props 接口独立导出
- 状态:已完成
-
TASK-FE-005:抽取数据展示组件
- 目标:
RecordTable(含review/compact模式)独立 - 验收:工作记录页、审核中心、档案页均使用同一组件
- 状态:已完成
- 目标:
-
TASK-FE-006:抽取领域组件
- 目标:
CreateRecordModal、RecordDrawer独立为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/people、PATCH /api/people/:id、DELETE /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/stations、PATCH /api/stations/:id - 映射:REQ-ORG-001, REQ-ORG-002
- 依赖:TASK-BE-005
- 验收:同上
- 状态:已完成(2026-08-01)
- 目标:新增
-
TASK-BE-003:通知公告 API
- 目标:新增
GET/POST /api/notices、PATCH /api/notices/:id、GET /api/notices/:id/receipts - 映射:REQ-NOTICE-001~004
- 验收:
- 总部发布通知后,其他角色可见
- 已读回执记录正确
- 状态:已完成(2026-08-01)
- 目标:新增
-
TASK-BE-004:数据统计 API
- 目标:新增
GET /api/stats/overview、GET /api/stats/records、GET /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-006:
people表迁移- 文件:
migrations/003_create_people.sql - 状态:已完成(2026-08-01)
- 文件:
-
TASK-BE-007:
stations表迁移- 文件:
migrations/004_create_stations.sql - 状态:已完成(2026-08-01)
- 文件:
-
TASK-BE-008:
notices和notice_receipts表迁移- 文件:
migrations/005_create_notices.sql - 状态:已完成(2026-08-01)
- 文件:
-
TASK-BE-009:
audit_logs表索引优化- 文件:
migrations/006_optimize_indexes.sql - 状态:已完成(2026-08-01)
- 文件:
2.3 后端测试
- TASK-BE-010:API 接口集成测试
- 目标:使用 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:考核规则数据模型
- 目标:新增
rules、rule_items、scores表 - 字段:规则 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、activate;scores 查询、计算触发
- 验收: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)
阶段 4:ADR 架构决策
-
TASK-ADR-001:生成 ADR-001(技术栈选型)
- 目标:记录 React+Vite+Express+SQLite 选型理由
- 内容:备选方案、最终决策、权衡分析
- 状态:已完成(2026-08-01)
-
TASK-ADR-002:生成 ADR-002(认证方案)
- 目标:记录角色模拟方案及升级路径
- 内容:当前方案(header 传参)、二期目标(JWT+真实认证)
- 风险:header 可被伪造,仅适合内部演示
- 状态:已完成(2026-08-01)
阶段 5:run.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 - Lint:
npm 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,必须完成)
TASK-DOC-004— 确认任务文档(本任务)TASK-DOC-005— 创建run.mdTASK-FE-001— 前端目录结构TASK-FE-002— Layout 组件TASK-FE-005— RecordTable 抽取TASK-FE-006— CreateRecordModal / RecordDrawer 抽取TASK-FE-007— 页面组件拆分TASK-FE-013— 构建验证
第二梯队(P1,MVP 完善)
TASK-FE-014— 人员管理增删改TASK-BE-005— 数据库迁移脚本TASK-BE-006— people 表迁移TASK-BE-001— 人员 CRUD APITASK-BE-007— stations 表迁移TASK-BE-002— 记者站 CRUD APITASK-FE-015— 记者站管理页面TASK-BE-008— notices 表迁移TASK-BE-003— 通知公告 APITASK-FE-016— 通知发布页面TASK-BE-009— 索引优化
第三梯队(P1/P2,增强功能)
TASK-BE-004— 数据统计 APITASK-FE-010— FilterBar 抽取TASK-FE-011— Pagination 抽取TASK-FE-017— 个人中心TASK-BE-010— 后端集成测试TASK-ADR-001— ADR-001 补录TASK-ADR-002— ADR-002 创建
第四梯队(V0.2 考核规则)
关联变更文档:
pmdocs/changes/2026-08-01-001-V0.2考核规则配置.md依赖:V0.1 MVP 全部完成(TASK-BE-010 集成测试通过)
阶段 A:数据模型与迁移
-
TASK-RULE-001— 创建 rules / rule_items 表(migration 007)- 目标:新增
rules(考核规则)和rule_items(指标项)两张表 - 需求:CHG-20260801-001 四维度指标数据模型
- 验收标准:migration 可执行,rollback 可逆,字段符合设计文档
- 依赖:TASK-BE-005(迁移框架)
- 阶段:A
- 目标:新增
-
TASK-RULE-002— 创建 scores 表(migration 008)- 目标:新增
scores(评分结果)表,关联 rules / work_records - 需求:CHG-20260801-001 评分结果存储
- 验收标准:migration 可执行,rollback 可逆,索引正确
- 依赖:TASK-RULE-001
- 阶段:A
- 目标:新增
-
TASK-RULE-003— 插入默认考核指标模板(migration 009 / seed)- 目标:seed 默认考核指标模板(6 个指标覆盖数量/质量/时效/合规四维度)
- 需求:CHG-20260801-001 默认指标映射
- 验收标准:seed 数据可查询,
rules表有 1 条草稿状态记录 - 依赖:TASK-RULE-001
- 阶段:A
阶段 B:后端 API
-
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
- 目标:实现
-
TASK-RULE-005— 评分 API + 自动计算引擎- 目标:实现
/api/scores(列表/详情)、POST /api/scores/compute(触发计算) - 需求:CHG-20260801-001 评分计算流程(指标聚合 → 加权求和 → 结果记录)
- 验收标准:手动触发可对指定记者/站点/周期计算总分及维度分
- 依赖:TASK-RULE-002, TASK-RULE-003
- 阶段:B
- 目标:实现
阶段 C:前端
-
TASK-RULE-006— 考核规则管理页面- 目标:总部角色可查看规则列表、创建规则(含指标项编辑)、激活规则
- 需求:CHG-20260801-001 前端配置界面
- 验收标准:规则列表/编辑器/激活流程完整,加载+空态+错误状态覆盖
- 依赖:TASK-RULE-004
- 阶段:C
-
TASK-RULE-007— 评分结果查看页面- 目标:总部可按记者/站点/周期查看评分结果,含各维度得分明细
- 需求:CHG-20260801-001 评分结果展示
- 验收标准:表格+筛选+分页完整,评分明细可展开
- 依赖:TASK-RULE-005
- 阶段:C
阶段 D:集成与文档
-
TASK-RULE-008— 考核规则 API 集成测试- 目标:Jest + Supertest 覆盖 rules/scores 全部 API 端点
- 验收标准:覆盖率 > 90%,角色权限隔离验证
- 依赖:TASK-RULE-004, TASK-RULE-005
- 阶段:D
-
TASK-RULE-009—run.md更新(V0.2 数据库结构 + API)- 目标:补充 V0.2 新增表结构、API 接口到
run.md - 依赖:TASK-RULE-001, TASK-RULE-002, TASK-RULE-004, TASK-RULE-005
- 阶段:D
- 目标:补充 V0.2 新增表结构、API 接口到
-
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-001 |
前端模块化重构完成,构建验证通过(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-001 |
V0.2 考核规则后端 API + 前端页面已完成,集成测试 54 项全部通过,构建验证通过 |
| 2026-08-01 | TASK-RULE-009 | run.md 已更新(测试命令、迁移管理、V0.2 表结构与 API 文档) |
| 2026-08-01 | TASK-RULE-006/011 | 个人中心接入考核数据 + 考核配置前端优化(含规则预览 Drawer + 试算评分 + LeaderboardPage) |