Files
Jyotisha/docs/tasks/PROGRESS-chart-page-blocking-open-20260915.md
T
jesse-ux 5a8328e591
Independent Staging Quality Gate / validate (push) Successful in 27m22s
Independent Staging Quality Gate / publish (push) Canceled after 47s
fix(web): paint the chart page shell before engine calls
BUG-715/716/717: typed engine failures with logs and split copy, natal-only open, on-demand tabs, 10s timeout, in-memory cache, no speed-promise eyebrow.
2026-09-15 22:51:15 +08:00

4.5 KiB
Raw Blame History

PROGRESS · 星盘页开页不再整页阻塞(2026-09-15)

工作树:.worktrees/chart-page-blocking-open-20260915
分支:codex/chart-page-blocking-open-20260915
任务书基线:origin/staging @ 8caa2a2b(任务书本身;代码基线 2533d5a3
本机 Windows。

Skill 未 bump。未改 scripts/**deploy/**vendor/**frontend/src/app/page.tsxvedic-chart-svg.tsx。未放宽 HEAVY_COMPUTE_PATHS / JYOTISH_HEAVY_COMPUTE_CONCURRENCY

开工基线

数字
frontend/src/app/page.tsx 1951
最大 BUG 号 BUG-714(本单占用 715717
tsc --noEmit 收尾 0 错
npm run lint 0 error(全仓既有 warning 119;本单新文件 0 warning

frontend/node_modules 用 junction 指向主仓。

任务状态

任务 状态 说明
1 BUG-715 失败可诊断 完成 ok / busy / http_error / timeout / bad_payload;非 ok 打 console.warn(路径、状态码或错误名、耗时;不含资料);429 与其它分档文案;catch {} 去掉
2 BUG-716 开页不阻塞 完成 /chart 改为静态壳;进页只算 /api/chart;四个后续按 tab / 非 D1 chip 按需;超时 10 秒
3 BUG-717 配额与文案 完成 开页不再打 western / qizheng;内存缓存 5 分钟,键含 ayanamsa + node_mode;失败页无眉标;成功眉标去掉「打开即有」
4 测试与文档 完成 BUG-715/716/717、DESIGN、VOICE、CHANGELOG、真人清单、PROGRESS

实现要点

  • postEngine 不再 return null。分类在 chart-view-engine.ts,日志在 assembleChartViewcallEngine 包装层,mapper catch (error)errorName + message
  • /chart 不再 force-dynamic、不再 await loadChartView()ChartPageRoute 先画外壳,再 GET /api/chart-view。未登录仍跳 /login
  • GET /api/chart-view?layers=varga,chara,western,qizheng 按需取后续。缺省 layers 只有 /api/chart
  • 等待态沿用星历页静态句:「这一张盘还没拿到。」「这一栏还没拿到。」「这一分盘还没拿到。」揭幕后无 spinner / 骨架 / 「正在加载」。
  • 引擎结果缓存在 Next 进程内存(与 rate-limit / feature-flag 同一做法)。api_scratch 在 API 容器上,BFF 没有这个卷,没有新依赖。失败不写缓存。TTL 5 分钟。

超时取值

CHART_VIEW_ENGINE_TIMEOUT_MS = 10_000。任务书实测 /api/chart 0.60 秒、五个合计 0.75 秒。45 秒大两个数量级,只会让人盯空白。10 秒大约是实测的 16 倍,给冷启动和跨容器网络留余量;挂起时十秒内落到失败文案。

既有断言改动

文件 原值 新值 原因
chart-page-view.test.tsx 成功页眉标 直接计算 · 打开即有 · 不消耗点数 主盘直接算 · 分盘按需 · 不消耗点数 BUG-717:打开即有是速度承诺,且曾印在失败页上
chart-view-route.test.ts western/qizheng 是否被调用 无 layers 也会打 /api/western/api/qizheng 只有请求对应 layer 才打;无 layers 时路径只有 /api/chart BUG-716/717 开页不得占满重计算配额
assembleChartViewpostEngine 形状 Record | null EngineCallResult BUG-715 失败必须带原因

未弱化其它既有断言。未改 page.tsx(仍 1951 行)。

测试

命令 结果
npx tsx --test tests/chart-view-engine.test.ts tests/chart-view-route.test.ts tests/chart-page-view.test.tsx 27 pass / 0 fail(本单相关;其中新增约 12 条)
./node_modules/.bin/tsc --noEmit 0 错
npm run lint 0 error119 条既有 warning,本单新文件未新增)
page.tsx 仍 1951 行,未改
npx next build --webpack compile + TypeScript 过;Collecting page data 死在既有 SkillPackageRegistryErrorEPERM symlink /api/birth-time-guide),与本单无关。未能从本机构建表确认 //chart○ Static。源码合同:chart/page.tsx 已去掉 force-dynamic / loadChartView
npm test 全量 # tests 3101 / # pass 3014 / # fail 73 / # skipped 14。失败集中在无 Docker 的 database-*、部署/Caddy、Skill SHA、Windows 路径。失败清单不含本单文件。本机不是 Linux 验收机。

环境缺口

  • 无登录态、无 Chrome:真人走查见 docs/testing/chart-page-open-20260915.md
  • next build 收集页面数据时 symlink EPERM,无法在本机核对路由表。