# 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` = P0,`Should` = P1,`Could` = 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 SC,Songti 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 - **图表**:Recharts(AreaChart) - **图标**:Lucide React - **样式**:纯 CSS(含响应式) - **状态**:React useState / useEffect(当前),Redux Toolkit(预留) - **路由**:条件渲染(当前),React Router(后续) ### 9.2 后端 - **运行时**:Node.js - **框架**:Express.js - **数据库**:SQLite(WAL 模式) - **进程**:`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 | 已决策 |