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

12 KiB
Raw Permalink Blame History

PRD-RSMS-001:全国记者站管理系统产品需求文档

文档版本:v1.0 状态:待确认 编制日期:2026-08-01 项目缩写:RSMS

1. 产品概述与定位

全国记者站管理系统(RSMS)是一个面向全国 37 个记者站的管理平台,服务于总部管理员、分站负责人和记者三类角色。系统以工作记录填报和分级审核为业务核心,构建统一的人员、考核、档案和通知管理体系。

1.1 产品定位

  • 目标:替代线下/Excel 管理方式,实现业务线上化、考核标准化、数据可追溯。
  • 用户:总部约 5-10 名管理员;37 个分站各 1-2 名负责人;约 500 名记者。
  • 核心价值:减少重复填报、统一审核标准、提升考核透明度、积累可分析数据。

1.2 成功指标

指标 目标值
工作记录线上填报率 >= 95%
审核平均处理时长 <= 24 小时
考核数据可追溯覆盖率 100%
系统可用性 >= 99.5%

2. 用户画像与核心场景

场景 1:记者填报工作记录(SCENE-001)

人物:林晓,北京记者站记者,2021 年入站。 痛点:此前通过微信群或邮件提交,格式不统一,审核进度靠追问,档案整理靠人工。 解法:移动/PC 端随时填报,自动进入审核流,实时看到审核状态,归档记录自动进入个人档案。

场景 2:分站负责人初审(SCENE-002)

人物:苏明远,北京记者站负责人。 痛点:接收材料格式混乱,退回修改反复沟通,统计靠人工汇总。 解法:统一格式接收,核验后一键通过或退回,退回时填写意见,作者修改后自动推送,全站数据自动汇总。

场景 3:总部管理员复核与监管(SCENE-003)

人物:林致远,总部考核管理员。 痛点:37 个站数据分散,统计口径不一致,复核工作量大,考核结果解释成本高。 解法:分类复核(高价值逐条 + 普通抽查),自动计分和排名,审核轨迹可查,报表一键导出。

场景 4:记者查询个人档案(SCENE-004)

人物:林晓,想查看自己本季度的考核得分和全年排名。 痛点:历史记录分散在各个群聊和文件中,不知道自己排名。 解法:个人档案聚合全部归档记录,支持按类型/时间筛选,显示年度汇总和趋势。


3. 功能清单与优先级

使用 MoSCoW 标注:Must = P0Should = P1Could = P2。

