Commit Graph
231 Commits
Author SHA1 Message Date
Hermes CI Fix 6af4366a84 chore: 清理worktree验证测试文件 2026-08-26 06:53:25 +08:00
Hermes CI Fix cb318115e8 merge: test-isolation (worktree) 2026-08-26 06:53:11 +08:00
Hermes CI Fix acb4709ca9 test: worktree隔离验证 2026-08-26 06:53:00 +08:00
Hermes CI Fix 60be96bfaa feat: CMA知识库动态加载 — 前端从knowledge-articles API读取(CMA案例/税务合规/方法论等31篇可见) 2026-08-26 00:24:55 +08:00
Hermes CI Fix d20a270ba2 test: 七流一致自检规则测试 — 7条自检规则+酣客/博海真实场景
覆盖:
- 进销项倒挂/应交税费异常/账面毛利异常/收入vs现金/收入vs存货/人员vs收入/成本vs收入
- 七流健康评分(绿100/黄60/红0)
- 酣客场景: 触发>=3项红色(进销项倒挂/应交429万/毛利-0.43%)+评分<60
- 博海场景: 无红色+评分>=60(IT经销13%毛利合理)

27 passed — 为项目Bot开发七流自检API提供规则基线
2026-08-25 23:59:33 +08:00
Hermes CI Fix 199278a552 feat: API业务动作层聚合接口2个(Agent化生产链路·行动1)
建议A: POST /bot/kpi-value-with-check — 写KPI值+自动跑该KPI预警检查
  复用alert_rules检查函数(static/dynamic/trend), 非全量check-all
建议B: POST /bot/kpis/create-with-links — 创建KPI+关联地图+批量因果链
  复用kpis治理校验/apply_calc_type_inference, 入参可选退化纯创建
- X-BOT-KEY鉴权(bot层, Agent免登录)
- 多租户: entity校验(跨企业404/创建强制token企业)
- 端到端: A写值15.5无预警命中✓ B创建KPI430+map49+因果链430→414✓
- pytest 486 passed, 测试数据已清理
2026-08-25 20:27:19 +08:00
Hermes CI Fix 046a7cf8b9 test: 预算接口契约测试 — 覆盖2026-08-25修复的4个契约缺口
1. plans返回dimension/unit字段(前端维度列/单位列依赖)
2. plans支持keyword搜索(前端搜索框依赖)
3. versions列表字段完整性(version/status/kpi_count/total_budget)
4. 批量分解幂等性(重复执行不产生重复记录)
+ 更新过时测试: versions端点从'预期404'改为'预期200'(API已恢复)

