Files
ReporterStationManagementSy…/pmdocs/changes/2026-08-01-001-V0.2考核规则配置.md
2026-08-01 23:09:49 +08:00

5.4 KiB
Raw Permalink Blame History

// 考核规则数据模型设计 // 基于当前已有表结构(work_records, audit_logs, people, stations)和业务逻辑推导

一、设计背景

V0.1 工作记录审核流程中,每条记录由分站初审(station_review)、总部终审(headquarters_review)后归档(archived),分数由审核人手动给定。 V0.2 需要将分数评定从"手动输入"改为"规则驱动":总部配置考核规则(指标项、权重、上限下限),系统根据规则自动计算得分。

二、核心实体

2.1 考核规则(rules

字段 类型 说明
id INTEGER PK 自增 ID
code TEXT UNIQUE 规则编码,如 RULE_2026_01
name TEXT NOT NULL 规则名称,如"2026年第三季度考核规则"
description TEXT 规则说明
period_type TEXT NOT NULL 考核周期类型:monthly / quarterly / annual
period_start TEXT 规则生效开始日期(YYYY-MM-DD)
period_end TEXT 规则生效结束日期(YYYY-MM-DD)
status TEXT NOT NULL 规则状态:draft / active / archived
created_by TEXT 创建人姓名
created_at TEXT 创建时间
updated_at TEXT 更新时间

2.2 考核指标项(rule_items

字段 类型 说明
id INTEGER PK 自增 ID
rule_id INTEGER FK 所属规则 ID
category TEXT NOT NULL 指标类别:quality(质量)/ quantity(数量)/ efficiency(时效)/ compliance(合规)
name TEXT NOT NULL 指标名称,如"原创报道数量"
metric_key TEXT NOT NULL 指标计算字段(映射到 work_records 的字段或聚合方式)
weight REAL NOT NULL 权重(0~1,所有 rule_item 权重之和应为 1
min_score REAL DEFAULT 0 最低分
max_score REAL DEFAULT 100 最高分
formula_type TEXT NOT NULL 计算方式:count(计数)/ rate(比率)/ avg_score(均分)/ custom(自定义公式)
formula_params TEXT JSON,公式参数,如 {"threshold": 10, "above_bonus": 5}
display_order INTEGER DEFAULT 0 显示顺序
created_at TEXT 创建时间

2.3 评分结果(scores

字段 类型 说明
id INTEGER PK 自增 ID
code TEXT UNIQUE 评分编码,如 SCORE_2026Q1_BJ_001
rule_id INTEGER FK 使用的规则 ID
record_id TEXT FK 工作记录 ID
reporter TEXT NOT NULL 记者姓名
station TEXT NOT NULL 站点名称
period TEXT NOT NULL 考核周期标识,如 2026-Q1
total_score REAL 总分
quality_score REAL 质量维度得分
quantity_score REAL 数量维度得分
efficiency_score REAL 时效维度得分
compliance_score REAL 合规维度得分
item_details TEXT JSON,每项指标的详细得分
computed_at TEXT 计算时间
created_at TEXT 创建时间

三、评分计算流程

  1. 规则激活:总部在后台发布规则,rules.status = 'active',设置 period_start / period_end
  2. 触发评分:工作记录从 returned 重新提交后,或在考核周期结束时批量计算。
  3. 指标聚合:对指定记者、站点、周期内的所有 archived 状态记录,按 rule_items.metric_key 聚合。
  4. 加权求和(\text{total} = \sum_i \text{weight}_i \times \text{score}_i)
  5. 结果记录:写入 scores 表,同时更新 work_records.score 字段。

四、API 接口规划

方法 路径 说明
GET /api/rules 查询规则列表
GET /api/rules/:id 查询规则详情(含指标项)
POST /api/rules 创建规则(含指标项)
PATCH /api/rules/:id 更新规则
POST /api/rules/:id/activate 激活规则
GET /api/scores 查询评分结果(按记者/站点/周期筛选)
GET /api/scores/:id 评分详情
POST /api/scores/compute 触发评分计算

五、Migration 规划

  • migrations/007_create_rules.sqlrulesrule_items
  • migrations/008_create_scores.sqlscores
  • migrations/009_seed_default_rules.sql — 插入默认考核指标模板

六、前端配置界面

总部角色可访问"考核规则管理"页面:

  • 规则列表:显示规则名称、周期类型、状态、发布时间
  • 规则编辑器:拖拽排序指标项,设置权重滑块,预览计算结果
  • 规则试算:用历史数据模拟评分,预估变化幅度

七、待确认事项

  • 考核周期如何定义:按日历季度,还是自定义起止日期? → 日历季度 + 自定义起止日期两种都支持period_type 字段:monthly / quarterly / annual / custom
  • 指标计算字段(metric_key)具体映射到哪些 work_records 字段? → 见下表:
    • 数量:COUNT(*) 按 reporter+station+period 聚合
    • 质量:AVG(score)work_recordsaudit_logs 聚合
    • 时效:occurred_datecreated_at 差值判断
    • 合规:status = 'archived' 占比
  • 规则激活后,历史已评分记录是否重新计算? → 不自动重算。已归档记录保留原分;新增记录使用激活规则;提供手动重算入口
  • 是否支持规则版本管理(每次修改生成新版本)? → 编辑生成新版本。旧版本状态变为 archived,新版本为 draft;已有 scores 记录绑定旧规则版本,不受影响