经典视图读不到本人生成的排产版本(看板显示 #1
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
摘要
计划员在界面上排出方案后,交期看板 / 甘特 / 负荷 / 概览显示"未排产 / 甘特为空",但排产其实成功了——结果写进了该访客自己的世界,而这四个经典视图读的是部署公共世界。
复现(隔离环境,真浏览器 + 真 Pi 兜底)
结果:
对照(同一访客身份直接调 API):
POST /api/flex/schedule(engine=OPTIMIZE、sortMode=CP_SAT)成功产出FV20260929-001(10 虚拟产线 / 72 工单,validation.valid=true),随后同会话四个/api/world/*依然hasVersion:false。期望行为
按
docs/architecture/auth-tenancy.md与docs/architecture/overview.md:(tenant_uuid, owner_user_id / project)分片,世界文件使用命名空间路径;EXE → ENG → VIEW → UI);代码定位(供参考)
探针显示:在视图路由的执行上下文中
get_identity()为user_id=0 / platform,key 停在default→ 读公共世界。历史:接口定义于
a91f592(first commit,单世界时代);分片隔离引入于ef7256f,当时未迁移这四个视图。前端至今仍在使用:apps/web/src/api/client.ts:98/100/102/104。待确认(需要产品/架构口径)
APS_AUTH_ENABLED=1+ 已选项目)下是否同样出现?本 issue 的复现限于免登录开发态。建议修法
/api/flex/*本已正确分片),经典视图降级为历史视图。缺失的门禁测试(本 issue 的一部分)
当前测试只覆盖"甲看不到乙的项目/会话",没有覆盖"甲排出方案后,甲自己的看板能看到结果"。建议新增:
装置可复用
tests/golden/test_anonymous_visitor_isolation.py的open_app+X-APS-Visitor-ID写法。验收
test_anonymous_visitor_isolation、test_world_due_view、test_action_result_narrative、test_contract_sync;撤回:本 issue 的根因判断有误
先撤回,避免按错误线索改动代码。
原判断:四个
/api/world/*视图读的是部署公共世界,与排产写入的个人世界不一致("排完看不见")。实测反证(在真实请求上下文里插桩,
TestClient+X-APS-Visitor-ID):结论:视图与排产落在同一份世界,不存在作用域错配。本 issue 的因果链不成立。
被误读的信号:
world_summary的hasVersion判的是经典版本表(scheduleVersions),而排产写的是柔性版本表(flexScheduleVersions)——只有柔性版本时它本来就返回false。这是指标口径问题,与作用域无关。我此前把它当成了"看板读错世界"的证据。仍然待查(另行跟进,不在本 issue 范围):只有柔性版本时,
/api/world/due的promisedEnd是否应按flexVirtualLines[].plannedEnd填充。主线ce2fac9已引入柔性通道回退(_latest_flex_version()/_flex_promised_by_order()),需确认它覆盖的情形。处置:关闭本 issue。如需继续跟进,请按上面"仍然待查"另开一条,判据用柔性可见性(
/api/flex/gantt有版本、due.promisedEnd是否符合预期),不要再用world_summary.hasVersion。