结果: 35 passed
2026-08-25 18:22:04 +08:00
Hermes CI Fix 0daa079b96 fix: 预算数据修正 — 删除v1.0错误分解记录, 修正v2.0 F_REVENUE为真实H2预测(75-120万/月,原367万错误)
- 删除v1.0 49条(今天'执行分解'基于错误v2.0聚合产生的重复数据)
- 修正v2.0 F_REVENUE: 367万/月→90/75/80/85/95/120万(真实H2预测455万+7月90万)
- 解决预算录入'部分指标重复'问题(同KPI+期间双版本记录)
2026-08-25 18:19:48 +08:00
Hermes CI Fix cc7cddd646 refactor: 预算操作列优化 — 无预算记录显示'待创建'(点击进入编辑),有记录显示'删除' 2026-08-25 18:13:29 +08:00
Hermes CI Fix 142fff2cae fix: 预算操作列一致性 — 所有行都显示删除按钮(无记录时提示'暂无预算记录') 2026-08-25 18:11:51 +08:00
Hermes CI Fix 236fd34f08 refactor: 预算操作列规则修正 — 移除'财务指标/待创建'状态混淆,统一为编辑/保存/删除(所有维度可删预算记录) 2026-08-25 18:09:52 +08:00
Hermes CI Fix 3a57afcec4 fix: 预算录入操作列空白 — 无预算记录KPI(ek行)显示'待创建'而非空白 2026-08-25 18:06:16 +08:00
Hermes CI Fix dbfa6ba0a2 fix: 预算录入搜索不过滤 — plans API补keyword参数(KPI名称模糊搜索) 2026-08-25 17:53:47 +08:00
Hermes CI Fix 4d2fba67f7 fix: 预算录入维度无标签 — plans API补dimension/unit字段 2026-08-25 17:47:15 +08:00
Hermes CI Fix a1d014258f fix: 执行分解400错误 — auto-decompose支持批量模式(不传kpi_id分解该年所有预算KPI)
- 原API只支持单KPI(kpi_id+annual_budget),前端UI按整体分解调用 → 400
- 新增批量模式:聚合该年所有KPI年度预算,逐KPI均分/按历史权重分解12个月
- 验证:批量分解4个KPI(收入536万/净利-48万等),v1.0月度48条落库
2026-08-25 17:42:40 +08:00
Hermes CI Fix 863514fec0 refactor: 实物期权计算器菜单从规划与目标移到复盘与改进 — 与预测模拟(NPV/IRR)同组 2026-08-25 17:36:37 +08:00
Hermes CI Fix b6613bbde2 fix: 预算执行KPI名称/维度为空 — deviation-report补kpi_name/dimension/unit字段 2026-08-25 17:28:14 +08:00
Hermes CI Fix 835ac10e95 feat: 预算版本管理API — 修复前端'加载版本失败'(budgetApi.versions未定义+后端无端点)
- 后端: GET /budget/versions(版本列表) POST /versions/submit /versions/approve /versions/diff
- 前端: budgetApi.versions/versionSubmit/versionApprove/versionDiff
- 数据: budget_plans已有v2.0 active 24条
- 验证: 版本列表200(v2.0 24KPI 预算730万) 版本对比200
2026-08-25 17:11:03 +08:00
Hermes CI Fix 1c536cc5e1 fix: 波士顿产品矩阵菜单图标(PieChart) — 导入+iconMap注册 2026-08-25 17:06:30 +08:00
Hermes CI Fix 1e0439ff72 fix: 波士顿产品矩阵加入侧边栏菜单+角色权限 — 修复功能不可见 2026-08-25 16:59:00 +08:00
Hermes CI Fix 54107b50cd feat: 战略地图多租户隔离 — 酣客/博海地图按企业显示
- strategic_maps/map_objectives 加 entity_id 列+模型+回填(按标题: 酣客→1/博海→2)
- maps: list按企业过滤, create/create-with-template强制token企业, update/delete/batch-delete/connections/review 跨企业404
- objectives/versions: 按map归属过滤
- _sync_map_objectives 继承地图entity
- 实证: 酣客token→map32(酣客), 博海token→map49(博海), 跨企业读404
- pytest 482 passed
- 多租户隔离专项最终收官(含周报遗留项)
2026-08-25 16:58:27 +08:00
Hermes CI Fix 6b6043536a feat: 预测性成本智能升级 — 历史回归弹性校准 + 预测偏差告警
升级1: 宏观敏感性弹性历史校准
- 内置宏观历史数据(oil/usd/cpi 2026-01~07月度)
- 变化率弹性: 同period匹配KPI历史vs因素历史算弹性
- 合理性校验: |弹性|超出[0.01,0.5]视为噪声回退规则(诚实标注)

升级2: 预测偏差告警闭环
- 新表 kpi_forecast_log(预测历史)+模型KpiForecastLog
- 预测时落库(同KPI同预测期覆盖)
- alert_rules 支持 rule_type=forecast_deviation(threshold_pct)
- POST /alert-rules/run-forecast-deviation: 预测vs实际偏差>阈值生成预警(去重, 超2倍阈值红色)
- 端到端验证: 模拟实际500vs预测399.55→偏差20.1%>5%→红色预警生成

