Add tenant-safe value, telemetry, connector, commercial, and production-readiness foundations.
3.8 KiB
3.8 KiB
修复记录
-
17:11:记录 bug 修复:财务看板跨租户聚合、快照串租户复用与普通用户越权读取。
- Git 提交检查:执行
git fetch --all --prune后未发现HEAD..origin/main新提交;本地比origin/mainahead 17 个提交,最新为242d68c3 feat(approval): add task workflow and waiver decisions,其余为28b834ed至661990b2的审批、费用闭环、AI 记忆、迁移安全和认证能力提交,本次没有合并或改写这些历史。 - 修改:
finance_dashboard.py通过ExpenseClaimTenantScopeMixin按 Expense Case Link 聚合当前租户报销单;缺少tenant_id的旧预算表仅允许default租户读取,其他租户返回带原因的明确空预算;新增finance_dashboard_scope.py统一声明报销与预算数据范围。 - 修改:
finance_dashboard_snapshot.py把tenant_id、数据范围和完整时间参数纳入无歧义缓存键,并在 SQL 查询、Agent Run 路由及工具请求中同时校验租户和范围;finance_dashboard_scheduler.py显式固定default系统租户,非默认租户不能调用默认定时快照入口。 - 修改:新增
finance_dashboard_access_policy.py,analytics.py显式接收CurrentUserContext,仅允许finance、executive或 admin 只读访问财务看板,普通用户和仅有budget_monitor角色的用户返回 403。 - 操作:所有检查均在
local-x-financial-linux容器内执行;新增租户 A/B、default 历史单、旧预算、快照缓存与接口权限测试,没有触碰受保护的财务规则 XLSX 和历史开发文档。 - 验证:Ruff 对本次 7 个 Python 模块及新增测试检查通过;
test_finance_dashboard_tenant_security.py与test_finance_dashboard_service.py共 8 个测试通过。补充运行财务报告与数字员工回归时 4 个测试通过、1 个既有财务周报用例失败,原因是用例将“当前时间减 2 天”的数据断言进“上一完整周”窗口,和本次租户过滤无关。 - 影响:财务看板不再读取其他租户的报销单或把 default 旧预算暴露给非默认租户;相同时间参数的租户快照不会互相命中,后台默认快照和前台读取权限也有了可审计的显式边界。
- Git 提交检查:执行
-
18:14:补齐财务看板租户 fail-closed 边界与模块拆分验证。
- Git 提交检查:18:13 再次执行
git fetch --all --prune;HEAD..origin/main无新提交,本地仍比origin/mainahead 17 个提交,范围为661990b2 feat(expenses): add transactional expense case events至242d68c3 feat(approval): add task workflow and waiver decisions,未合并、改写或覆盖这些提交及工作区内其他智能体改动。 - 修改:
finance_dashboard_access_policy.py对空白租户上下文直接拒绝,避免异常认证上下文回落到 default;将预算摘要、预算卡片和预算瓶颈投影提取到finance_dashboard_budget.py,finance_dashboard.py从 920 行降至 746 行,保持租户过滤和原 API 不变。 - 操作:只在
local-x-financial-linux容器内执行 Ruff、财务看板服务与接口测试、Agent Run 服务回归和 Ontology 端点回归;未触碰财务规则 XLSX、Savings 迁移或前端文件。 - 验证:Ruff 检查与格式检查通过;财务看板、Agent Run 服务和 Ontology 端点定向回归共 17 个测试通过。另跑数字员工、系统看板和财务报告回归时 6 个通过、1 个既有周报窗口用例失败;该用例在周四写入“当前时间减 2 天”的单据,却断言它属于“上一完整周”,失败与本次改动无关。
- 影响:租户身份缺失时财务看板不再隐式读取 default 数据;预算展示职责被独立封装,后续继续扩展财务指标时不会把核心聚合模块推过项目 800 行硬上限。
- Git 提交检查:18:13 再次执行