diff --git a/app/tests/test_stock_detail_realtime.py b/app/tests/test_stock_detail_realtime.py index b33743a..010d701 100644 --- a/app/tests/test_stock_detail_realtime.py +++ b/app/tests/test_stock_detail_realtime.py @@ -46,7 +46,7 @@ class RealtimeClientStub: class FixedMarketDatetime(datetime): - fixed_now = datetime.now().astimezone().replace(hour=10, minute=30, second=0, microsecond=0) + fixed_now = datetime(2026, 7, 31, 10, 30).astimezone() @classmethod def now(cls, tz=None): @@ -54,7 +54,7 @@ class FixedMarketDatetime(datetime): class FixedPreopenDatetime(datetime): - fixed_now = datetime.now().astimezone().replace(hour=8, minute=45, second=0, microsecond=0) + fixed_now = datetime(2026, 7, 31, 8, 45).astimezone() @classmethod def now(cls, tz=None): diff --git a/docs/migration/evidence/slice-11/README.md b/docs/migration/evidence/slice-11/README.md index 5220cef..8dc16e6 100644 --- a/docs/migration/evidence/slice-11/README.md +++ b/docs/migration/evidence/slice-11/README.md @@ -3,6 +3,7 @@ > 基线:`dec3cd12365df5e7d4c391369f14c457cf56d7d9` > 候选回档标签:`xiaobai-preservation-slice-11-candidate-20260731` > 严格审计候选标签:`xiaobai-preservation-slice-11-audit-candidate-20260731` +> 跨日复验候选标签:`xiaobai-preservation-slice-11-audit-candidate-20260801` > 当前结论:自动验收完成,等待用户人工验收;尚未执行正式切换、Docker或NAS部署 ## 1. 本切片做了什么 @@ -39,6 +40,12 @@ | 数据库差分 | 62个schema对象、21张关键表全部一致 | | `git diff --check` | 通过 | +2026-08-01 01:19(Asia/Shanghai)跨日复验时,原版与迁移版共用的实时详情测试暴露出 +测试夹具依赖运行日的问题:夹具在周六动态生成“今日”,而业务正确拒绝在非交易日合并实时 +行情。两版测试夹具同步固定到明确的工作日盘中/盘前时点,产品代码与行情日期规则未改。 +修复后统一验收命令再次通过302项测试、24个JavaScript文件、SQLite完整性和45项Playwright +(2.0分钟)。 + 早期切片的五个前端源码测试原本要求与未试删的`static/app.js`逐字符一致。本切片把它们统一到 `preservation_helpers.assert_frontend_runtime_matches_audited_baseline`:只允许审计登记的五段原始 行号被删除,任何其他新增、删除、重排或内容变化仍会使全部历史测试失败。 diff --git a/docs/migration/evidence/slice-11/completion-audit.md b/docs/migration/evidence/slice-11/completion-audit.md index 8db1a6e..a04f2c8 100644 --- a/docs/migration/evidence/slice-11/completion-audit.md +++ b/docs/migration/evidence/slice-11/completion-audit.md @@ -58,6 +58,9 @@ 3. 原样资产清单、方法搬运和前端拆分明确标为迁移期工具;可能写文件的操作必须显式传路径或 `--apply`,默认帮助路径不改文件。 4. 新增维护工具契约测试,保证生成文件新鲜、所有工具`--help`可用,旧`static/`路径不会回归。 +5. 跨到2026-08-01周六后,实时详情测试中用运行日构造的“固定时间”不再代表交易日;原版和 + 候选测试夹具同步固定到明确工作日,消除跨午夜/周末不确定性。产品实现与交易日规则未改, + 随后统一验收再次通过302项Python测试和45项Playwright。 ## 4. 仍需用户完成的最终裁决 diff --git a/docs/migration/保真迁移状态.json b/docs/migration/保真迁移状态.json index fc2be25..983a8c0 100644 --- a/docs/migration/保真迁移状态.json +++ b/docs/migration/保真迁移状态.json @@ -1,6 +1,6 @@ { "schema_version": 1, - "updated_at": "2026-07-31T20:57:42+08:00", + "updated_at": "2026-08-01T01:19:27+08:00", "status": "awaiting_manual_acceptance", "migration_mode": "behavior_preserving_source_migration", "source_of_truth": "current_original_webapp_runtime_and_source", @@ -12,7 +12,7 @@ "current_slice": "slice-11-strict-completion-audit-maintenance-handoff", "last_completed_slice": "slice-10-frontend-shell-pages-components-css-mobile", "last_automated_slice": "slice-11-strict-completion-audit-maintenance-handoff", - "last_checkpoint": "xiaobai-preservation-slice-11-audit-candidate-20260731", + "last_checkpoint": "xiaobai-preservation-slice-11-audit-candidate-20260801", "next_action": "user_acceptance_on_local_port_8797_then_confirm_or_restore_each_trial_retirement; do_not_switch_docker_or_nas_before_approval", "authoritative_documents": [ "AGENTS.md", diff --git a/docs/migration/保真迁移账本.md b/docs/migration/保真迁移账本.md index bf46442..4750116 100644 --- a/docs/migration/保真迁移账本.md +++ b/docs/migration/保真迁移账本.md @@ -216,6 +216,10 @@ `app/config/architecture-inventory.json`;逐项结论见`completion-audit.md`。 - 严格审计回档标签为`xiaobai-preservation-slice-11-audit-candidate-20260731`。该标签仍不是最终 完成标签,未改变试删候选、人工验收和部署切换边界。 +- 2026-08-01跨日复验发现原版与候选共用的一项实时详情测试夹具依赖运行日,进入周六后会把 + 非交易日误作预期合并日;两版测试夹具同步固定到明确工作日,产品代码和日期规则未改。 +- 跨日修复后统一验收再次通过302项Python测试、24个JavaScript文件、SQLite完整性和45项 + Playwright;新增候选回档标签`xiaobai-preservation-slice-11-audit-candidate-20260801`。 ## 决策记录 diff --git a/tests/test_stock_detail_realtime.py b/tests/test_stock_detail_realtime.py index cd98358..e9d91f2 100644 --- a/tests/test_stock_detail_realtime.py +++ b/tests/test_stock_detail_realtime.py @@ -46,7 +46,7 @@ class RealtimeClientStub: class FixedMarketDatetime(datetime): - fixed_now = datetime.now().astimezone().replace(hour=10, minute=30, second=0, microsecond=0) + fixed_now = datetime(2026, 7, 31, 10, 30).astimezone() @classmethod def now(cls, tz=None): @@ -54,7 +54,7 @@ class FixedMarketDatetime(datetime): class FixedPreopenDatetime(datetime): - fixed_now = datetime.now().astimezone().replace(hour=8, minute=45, second=0, microsecond=0) + fixed_now = datetime(2026, 7, 31, 8, 45).astimezone() @classmethod def now(cls, tz=None):