rebuild(stage-15): complete governance and handoff

This commit is contained in:
leefer
2026-07-30 08:46:12 +08:00
parent fa7a8dde06
commit d1b3b977d2
14 changed files with 498 additions and 13 deletions
+136
View File
@@ -0,0 +1,136 @@
# 产品规格覆盖矩阵
本矩阵以《小白复盘完整产品规格说明书》第25节的85个固定案例为唯一编号源。
“自动”表示确定性单元/API测试;“浏览器”表示Playwright交互、响应式断言和阶段截图共同验收。
两者都不是仅检查页面能否打开。
## 账户、权限与隔离
| 编号 | 证据 | 状态 |
|---|---|---|
| A01 | `test_first_account_is_admin_and_second_is_regular_user` | 自动通过 |
| A02 | 同A01及`stage4.spec.js`普通账号流程 | 自动+浏览器通过 |
| A03 | `test_membership_and_admin_are_independent_dimensions` | 自动通过 |
| A04 | 同A03,管理员智能权限与会员标识分别断言 | 自动通过 |
| A05 | `stage4.spec.js`非会员完整锁定结构 | 浏览器通过 |
| A06 | `test_watchlist_repository_isolates_accounts` | 自动通过 |
| A07 | `test_private_review_records_are_strictly_scoped_and_daily_notes_upsert` | 自动通过 |
| A08 | `test_non_admin_cannot_read_or_write_system_credentials` | 自动通过 |
| A09 | `test_csrf_password_change_and_other_session_revocation` | 自动通过 |
| A10 | `stage4.spec.js`账户五项菜单与弹窗 | 浏览器通过 |
## 日期与数据真相
| 编号 | 证据 | 状态 |
|---|---|---|
| D01 | `test_latest_daily_chart_drops_empty_premarket_bar`及交易上下文样本 | 自动通过 |
| D02 | `test_trade_context_keeps_real_snapshot_date` | 自动通过 |
| D03 | iFinD时间戳规范化测试及`stage5.spec.js`摘要时间 | 自动+浏览器通过 |
| D04 | 市场快照最终态测试及`stage5.spec.js` | 自动+浏览器通过 |
| D05 | 请求日、实际日分离的市场上下文测试 | 自动通过 |
| D06 | `test_trade_context_keeps_real_snapshot_date`的沿用快照断言 | 自动通过 |
| D07 | `stage4.spec.js`首次无快照空态 | 浏览器通过 |
| D08 | `stage4.spec.js`后台刷新保持当前工作区 | 浏览器通过 |
| D09 | `stage6.spec.js`默认情绪周期与最新日期 | 浏览器通过 |
## 图表与详情
| 编号 | 证据 | 状态 |
|---|---|---|
| C01 | `test_latest_daily_chart_drops_empty_premarket_bar` | 自动通过 |
| C02 | `stage5.spec.js`历史页面日期与最新悬浮行情分离 | 浏览器通过 |
| C03 | `test_minute_chart_contract_has_real_session_bounds_and_hides_source` | 自动通过 |
| C04 | `MarketChart.vue`实体/影线分段及阶段5截图 | 浏览器通过 |
| C05 | 主题令牌加载态及阶段5夜间截图 | 浏览器通过 |
| C06 | `stage5.spec.js`个股详情完整入口 | 浏览器通过 |
| C07 | `stage5.spec.js`非个股详情边界 | 浏览器通过 |
| C08 | 图表前收契约测试及详情摘要浏览器断言 | 自动+浏览器通过 |
## 情绪与市场页面
| 编号 | 证据 | 状态 |
|---|---|---|
| M01 | `test_sentiment_has_all_weighted_components_and_extreme_risk_cap` | 自动通过 |
| M02 | `test_sentiment_phase_transitions_require_confirmed_recovery_and_fermentation` | 自动通过 |
| M03 | 同M02的连续发酵确认断言 | 自动通过 |
| M04 | `stage6.spec.js`当前阶段警示文本 | 浏览器通过 |
| M05 | `stage6.spec.js`明细范围、整页滚动和末行可达 | 浏览器通过 |
| M06 | `stage6.spec.js`低行数股池固定状态栏 | 浏览器通过 |
| M07 | `stage7.spec.js`天梯展开、收起、滚动与等宽格 | 浏览器通过 |
| M08 | `stage6.spec.js`动态板高与涨停表现布局 | 浏览器通过 |
| M09 | `test_sector_members_are_normalized_and_persistently_cached``stage7.spec.js` | 自动+浏览器通过 |
## 竞价、题材、热榜与龙虎榜
| 编号 | 证据 | 状态 |
|---|---|---|
| X01 | `test_auction_lifecycle_uses_live_snapshot_then_archives_925_result` | 自动通过 |
| X02 | `test_observing_without_dynamic_data_never_disguises_previous_archive` | 自动通过 |
| X03 | X01的9:26选定态断言 | 自动通过 |
| X04 | `test_auction_keeps_market_cores_and_isolates_real_limit_price` | 自动通过 |
| X05 | 同X04的新规ST 10%涨跌幅样本 | 自动通过 |
| X06 | 同X04的市场核心超限保留断言 | 自动通过 |
| X07 | 竞价成交额单一聚合结果及`stage8.spec.js`摘要/柱图 | 自动+浏览器通过 |
| X08 | `stage8.spec.js`题材悬浮统一预览与无固定K线模块 | 浏览器通过 |
| X09 | `test_popularity_preserves_single_source_without_false_consensus`及阶段8空态 | 自动+浏览器通过 |
| X10 | `test_dragon_list_distinguishes_missing_and_unclassified_seats` | 自动通过 |
| X11 | `stage8.spec.js`左名录右详情、无弹窗 | 浏览器通过 |
## 智能选股
| 编号 | 证据 | 状态 |
|---|---|---|
| S01 | `test_curated_strategies_run_independently_of_emotion_phase` | 自动通过 |
| S02 | `test_missing_required_factor_and_complete_no_match_are_distinct` | 自动通过 |
| S03 | 同S02的数据不足分支 | 自动通过 |
| S04 | `test_formula_is_deterministic_and_best_value_scores_first`及幂等运行测试 | 自动通过 |
| S05 | 按策略标识持久化运行及`stage9.spec.js`模式切换 | 自动+浏览器通过 |
| S06 | 多策略独立运行Repository测试及策略面板切换 | 自动+浏览器通过 |
| S07 | `stage9.spec.js`三模式独立结果容器 | 浏览器通过 |
| S08 | `stage9.spec.js`未执行/无信号状态 | 浏览器通过 |
| S09 | 自定义公式确定性引擎测试;LLM仅编译受控公式 | 自动通过 |
| S10 | `test_formula_weights_must_total_one_hundred_percent` | 自动通过 |
| S11 | `test_running_a_strategy_never_creates_tracking_rows` | 自动通过 |
| S12 | `stage9.spec.js`手动加入及入选价 | 自动+浏览器通过 |
| S13 | `test_custom_strategies_and_tracks_are_account_isolated` | 自动通过 |
| S14 | `test_tracking_statistics_and_milestone_events_are_persistent_and_idempotent` | 自动通过 |
## 问师、问天与LLM
| 编号 | 证据 | 状态 |
|---|---|---|
| L01 | `test_stream_accumulator_does_not_repeat_final_snapshot` | 自动通过 |
| L02 | `test_main_failure_before_first_delta_falls_back_and_counts_once` | 自动通过 |
| L03 | `test_failure_after_first_delta_keeps_partial_and_never_falls_back` | 自动通过 |
| L04 | `test_context_profiles_are_distinct_and_dragon_data_is_question_driven` | 自动通过 |
| L05 | 阶段10、11、12三个非会员同结构锁定E2E | 浏览器通过 |
| W01 | `stage11.spec.js`观势初始空态 | 浏览器通过 |
| W02 | `test_small_sector_with_five_of_five_quotes_passes_all_gates` | 自动通过 |
| W03 | `test_manual_objective_sector_value_recomputes_without_overwriting_valid_data` | 自动通过 |
| W04 | `test_missing_one_formal_index_fails_closed` | 自动通过 |
| W05 | `test_daily_fortune_is_created_once_even_before_interpretation` | 自动通过 |
| W06 | `heartTiming.test.ts``stage11.spec.js` | 自动+浏览器通过 |
| W07 | `test_each_heart_cast_appends_exactly_one_line` | 自动通过 |
| W08 | `test_hexagram_is_deterministic_and_contains_only_six_lines`及阶段11页面断言 | 自动+浏览器通过 |
| W09 | 阶段11夜间观心截图和可读性断言 | 浏览器通过 |
## 复盘、主题与响应式
| 编号 | 证据 | 状态 |
|---|---|---|
| R01 | `stage12.spec.js`交易日志保存、Toast与无异常弹窗 | 浏览器通过 |
| R02 | `test_trade_summary_uses_only_realized_fields_and_keeps_zero_in_denominator` | 自动通过 |
| R03 | `test_private_review_records_are_strictly_scoped_and_daily_notes_upsert` | 自动通过 |
| R04 | `stage12.spec.js`历史展开、收起与滚动 | 浏览器通过 |
| U01 | 阶段4至13日夜切换E2E,无白闪/控制台错误 | 浏览器通过 |
| U02 | 阶段6的1920×1080整页滚动与明细可达 | 浏览器通过 |
| U03 | 阶段11观气/观心滚动与背景断言 | 浏览器通过 |
| U04 | 阶段4至13的3840×2160截图及密度验收 | 浏览器通过 |
| U05 | `stage13.spec.js`390×844、五入口与44px触控目标 | 浏览器通过 |
| U06 | `stage13.spec.js`320px 16工作区、纵向记录/局部横滚 | 浏览器通过 |
## 汇总
- 固定案例:85/85已有可追踪证据。
- 确定性、权限、隔离和失败语义均由自动测试覆盖;视觉案例同时保留真实浏览器截图。
- Docker镜像构建、NAS容器重启与正式端口切换不属于85个页面案例,但仍是切换前阻断项,见`cutover-checklist.md`