回归: pytest 40 passed(predict+alerts)
2026-08-25 00:55:50 +08:00
Hermes CI Fix 8ec846c6df feat: 预测性成本智能·宏观敏感性因素联动(IMA 2026.7完整版)
- 内置3宏观因素: 原油价格/美元汇率/CPI通胀率
- 敏感性引擎: 按KPI类别推断弹性(成本类油价0.15/利润类0.12/营收类0.08), 方向+因素涨KPI涨
- 负值KPI(亏损)方向反转修复: 油价涨→净利更亏
- API: GET /predict/kpi-forecast/sensitivity?pct=10 → KPI×因素矩阵(±pct调整后预测)
- 前端: 敏感性幅度选择(±5/10/20%) + 敏感性矩阵表(同向/反向+↑↓调整值)
- 诚实标注: 模型弹性(规则推断,非历史回归), 后续可用宏观历史数据回归校准
- 验证: Chrome实测页面+API矩阵, pytest 46 passed
2026-08-25 00:44:45 +08:00
Hermes CI Fix 1c8b01d682 feat: 预测性成本智能模块上线(IMA 2026.7前沿) — 接线+重建页面
- CostIntelligence.vue 重建(被清理的未提交文件): 模型选择(线性/移动平均)+预测期数+统计卡+KPI表格+趋势图
- 路由: /cost-intelligence(挂财务维度D执行与控制), 修正 predict/cost-intelligence 路径不匹配
- 菜单: 预测性成本智能(ceo/finance/it)
- 后端API已存在: /predict/kpi-forecast/finance (kpi_forecast_engine)
- 验证: Chrome实测 5 KPI预测(厂补率/营收/净利/费用率/毛利), 趋势图渲染, pytest不影响
- 注: 置信度诚实标注(全部low=历史数据波动大, MVP原则)
2026-08-25 00:34:28 +08:00
Hermes CI Fix 9de6e522a4 feat: 波士顿产品矩阵 — 四象限分析(明星/现金牛/问题/瘦狗)
- 数据层: product_sales表+导入脚本(93条, 酣客1-8月商品销售排行榜)
- 后端: GET /api/cma/products/matrix?entity_id&months
  横轴=销售趋势(线性回归), 纵轴=加权毛利率, 气泡=销售额
