Skip to content

feat(ratewise): v2 等值雙列功能補全第二波(E8 wave-B) - #668

Merged
s123104 merged 1 commit into
experiment/ratewise-product-2026h2from
feat/e8-v2-completeness-wave-b
Jul 7, 2026
Merged

feat(ratewise): v2 等值雙列功能補全第二波(E8 wave-B)#668
s123104 merged 1 commit into
experiment/ratewise-product-2026h2from
feat/e8-v2-completeness-wave-b

Conversation

@s123104

@s123104 s123104 commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

嚴禁 merge:本 PR 依 E8 派工開出,等待使用者明確批准後才可合併。

Closes #620

摘要

.claude/prds/converter-v2-completeness-design.md 第 3 節裁決 #3/#5/#8/#10,於 v2 等值雙列補全第二波四項能力。未動 #667 wave-A 守門機制(settle/quick chips/翻轉/複製)、#660 pills、#659 basis 同源;#665 card 於 v2 維持禁用(本波不碰 card)。

四缺口實作說明

缺口 3:換錢所來源切換

缺口 5:運算式列

  • ConverterKeypad 新增 onExpressionChange 回報原始表達式;父層判斷「含運算子」才視為計算進行中
  • 顯示於活躍列頂緣的 absolute overlaypointer-events-none、右對齊、超長左緣截尾保最新輸入)——顯示/隱藏零位移(CLS 0),不佔版面高度
  • settle(停頓 2s/切列)與語意變更(swap/幣別/基準/來源)即隱藏;運算子按鍵同步展延同一 settle 計時器(無平行計時器)
  • e2e 斷言:運算式列顯示期間 scrollHeight 不變(三視口零捲動硬約束不回歸)

缺口 8:趨勢 sheet 強化

  • 基準切換:sheet 內嵌現金/即期 SegmentedControl(min/max 同列右側);sheet 專屬 useConverterTrend 序列走 resolveTrendSeries[enhancement] 趨勢圖歷史資料僅現金賣出基準,與卡片所選費率模式不一致 #564)——即期序列不足誠實回落現金且標註同步(值-標籤同源,KRW 情境有單元測試鎖定);換錢所來源時隱藏(無現金/即期語意)
  • 基準選擇以 pair+卡片基準為鍵,pair 或卡片基準變更即回落跟隨卡片(render 期推導,免 effect)
  • 攻略連結:以 seo-paths.ts SSOT(isCurrencyPagePathisReverseCurrencyPagePath)判斷 /{pair}/ 落地頁存在才渲染「查看 {幣別} 攻略 →」(react-router Link,點擊即關 sheet);不存在(如 USD→JPY)零暴露
  • 數據點 hover/touch 值:sheet 圖表傳入 basisLabel 啟用 MiniTrendChart 既有 crosshair tooltip(日期+數值+基準標註)

缺口 10:SR 播報(Closes #620

  • settle 事件共用觸發(與歷史寫入同一 flush,無平行計時器):aria-live="polite" + role="status"sr-only 摘要區常駐 DOM
  • 格式「{amount} {from} 等於 {result} {to}」,4 語系(zh-TW/en/ja/ko,key:converterV2.settleAnnouncement,含插值槽守門測試)
  • 非逐鍵:節流即 settle 機制本身(2s 停頓/切列才播報);B1 零值守門共用(金額 0/空不播報);視覺零變化

文案同步檢查結果

已檢查 seo-metadata(core.ts/currency-landing.ts)與 FAQ/指南文案:快速金額按鈕、換算歷史記錄的描述均為通用陳述,無「僅單幣別傳統模式」「經典模式限定」類限定語(wave-A/B 補齊後描述對 v2 自動成立),故 SSOT 層無需修改。

驗收

  • 三視口零捲動:e2e 既有 E8 佈局預算 斷言不動全綠;運算式列 overlay 顯示期間 scrollHeight 不變斷言新增
  • 320px:換錢所切換鈕加入後 chip 列無水平溢出(e2e 斷言 chip/source/flip 右緣 ≤ 320)
  • 趨勢基準值-標籤同步:KRW 即期缺失誠實回落單元測試(序列與標註同回落現金賣出)
  • SR:aria-live 單元測試(常駐 region/settle 播報/逐鍵不播/零值守門/sr-only)+ 4 語系 key 守門
  • pnpm --filter @app/ratewise exec vitest run4948 passed(188 檔,含 wave-A 全部守門)
  • converter-v2 e2e:28 passed(chromium-desktop+chromium-mobile)
  • pre-commit(lint-staged/typecheck/format/002 記分守門)與 pre-push(typecheck/test/build:ratewise)全過

截圖矩陣(QA 暫存 screenshots/,依 SOP 不入 commit)

視口 運算式列 換錢所切換 趨勢 sheet
390×844 wave-b-expression-390.png wave-b-exchange-shop-390.png wave-b-trend-sheet-390.png
375×667 wave-b-expression-375.png wave-b-exchange-shop-375.png wave-b-trend-sheet-375.png
320×844 wave-b-expression-320.png wave-b-exchange-shop-320.png wave-b-trend-sheet-320.png

另有 e2e 證據截圖於 test-results/v2-e8-expression-row-*v2-e8-rate-source-320-*v2-e8-trend-sheet-*)。

依據

Made with Cursor

- 換錢所來源切換:rate chip 同列 icon-only 鈕(支援幣別才渲染、零暴露),接上 659 換錢所標籤分支
- 換錢所啟用中 chip tap=回銀行基準(對齊 v1 pill 語意);來源切換取消 pending settle(B2)
- 運算式列:keypad 回報表達式,含運算子才顯示於活躍列 absolute overlay,settle/語意變更即隱藏
- overlay 不佔版面高度:三視口零捲動硬約束不回歸(e2e 斷言 scrollHeight 不變)
- 趨勢 sheet:內嵌現金/即期基準切換,sheet 專屬序列走 resolveTrendSeries 誠實回落,值-標籤同源
- 趨勢 sheet:seo-paths SSOT 判斷 pair 落地頁存在才顯示「查看幣別攻略」連結,chart 啟用 tooltip 基準標註
- SR 播報(issue 620):settle 事件共用觸發 aria-live=polite 摘要,4 語系、非逐鍵、B1 零值守門共用

測試:ratewise vitest 4948 passed(含 wave-A 守門);converter-v2 e2e 28 passed(desktop+mobile,含 320px 不溢出)

Co-authored-by: Cursor <cursoragent@cursor.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

✅ SEO 審計通過!所有 2026 標準驗證項目都符合要求。

  • ✅ Sitemap 2026 標準
  • ✅ Breadcrumb Schema
  • ✅ JSON-LD 結構化數據
  • ✅ 內部連結結構

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant