feat: add A-card operations frontend and backend foundation

This commit is contained in:
郑龙捷
2026-09-02 09:54:03 +08:00
parent 9badd3597f
commit ad71259ba5
106 changed files with 12461 additions and 1796 deletions
@@ -0,0 +1,154 @@
# A 卡原始监控指标——模型方表评估清单 V0.1
> 日期:2026-09-01
> 评估对象:模型方 `model_deploy` 数据库及待补监控结构。
> 目的:确认模型方能够提供哪些原始监控数据、通过哪些表提供,以及我方是否需要保留标准化月度快照。
## 1. 结论先行
模型方现有 `model_monitor_aggr` 只能部分承载 KS、PSI、IV 等标量指标,不能完整支撑 A 卡运维平台的月度监控、规则回放、报告和特征分布展示。
建议模型方提供 4 类结构化监控表或完全等价的数据结构:
1. `model_monitor_batch`:月度批次、修订和发布状态。
2. `model_monitor_result`:模型单月排序性、KS、PSI和样本量。
3. `model_monitor_feature_metric`:特征级IV、CSI及变化。
4. `model_monitor_distribution`:评分分箱和特征分箱分布。
以上数据应由模型计算任务自动写入,不由模型团队手工执行 SQL。
## 2. 模型方现有相关表
| 现有表 | 当前用途 | 可复用内容 | 不足 | 我方建议 |
|---|---|---|---|---|
| `model_deploy` | 模型部署主表 | `deployId`、模型名称、编码、状态、当前版本 | 缺业务模型大类、银行关系、通用模型等 | 作为模型主标识使用,不复制主表 |
| `model_version` | 模型版本 | 版本ID、版本号、版本名称、创建人、创建时间 | 缺迭代、陪跑、上线/下线和开发指标 | 作为版本主标识;缺失字段另补 |
| `model_details` | 模型详情 | 模型说明、输入/输出Schema | 不是月度监控数据 | 仅模型详情页读取 |
| `model_monitor_aggr` | 通用聚合指标 | `deployId/version/metricName/dimensionValue/valueNum/gmtCreated`;注释允许 `ks/psi/iv` | 无月份、批次、修订、发布状态、排序性、样本量、CSI、分箱结构 | 可继续保存运行聚合;不建议单独承担业务监控全量数据 |
| `model_monitor_call_log` | 模型调用原始日志 | 调用成功、耗时、节点、错误 | 属于服务运行监控,不是模型效果监控 | 不作为 A 卡月度监控来源 |
| `model_monitor_aggr_cursor` | 聚合器游标 | 聚合进度 | 纯技术状态 | 我方无需读取 |
## 3. 建议模型方提供的 4 张表
### 3.1 `model_monitor_batch`——监控批次
一行代表一次月度监控数据发布。
建议字段:
- `id BIGINT`:批次主键。
- `source_batch_no VARCHAR(128)`:模型方幂等批次号。
- `monitor_month DATE`:监控月份,固定当月1日。
- `revision_no INT`:同月份修订号。
- `status VARCHAR(24)``writing/published/failed/superseded`
- `expected_model_count/written_model_count`:预期和实际模型数。
- `feature_row_count/distribution_row_count`:特征和分箱行数。
- `checksum VARCHAR(64)`:批次校验和。
- `generated_at/published_at DATETIME`:计算和发布时间。
- `failed_reason VARCHAR(2000)`:失败原因。
关键约束:同一监控月份和修订号唯一;我方只读取 `published` 的最高修订。
### 3.2 `model_monitor_result`——模型单月监控结果
一行代表一个模型版本在一个月份的核心监控结果。
建议字段:
- `id BIGINT`:结果主键。
- `batch_id BIGINT`:所属批次。
- `deploy_id BIGINT`:关联 `model_deploy.id`
- `version_id BIGINT`:关联 `model_version.id`
- `monitor_month DATE`:监控月份。
- `ranking_result VARCHAR(24)``matched/unmatched/not_applicable`
- `ks_value DECIMAL(12,8)`KS,建议统一存01比率。
- `psi_value DECIMAL(12,8)`PSI,建议统一存01比率。
- `sample_count/good_count/bad_count BIGINT`:样本量。
- `calculated_at DATETIME`:完成计算时间。
- `extra JSON`:仅用于尚未结构化且已约定的数据,不作为核心字段替代品。
关键约束:同一批次下一个 `deploy_id` 只能有一条结果。
### 3.3 `model_monitor_feature_metric`——特征级指标
一行代表一个监控结果下的一个特征。
建议字段:
- `id BIGINT`:主键。
- `monitor_result_id BIGINT`:关联单月监控结果。
- `feature_code/feature_name`:特征编码和名称。
- `iv_value/previous_iv_value`:当期与上期IV。
- `iv_drop_rate`IV降幅。
- `csi_value/previous_csi_value`:当期与上期CSI。
- `csi_rise_rate`CSI升幅。
- `ks_contribution_change`:对KS变化的贡献。
- `psi_contribution_change`:对PSI变化的贡献。
- `calculated_at DATETIME`:计算时间。
关键约束:同一监控结果下 `feature_code` 唯一。
### 3.4 `model_monitor_distribution`——评分及特征分箱
一行代表一个评分区间或一个特征分箱。
建议字段:
- `id BIGINT`:主键。
- `monitor_result_id BIGINT`:关联单月监控结果。
- `dimension_type VARCHAR(24)``score_band/feature_bin`
- `feature_code/feature_name`:评分分箱时可为空。
- `bin_order/bin_code/bin_label`:分箱顺序、编码和显示名称。
- `reference_period_label`:基准期说明。
- `reference_count/reference_share`:基准期数量和占比。
- `current_count/current_share`:当期数量和占比。
- `good_count/bad_count/bad_rate`:好坏客户数据。
- `psi_component/csi_component`:该分箱对PSI/CSI的贡献。
关键约束:`monitor_result_id + dimension_type + feature_code + bin_order` 唯一。
## 4. 四张表与前端页面关系
| 表 | 模型大类概览 | 监控概览 | 监控详情 | 监控/诊断报告 | 系统同步 |
|---|---|---|---|---|---|
| `model_monitor_batch` | 间接 | 间接 | 间接 | 绑定数据版本 | 展示批次和修订状态 |
| `model_monitor_result` | KS/PSI、趋势、同业均值 | 月度明细和等级输入 | 核心结论与趋势 | 报告核心指标 | 同步主数据 |
| `model_monitor_feature_metric` | 不直接使用 | 可选摘要 | IV/CSI前5及全指标 | 诊断报告特征分析 | 同步特征指标 |
| `model_monitor_distribution` | 不直接使用 | 不直接使用 | 排序性和特征分布 | 报告四张明细表 | 同步分箱数据 |
## 5. 我方可以计算、模型方无需提供的内容
取得上述原始数据后,我方可自行计算:
- 本行平均KS/PSI及同业平均值。
- 近6个月趋势。
- KS环比降幅。
- 近6个月二级异常次数。
- 异常等级及A/B/C监控结果等级。
- 命中原因、处理建议、阈值影响测算。
- 报告正文、待办、催办和缓存数据。
## 6. 必须与模型方确认的 10 项
1. 是否接受新增上述4张表,或提供完全等价的表/视图。
2. `deploy_id`和版本引用使用 `model_version.id` 还是 `version`整数。
3. KS、PSI、IV、CSI统一存01还是0100。
4. 排序性计算方法及枚举值。
5. PSI和CSI基准期规则,是否为滚动基准期。
6. 批次粒度是全月全量、按银行还是按模型。
7. 历史勘误是否新增修订,禁止原地覆盖已发布结果。
8. 特征编码是否跨版本稳定,特征名称变更如何留痕。
9. 首次需要回补多少个月历史数据及预计数据量。
10. 提供一套真实脱敏样例:一个模型、一个月份、完整特征和分箱数据。
## 7. 若模型方不愿新增4张表
最小折中方案:
- `model_monitor_aggr`继续承载KS、PSI、IV、CSI等标量指标。
- 必须固定 `metricName` 字典、单位、月份口径和 `dimensionValue` 规则。
- 仍需新增批次/发布结构以及评分和特征分箱明细结构。
- 不建议把所有数据都塞入 `extra JSON`,否则无法建立稳定索引、约束和验收口径。
该折中方案开发和长期维护成本更高,推荐优先采用4张结构化表。