- 前端: ProductMatrix.vue ECharts散点图+象限卡片+明细表, 支持酣客/博海切换
- 验证: API四象限分类正确, 数据联动, 前端路由200, 全部通过
2026-08-25 00:25:11 +08:00
Hermes CI Fix 13aa153875 feat: 预测性成本智能MVP — KPI趋势预测引擎(线性回归/移动平均)+API+前端Tab+pytest覆盖 2026-08-25 00:10:46 +08:00
Hermes CI Fix fb9eba38a8 feat: 多租户隔离P2批2 — 预算/成本/费用/预警规则/BI报表加entity_id
- 12表加entity_id列(预算/偏差/规则/成本4表/费用2表/BI2表/驱动预算)
- 模型: BudgetPlan/StandardCost/ActualCost/AbcActivity/AbcAllocation/DriverFactorBudget/BiReport/Template/BudgetDeviationAlert/ExpenseRule/Reimbursement/AlertRule
- API隔离: budget plans / cost standard+actual / expenses rules+reimb / bi_reports list / alert_rules list 按token企业过滤
- 回填: kpi_id关联按KPI归属, 无关联默认酣客(entity=1); 当前数据全归酣客
- 验证: import+全端点200+pytest 451 passed
2026-08-23 18:20:29 +08:00
Hermes CI Fix 27b5b0da47 feat: 多租户隔离P2批1 — OKR域+kpi_values加entity_id列
- 模型: Objective/KR/ObjectiveKPI/KPIValue 加 entity_id
- DB: 4表加列; kpi_values 1610条按kpi_id回填(1269酣客/341博海)
- OKR域: 测试O删除重建; okr list/get/create + ontology trace/objectives 按token企业隔离(跨企业404)
- KPIValue写入: data/bot_bridge/bot_kpis 创建时带entity_id
- 验证: 酣客创建OKR博海不可见; 跨企业读404; pytest 451通过(expenses单跑37通过为既有排序flaky)
2026-08-23 17:53:37 +08:00
Hermes CI Fix 50c15ddbf6 fix: 多租户数据隔离P1a+P1b — 工作台/预警/行动计划/因果链按企业过滤
P1a(有entity表查询补齐):
- kpis get/update/delete/restore 跨企业404校验
- kpis create 强制entity=token企业, update禁止改归属
P1b(无entity表join隔离):
- alerts list/resolve join kpi_definitions 按企业过滤
- action_plans list join过滤 + create校验关联KPI归属
- kpi_causality full-network/list join过滤
- dashboard my_dashboard(用户发现) assigned/preset均按企业隔离
测试: 测试KPI种子entity对齐(2→1), pytest 451 passed
实证: 酣客token 6KPI(无博海id) vs 博海token 1KPI(414) 切换隔离正确
2026-08-23 17:43:39 +08:00
Hermes CI Fix 9c61b02d66 feat: 企业切换器按授权数动态显示 — 多企业用户(≥2)才显示
单企业用户隐藏顶栏切换器避免UI噪音(登录已选企业,无需切换)
前端判断 my-entities 列表长度, 零后端改动
admin(2企业)保留切换, 单企业用户(1企业)隐藏
2026-08-23 17:29:17 +08:00
Hermes CI Fix 412a302699 feat: OKR模板库P2治理 — owner字段/防重复/校准文档/缺口清单
- 模型+DB: okr_templates.owner (CMA标准库/行业包/用户自定义)
- API: create同名去重(409) + list/get返回owner + apply透传metric_kpi
- 前端: 模板卡片展示owner标签
- 文档: kpi-dictionary-gap-list.md(33条缺口+建议补KPI) + okr-template-calibration.md(酣客/博海校准表)
- 回归: 模板API验证通过
2026-08-21 16:49:11 +08:00
Hermes CI Fix 9ccdd0db63 docs: KPI设计规范补充OKR KR权重适配说明(主KR可至40%)
配合OKR模板库DAMA修复: 权重合规化(34/33/33→35/35/30, 40/30/30保持)
2026-08-21 16:37:14 +08:00
Hermes CI Fix 8103ee4788 feat: KPI治理规则2增加kpi_name必填校验 — 防空名KPI
- META_FIELDS 增加 kpi_name(KPI名称)
- 验证: 空名→规则2拦截; 有名称→通过; 审计仍95/95合规
- 背景: F_REVENUE曾空名未被发现
2026-08-21 16:28:23 +08:00
Hermes CI Fix b787d22fdf fix: KPI治理审计白名单 FB_/BH_前缀 + 补6个元数据 + BH_ZERO_TARGET单位
- 规则3: FB_(财务Bot, process维度) 加入 LEGACY_PREFIX_DIM; BH_(博海品牌) 加入 BRAND_PREFIXES 跨维度合法
- 规则2: 补6个KPI数据来源/责任人(客户调研/CRM/客服部, 人事培训系统/人事部等)
- 规则1: BH_ZERO_TARGET unit '-' → '%'
- 审计结果: 95/95 合规(原36个不合规清零)
- 回归: pytest 451 passed
2026-08-21 16:18:32 +08:00
Hermes CI Fix b06821a426 feat: KPI多粒度目标智能派生 — 基准值+按类型派生+手动覆盖
- 后端: target_calc_type字段(accumulate累计/ratio比率) + infer_calc_type名称/单位推断
- 派生规则: 累计型 月×3=季×12=年(季×4=年); 比率型 季/年沿用基准不可乘
- 虚拟派生不落库: kpi_to_dict返回derived_targets+derived_flags(自动标记)
- DB: 302个KPI回填类型(226累计/76比率)
- 前端KPIList: 指标类型选择 + 季/年自动派生预览(↳自动=N)
- 前端KPIDetail: 元数据卡片自动标记 + 编辑表单指标类型
- 回归: pytest 451 passed
2026-08-21 10:59:43 +08:00
Hermes CI Fix d5edcefb48 feat: KPI新建设计引导(五步法·五规则) — KPIList新建弹窗
- 新建KPI时显示设计引导折叠面板: 五步法逐步引导(职责/客户/需求/成果/五因素)
- 五规则实时校验清单: 名称/维度/单位/目标值/频率/负责人 + 本维度KPI数量≤6提示
- 提交门禁(仅新建): 名称+维度必填, 单位+至少一个目标值必填
- 对应 docs/kpi-design-rule.md 方法论落地
2026-08-20 15:56:56 +08:00
Hermes CI Fix a9845eb2cf docs: KPI设计规范(五步法/五规则/三路径) — CMA方法论层第2份规范
- 第2份方法论文档, 与科目≠KPI规范(第1份, 数据层)互引形成双层治理闭环
- 五步法: 职责→客户→需求→成果→五因素(时/量/质/成/险)
- 五规则: ≤6个/权重5%-30%取5%倍数/定量定性/SMART/部门差异化
- 三路径: 自上而下战略分解/自下而上职责提取/BSC四维平衡
- 四层链: 战略地图→O→KPI→科目(呼应本体三支柱)
2026-08-20 15:39:09 +08:00
Hermes CI Fix a13a080381 test: CMA自动化测试补覆盖 226→452用例, 覆盖率36%→60%
- 新增8个测试文件(bot_bridge/kpi_causality/cash/predict/reports/tax_compliance/expenses/probe_cost)
- 增强 budget/auth/users + conftest账套模式适配
- 测试驱动修复: bot_bridge导入batch_id→source_batch; cash_forecast extra空dict
- 全量: 451 passed, 1 xfailed; 报告 docs/cma-test-coverage-report.md
2026-08-20 06:57:24 +08:00
Hermes CI Fix dd53212bcc feat: KPI多粒度目标值补提交 — dashboard API + 前端3视图(目标值月/季/年)
已上线未提交的历史功能(2026-08-17): kpi_target_by_frequency + target_monthly/quarterly/yearly 字段透传
2026-08-20 06:57:13 +08:00
Hermes CI Fix bd9c70ea05 本体三支柱: 科目↔KPI↔OKR三层互联 + 追溯链API + OKR详情页签
- 新表 kpi_subject_map(89映射/24KPI) / objective_kpi(3O×5KPI) / krs(3O×3KR)
- GET /api/cma/ontology/trace?objective_id=N O→KPI→科目逐层追溯
- GET /api/cma/ontology/objectives 三层链路概览
- OkrDetail.vue 新增本体追溯链页签(KR目标/当前值 + KPI→科目标签流)
- 含并发已上线未提交的KPI多粒度列(target_monthly/quarterly/yearly)
- 回归: pytest 409 passed
2026-08-19 22:58:10 +08:00
Hermes CI Fix 0b305e3ab3 fix: 杜邦分析period格式兼容 — 2026H1/2026-H1变体匹配,酣客ROE正常返回-12.74%
- _get_dupont_kpi支持6字符(2026H1)和7字符(2026-H1)period格式
- 之前数据库存'2026-H1'但API查'2026H1'导致读不到数据,酣客ROE返回None
- 验证:酣客ROE=-12.74%(净利率-12.74%,亏损企业正确为负)
2026-08-18 09:54:56 +08:00
Hermes CI Fix 31080500f0 fix: 保存提示/确认框靠左重叠菜单 — el-message强制居中+移除el-message-box margin:0破坏 2026-08-17 16:21:07 +08:00
Hermes CI Fix c952930dfb ui: KPI详情页元数据卡片置顶展示(便于快速观察完整性) 2026-08-17 16:07:37 +08:00
Hermes CI Fix 5805ef34e7 fix: 保存消息位置 — ElMessage z-index提到弹窗之上+顶栏下方70px 2026-08-17 16:04:15 +08:00
Hermes CI Fix 58e8a9f5b3 fix: 空白地图创建失败 — dimensions默认四层空结构+review NULL容错 2026-08-17 09:49:21 +08:00
Hermes CI Fix 32fb8d9b06 fix: 战略地图创建保存防重 — 按钮loading防重复创建(修复一次保存9份) 2026-08-17 09:44:15 +08:00
Hermes CI Fix bf0f0b3054 feat: 表单保存交互规范P1+P2+P3 — 保存按钮loading防重复(KPIList/UserManage/KPIDetail)+KPIList编辑弹窗化(详情跳页并存)+保存反馈全面核查 2026-08-16 12:04:22 +08:00
Hermes CI Fix 40d743fc96 feat: 表单保存交互规范P0 — 全局未保存离开守卫(useFormGuard)+MapCanvas接入 2026-08-16 11:39:26 +08:00
Hermes CI Fix acf0665010 feat: 登录默认页改为我的工作台 2026-08-16 11:00:19 +08:00
Hermes CI Fix 7b5795bf07 fix(P0): 杜邦分析接口去除硬编码错误数据 — equity 114万→358.4万、ROE 12.38%→3.95%、新增hanke分支读DB(KPI 2026H1 verified)
- 新增 _get_dupont_kpi 辅助函数: 按 entity_id+kpi_code 查 kpi_definitions→kpi_values(period=2026H1, verified)
- bohai: 净权益修正为358.4万(来源 bohai_comprehensive_analysis_2026.md 试算平衡表),财务杠杆4.68x→1.49x,负债率78.6%→32.8%结构健康,ROE≈3.94%,删除误导性加杠杆建议
- hanke: 新增分支,从DB读 F_REVENUE=713.27/F_NET_PROFIT=-90.86,净利率-12.74%,资产/权益缺失时factor返回null标注数据待补充,prev_roe返回null(前端兼容显示无对比),接口返回200
2026-08-15 23:02:48 +08:00