编号 功能 优先级 映射需求
PRD-FUNC-001 三角色模拟登录与权限隔离 Must REQ-AUTH-001~003
PRD-FUNC-002 工作记录新建(7 种类型) Must REQ-WORK-001~005
PRD-FUNC-003 工作记录列表(搜索/筛选/分页) Must REQ-WORK-002
PRD-FUNC-004 分站初审(通过/退回/评分) Must REQ-ASSESS-001~002
PRD-FUNC-005 总部复核(确认/调整/退回) Must REQ-ASSESS-003~005
PRD-FUNC-006 审核流程留痕(audit_log Must REQ-ASSESS-004
PRD-FUNC-007 个人电子档案 Must REQ-PROFILE-001~003
PRD-FUNC-008 工作台仪表盘(指标卡+趋势图+排名) Must REQ-STAT-001~003
PRD-FUNC-009 通知公告(只读) Must REQ-NOTICE-001~002
PRD-FUNC-010 审核中心(待办聚合) Must REQ-NOTICE-002
PRD-FUNC-011 人员管理(增删改查) Must REQ-USER-001~003
PRD-FUNC-012 记者站管理(增删改查) Must REQ-ORG-001
PRD-FUNC-013 通知公告发布(富文本/附件/回执) Should REQ-NOTICE-003~004
PRD-FUNC-014 考核规则可视化配置 Should REQ-ASSESS-006
PRD-FUNC-015 数据统计报表(导出) Should REQ-STAT-001~003
PRD-FUNC-016 申诉与复议 Could
PRD-FUNC-017 全国地图分布 Could REQ-ORG-003
PRD-FUNC-018 个人能力画像 Could

4. 关键流程

4.1 工作记录全生命周期

记者新建 → 保存草稿 / 直接提交
           ↓提交
     待分站审核 ← 分站负责人处理
           │通过              │退回
           ↓                  ↓
     待总部复核           已退回 → 记者修改 → 重新提交
           │通过
           ↓
     已归档 → 自动进入个人档案 + 统计汇总

4.2 数据权限控制流

请求进入 → 后端读取 x-user-role header
           ↓
     headquarters: 返回全国全部数据
     station:      WHERE station = '所属站'
     reporter:     WHERE reporter = '本人姓名'

5. 角色权限矩阵

功能 总部管理员 分站负责人 记者
站点管理(查) 全部 本站 本站
站点管理(增删改)
人员管理(查) 全部 本站 本人
人员管理(增删改) 全部 本站
工作记录(填报) 否(可代填)
工作记录(查看) 全部 本站 本人
分站初审 是(本站)
总部复核
电子档案(查看) 全部 本站 本人
通知公告(发布)
通知公告(查看) 全部 本站 本人
统计报表(全局)
统计报表(本站)
统计成绩(本人)
系统设置

6. UI/UX 设计原则

6.1 整体风格

  • 配色:主色 #b42318(红),强调色 #4ba66a(绿/成功),背景 #f5f4f1(米白)
  • 字体Noto Sans SCSongti SC(标题)
  • 图标Lucide Icons
  • 布局:侧边栏固定 238px + 顶部栏 + 内容区
  • 交互Toast 反馈、Drawer 侧滑详情、Modal 弹窗表单

6.2 页面导航结构

工作台(dashboard)
  ├─ 指标卡(本月记录 / 待处理 / 归档 / 得分)
  ├─ 趋势图(近6月工作量 AreaChart)
  ├─ 排名(站点/类型)
  └─ 待办(待审核 / 被退回 / 截止提醒)

工作记录(work)
  ├─ 搜索 + 状态筛选 + 类型筛选
  └─ 记录列表(点击打开详情抽屉)

审核中心(review)[总部/分站]
  ├─ 审核摘要(待办数 / 已处理 / 平均时长)
  └─ 待审列表(通过 / 退回)

人员管理(people)[总部/分站]
  └─ 人员列表 + 筛选 + 新增

记者站管理(stations)[总部]
  └─ 站点卡片网格

电子档案(archive)
  └─ 个人档案聚合页 + 历史归档列表

通知公告(notices)
  └─ 公告列表 + 详情侧边

6.3 统一交互模式

场景 组件 说明
列表加载中 顶部进度条动画 红色 2px 细条
列表为空 EmptyState + 对应图标 居中文字提示
操作失败 Toast 弹窗 2.4s 自动消失
操作成功 Toast 弹窗 + 图标 绿色勾选图标
表单校验错误 输入框红框 + 错误提示 实时校验
危险操作(删除/退回) ConfirmDialog 或二次确认 明确后果
分页 无(当前为全量加载) 列表数据量小
搜索防抖 300ms debounce 工作记录搜索

6.4 响应式断点

断点 布局变化
> 1100px 标准布局(指标4列、站点3列)
761-1100px 指标2列、站点2列、侧栏不变
<= 760px 侧栏变为抽屉,汉堡菜单触发,指标2列,站点1列,表单全宽
<= 430px 指标2列,保持最小可读性

7. 公共组件抽取规划

组件 类型 适用场景 输入状态 输出事件 使用页面 优先级
StatusBadge 基础组件 工作记录状态展示 status: WorkStatus 全局 Must(已存在于代码)
MetricCard 基础组件 指标数据展示 icon / label / value / delta / color 工作台 Must(已存在)
PanelHeader 组合组件 面板标题栏 title / subtitle / action / onAction onAction 工作台/审核/档案 Must(已存在)
RecordTable 领域组件 工作记录列表 records / onSelect / compact / review onSelect 工作/审核/档案 Must(已存在)
RecordDrawer 领域组件 记录详情+审核 record / role / onUpdate onUpdate 工作/审核 Must(已存在)
CreateModal 领域组件 新建工作记录 onClose / onSubmit onSubmit 工作台/工作记录 Must(已存在)
FilterBar 组合组件 列表筛选栏 searchPlaceholder / filters / onFilter onFilter / onReset 工作记录/人员 Should
Pagination 基础组件 列表分页 page / pageSize / total onChange 列表页面 Could(当前 MVP 未分页)
NotificationBadge 基础组件 导航待办角标 count 侧边栏导航 Must(已存在)
EmptyState 基础组件 空状态展示 icon / text 列表空时 Must(已存在)
Toast 基础组件 操作反馈 message(自动消失) 全局 Must(已存在)
PageHeading 组合组件 页面标题区 title / description / action / onAction onAction 所有内容页 Should(已存在但未抽取)
RoleSwitcher 领域组件 角色模拟切换 role / onChange onChange 顶部栏 Must(已存在)

8. 版本规划

8.1 MVP(当前版本 V0.1

已实现(代码层面):

  • 角色模拟登录(header 传参)
  • 工作记录 CRUD(前端 + 后端 API)
  • 分站初审 / 总部复核流程
  • 审核留痕(audit_log
  • 7 个页面/组件
  • SQLite 数据库
  • Express API 服务

待补齐(文档层面):

  • pmdocs/0-req-RSMS.md(本文档)
  • pmdocs/1-prd-RSMS.md(本文档)
  • pmdocs/2-task-RSMS.md
  • run.md
  • 前端模块化重构

8.2 二期

  • 通知公告发布(富文本 + 附件 + 回执)
  • 人员管理增删改(当前仅展示)
  • 记者站管理增删改(当前仅展示)
  • 考核规则配置界面
  • 数据统计专项页面
  • 个人中心功能完善

8.3 三期

  • 申诉与复议流程
  • 全国地图记者站分布
  • 个人能力画像
  • 外部系统集成
  • 自动化测试

9. 技术架构概览

9.1 前端

  • 框架React 18 + TypeScript
  • 构建Vite
  • 图表RechartsAreaChart
  • 图标Lucide React
  • 样式:纯 CSS(含响应式)
  • 状态React useState / useEffect(当前),Redux Toolkit(预留)
  • 路由:条件渲染(当前),React Router(后续)

9.2 后端

  • 运行时Node.js
  • 框架Express.js
  • 数据库SQLiteWAL 模式)
  • 进程node --watch 开发热重载

9.3 API 概览

方法 路径 权限 说明
GET /api/health 公开 健康检查
GET /api/records 角色隔离 查询工作记录
POST /api/records reporter/station 新建记录
PATCH /api/records/:id/review station/hq 审核操作
GET /api/records/:id/audit 角色隔离 流转记录

10. 风险与依赖

风险 影响 缓解措施
SQLite 并发写入冲突 WAL 模式已启用;高并发时考虑迁移 PostgreSQL
前端单文件维护性差 二期重构为模块化结构
无自动化测试 二期引入 Vitest + Playwright
角色模拟安全性不足 二期接入真实认证体系
考核规则硬编码 二期实现规则可视化配置

11. 关键决策记录索引

决策 ADR 编号 状态
前端技术栈(React+Vite ADR-001 已决策
后端技术栈(Express+SQLite ADR-001 已决策
认证方案(角色模拟) ADR-002 待确认
数据库选型(SQLite ADR-001 已决策