- 删除v1.0 49条(今天'执行分解'基于错误v2.0聚合产生的重复数据) - 修正v2.0 F_REVENUE: 367万/月→90/75/80/85/95/120万(真实H2预测455万+7月90万) - 解决预算录入'部分指标重复'问题(同KPI+期间双版本记录)
6.9 KiB
6.9 KiB
CMA验证数据需求规范(双实体验证矩阵)
建立:2026-08-19 | 提出:任总(两套数据验证决策 + "每次需要什么样的数据") 核心原则:酣客=验收场(真实客户数据,最后碰),博海=试验田(随便折腾,先试错) 验证策略:"先博海试验,再酣客验收"
一、双实体角色分工
| 实体 | 角色 | 用途 | 数据量 |
|---|---|---|---|
| 陕西博海(id=2) | 试验田 | 新功能试错/MCP测试/破坏性测试/快速迭代 | 16 KPI / 316 数据点 |
| 陕西酣客(id=1) | 验收场 | 客户验收/真实场景/交付演示 | 70 KPI / 1269 数据点 |
| 测试企业(id=3等) | 自动化测试 | CI跑用例(不人工碰) | 空 |
铁律:新功能先在博海跑通,再碰酣客数据
破坏性操作(删除/清空/批量改)只在博海或测试实体做
二、各验证场景所需数据(核心矩阵)
场景1:功能开发验证(新功能/改代码)
| 数据需求 | 博海(试验田) | 说明 |
|---|---|---|
| KPI定义 | ≥5个(覆盖4维度:财务/客户/流程/学习) | 测维度筛选 |
| KPI数据点 | ≥50个(≥3个周期,含红黄绿各态) | 测红黄绿判定 |
| 预警 | ≥3条(红/黄各至少1条) | 测预警列表 |
| 预算 | ≥3个 | 测预算对比 |
| 行动计划 | ≥2个(含1个逾期) | 测逾期逻辑 |
| 组织 | ≥5个节点 | 测部门归属 |
场景2:MCP封装验证(本次重点)
| 数据需求 | 博海 | 说明 |
|---|---|---|
| KPI(含历史) | ≥5个KPI × ≥3周期 | 测cma_kpi_history |
| 预警 | ≥2条 | 测cma_query_alerts |
| 预算 | ≥2个 | 测cma_budget_plans |
| 概览数据 | 完整(KPI+预警+预算都有) | 测cma_overview |
| 空值KPI | ≥1个(无数据) | 测容错(AI问空数据不能崩) |
| 异常KPI | ≥1个(目标为0/负值) | 测边界 |
场景3:客户验收/演示(酣客数据)
| 数据需求 | 酣客 | 说明 |
|---|---|---|
| 全量KPI | 70个(保持现状) | 真实场景 |
| 关键KPI数据 | 财务核心(营收/净利/成本率)必须有最近3期 | 老板最关注 |
| 预警 | 真实预警(有红黄) | 展示预警价值 |
| 战略地图 | ≥1张 | 展示战略层 |
| 报表 | ≥1份BI报表 | 展示汇报能力 |
| 演示剧本 | 3个核心场景(看KPI/查预警/看趋势) | 演示有故事线 |
场景4:回归验证(改完不破坏)
| 数据需求 | 两套都跑 | 说明 |
|---|---|---|
| 博海 | 16 KPI / 316 数据点 | 快跑(功能不坏) |
| 酣客 | 70 KPI / 1269 数据点 | 全跑(数据不坏) |
| 关键对比 | 修复前后数据一致性 | 确认无副作用 |
场景5:破坏性/边界测试
| 数据需求 | 只准博海/测试实体 | 说明 |
|---|---|---|
| 清空KPI值 | 博海子集(备份后) | 测空态UI |
| 大量数据导入 | 造1000+行 | 测性能 |
| 异常格式 | 特殊字符/超长字段 | 测容错 |
| 权限越界 | 用测试账号 | 测权限 |
三、数据准备清单(最小可用数据集)
博海试验田(最小16个KPI覆盖全场景)
4维度各≥1个:
财务:F_REVENUE(营收)/ F_NET_PROFIT(净利)/ F_COST_RATIO(费用率,反向)
客户:C_SATISFACTION(满意度)/ C_REBATE_RATE(渠补率,反向)
流程:P_DELIVERY(交付及时率)
学习:L_TRAINING(培训完成率)
↓
状态覆盖:
绿色≥2(达标)、黄色≥1(预警)、红色≥1(危险)、灰色≥1(无数据)
↓
周期覆盖:
最近3期(2026-06/07/08)每期都有值
↓
边界覆盖:
1个KPI目标=0(测除零)、1个KPI无数据(测空态)
酣客验收场(保持真实,不造假)
❌ 禁止:为测试给酣客造假数据
✅ 做法:用真实数据,缺的周期标注"待补充"
↓
验证时用"真实数据 + 演示剧本":
① 看我的KPI(营收/净利红黄绿)
② 查预警(哪些指标危险)
③ 看趋势(最近3期变化)
四、验证执行检查清单(每次验证前过一遍)
[ ] 1. 确认验证类型(功能/MCP/验收/回归/破坏)
[ ] 2. 选数据源:功能/MCP/破坏→博海;验收→酣客;回归→两套
[ ] 3. 数据准备:对照上面的"最小可用数据集"检查是否齐全
[ ] 4. 空值/异常KPI是否在(测容错)
[ ] 5. 备份:改动前备份目标实体数据(mysqldump)
[ ] 6. 执行验证 + 记录结果
[ ] 7. 验证后检查:consistency-check 无新错误
五、验证数据速查表(一句话版)
| 验证类型 | 用哪套 | 最少需要 |
|---|---|---|
| 新功能 | 博海 | 5 KPI × 3期 + 红黄绿各1 |
| MCP封装 | 博海 | 5 KPI×3期 + 空值KPI + 异常KPI |
| 客户验收 | 酣客 | 70 KPI + 3期 + 演示剧本 |
| 回归 | 两套 | 全量对比 |
| 破坏性 | 博海/测试 | 备份后随意 |
六、数据录入归属规范(实体自动判断)
2026-08-19 任总提问"输入数据时明确博海还是酣客?系统能否自动判断"——已确认系统现状与增强方案
系统现状(账套模式已存在)
① 登录必须选企业(entity_id):
auth.py:"账套模式:请选择登录企业"
→ 用户登录时选酣客 or 博海
↓
② token绑定实体(安全):
token.entity_id = 唯一可信来源
用户只能访问被授权的企业(user_entities表)
↓
③ Bot通道(X-Entity-Id header/query):
白名单Bot可指定实体,但token存在时忽略query(防越权)
↓
④ 兜底默认:1(酣客)
结论:输入时无需每次明确
人工录入(网页):
登录时已选 → 数据自动归到所选企业(token绑定)
→ 不需要每次输入时再明确
↓
Bot/API导入:
可以指定X-Entity-Id → 需要明确(API调用时传)
↓
唯一边界:一个Excel混了两家公司数据 → 需增强
自动判断三级方案(待实现,0.5天)
① 登录实体(token.entity_id)→ 默认归属
② Excel内容检测:表头/首列是否含"酣客/博海"字样
→ 有:覆盖归属(跨公司导入场景)
→ 无:用登录实体
③ 文件名检测:文件名含"酣客/博海"→ 辅助判断
↓
④ 冲突时(登录=博海 但 内容=酣客):
→ 弹确认:"检测到酣客数据,确认归属?"
→ 人工点一下(不自动改,防误)
实现位置
后端:data.py import_excel_smart 加 _detect_entity()(~30行)
前端:import弹窗加实体确认(~20行)
状态:待排期(记入待办,非紧急)
七、关联
- kpi-account-governance-rule.md(科目≠KPI规范)
- 双实体验证决策(2026-08-19 任总)
- 铁律七(验证不信任自述)
- MCP封装(cma-mcp-strategy.md:先博海试,后酣客验)