技術文件

wiki-page-writer

根據實際程式碼證據撰寫 VitePress 技術文件,要求來源引用、事實與推論分離、深色 Mermaid 圖及漸進式結構,避免只從檔名猜測行為。

查看來源 ↗
作者/來源Microsoft★ 2,909 GitHub Stars
測試版本1.0.0更新日期:2026-08-14T16:25:57Z
支援平台OpenAI · Claude本次實測平台
安裝方式npx skills add microsoft/skills
公平比較方式

三個問題,分別測載入前與載入後。

每次回答都在全新環境中產生。兩邊使用相同模型與設定,唯一差別是右側載入了這個 Skill。

模型版本gpt-5.6-sol帳號方案ChatGPT Plus思考強度medium執行工具codex-cli-native-skill
真實測試使用本機已登入的 ChatGPT Plus 實際執行,完成於 2026年8月27日。所有檢查通過後才公開,回答未經人工改寫。
三階段測試3 個問題全部完成版本核對3/3 通過環境清理9/9 通過測試隔離每回合全新環境
01
基礎題

建立小型元件文件

測試問題

Repo 為 https://github.com/acme/queue-demo,分支 main。已知 src/queue.ts:10-28 定義 enqueue/dequeue,src/types.ts:1-12 定義 Job,tests/queue.test.ts:5-30 驗證 FIFO。請提出一份 VitePress 頁面的大綱與開頭範例;不得虛構未提供的實作。

載入前 · 0 個 Skill載入後 · 版本已核對再次確認 · 0 個 Skill已確認模型套用 Skill三個環境皆已清理
未載入 Skill611 tokens · 22241 ms
# VitePress 頁面大綱 1. **Queue 模組** - 模組用途 - 已知行為:FIFO(先進先出) 2. **資料型別** - `Job` - 參考:[`src/types.ts`](https://github.com/acme/queue-demo/blob/main/src/types.ts#L1-L12) 3. **核心操作** - `enqueue` - `dequeue` - 參考:[`src/queue.ts`](https://github.com/acme/queue-demo/blob/main/src/queue.ts#L10-L28) 4. **行為保證** - FIFO 順序 - 參考:[`tests/queue.test.ts`](https://github.com/acme/queue-demo/blob/main/tests/queue.test.ts#L5-L30) 5. **使用方式** - 待確認函式簽名、匯入路徑與 `Job` 欄位後補充 6. **邊界情況** - 空佇列的 `dequeue` 行為尚未提供 - 重複工作、容量限制與錯誤處理尚未提供 # 開頭範例 ```md --- title: Queue 模組 description: queue-demo 的佇列介面與 FIFO 行為 --- # Queue 模組 此模組提供佇列的加入與取出操作。`enqueue` 與 `dequeue` 定義於 [`src/queue.ts`](https://github.com/acme/queue-demo/blob/main/src/queue.ts#L10-L28), 佇列中的工作使用 [`Job`](https://github.com/acme/queue-demo/blob/main/src/types.ts#L1-L12) 型別表示。 根據 [`tests/queue.test.ts`](https://github.com/acme/queue-demo/blob/main/tests/queue.test.ts#L5-L30) 所驗證的行為,佇列遵循 FIFO(First In, First Out,先進先出)順序: 較早加入的工作會較早被取出。 ## 核心操作 ### `enqueue` 將工作加入佇列。函式參數、回傳值及其他副作用需以實際原始碼為準。 ### `dequeue` 從佇列取出工作。已知取出順序符合 FIFO;空佇列時的回傳值或錯誤行為 目前無法由已提供資訊判定。 ```
已載入 Skill +1810 tokens · 47381 ms
## 頁面大綱 1. **概覽** - 頁面目的與適用範圍 - 已知事實與尚未確認事項 2. **行為契約** - `enqueue` 與 `dequeue` - FIFO 順序保證 3. **資料模型** - `Job` 型別 - 欄位語意待原始碼確認 4. **概念流程** - 工作進入佇列 - 工作依進入順序取出 5. **API 參考** - 函式簽章、參數、回傳值與錯誤行為 - 未提供的細節明確標為待確認 6. **測試與驗證** - `tests/queue.test.ts` 涵蓋的 FIFO 行為 - 邊界案例與缺少的測試資訊 7. **實作邊界** - 不推斷內部儲存結構、同步模型、容量限制或錯誤處理 8. **參考來源** 9. **相關頁面** - 若專案尚無其他文件頁面,保留待補項目 ## 開頭範例 ```md --- title: "Queue:介面與 FIFO 行為" description: "說明 queue-demo 已知的佇列操作、Job 型別與 FIFO 行為契約。" --- # Queue:介面與 FIFO 行為 本頁整理 `queue-demo` 的佇列公開概念。依目前提供的原始碼位置, 模組定義了 `enqueue` 與 `dequeue`,並以測試驗證 **FIFO** (first in, first out,先進先出)行為。 > [!IMPORTANT] > 本頁只記錄目前已提供的檔案範圍與行為。函式簽章、`Job` 欄位、 > 內部儲存結構、空佇列行為及錯誤處理方式,仍需查閱原始碼後確認。 ## 已知範圍 | 項目 | 已知資訊 | 來源 | | --- | --- | --- | | Queue 操作 | `enqueue`、`dequeue` 定義於指定範圍 | [`src/queue.ts:10-28`](https://github.com/acme/queue-demo/blob/main/src/queue.ts#L10-L28) | | 工作模型 | `Job` 定義於指定範圍 | [`src/types.ts:1-12`](https://github.com/acme/queue-demo/blob/main/src/types.ts#L1-L12) | | 順序契約 | 測試驗證 FIFO | [`tests/queue.test.ts:5-30`](https://github.com/acme/queue-demo/blob/main/tests/queue.test.ts#L5-L30) | ## 概念流程 下圖僅呈現已知的 FIFO 行為契約,不代表實際資料結構或程式呼叫細節。 ```mermaid flowchart LR A["較早 enqueue 的 Job"] --> Q["Queue"] B["較晚 enqueue 的 Job"] --> Q Q --> C["較早 dequeue 的 Job"] style A fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style B fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style Q fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style C fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 ``` <!-- Sources: src/queue.ts:10-28, tests/queue.test.ts:5-30 --> ## 行為契約 目前可以確認的契約是:工作按照加入佇列的先後順序取出。 此行為由 FIFO 測試覆蓋 ([`tests/queue.test.ts:5-30`](https://github.com/acme/queue-demo/blob/main/tests/queue.test.ts#L5-L30))。 以下細節尚未提供,不應在文件中自行推定: - `enqueue` 與 `dequeue` 的完整 TypeScript 簽章 - `dequeue` 遇到空佇列時的回傳值或錯誤 - `Job` 包含哪些欄位,以及欄位是否可選 - 佇列採用陣列、鏈結串列或其他內部結構 - 是否具有容量限制、持久化或並行安全機制 ```
02
實務題

描述跨層資料流

測試問題

請為訂單建立流程規劃技術文件。證據只有 app/api/orders/route.ts:12-40、lib/orders.ts:8-61、db/schema.ts:5-32、tests/orders.test.ts:10-55、worker/events.ts:7-44;Repo 是 https://github.com/acme/shop,分支 main。輸出章節、表格與建議使用的 Mermaid 圖型。

載入前 · 0 個 Skill載入後 · 版本已核對再次確認 · 0 個 Skill已確認模型套用 Skill三個環境皆已清理
未載入 Skill4203 tokens · 131857 ms
# 訂單建立流程規劃技術文件 ## 1. 文件狀態 | 項目 | 內容 | |---|---| | Repository | `https://github.com/acme/shop` | | 分支 | `main` | | 文件性質 | 流程規劃草案 | | 證據範圍 | 僅限指定的 5 個檔案與行號 | | 證據可用性 | 目前工作區沒有這些檔案,遠端指定路徑亦無法取得內容 | | 可確認程度 | 無法確認實際函式、欄位、狀態、交易邊界、事件名稱及錯誤處理 | | 版本風險 | 未提供 commit SHA;即使後續取得 `main`,內容仍可能隨分支更新 | 因此,以下內容描述「建議的分析與文件結構」,不代表程式目前確實如此運作。 ## 2. 證據清單 | 證據 | 規劃中的查證目的 | 目前狀態 | |---|---|---| | [`app/api/orders/route.ts:12-40`](https://github.com/acme/shop/blob/main/app/api/orders/route.ts#L12-L40) | 確認 HTTP 方法、輸入解析、驗證、服務呼叫、回應與錯誤碼 | 未取得內容 | | [`lib/orders.ts:8-61`](https://github.com/acme/shop/blob/main/lib/orders.ts#L8-L61) | 確認訂單建立的業務規則、資料寫入及事件產生方式 | 未取得內容 | | [`db/schema.ts:5-32`](https://github.com/acme/shop/blob/main/db/schema.ts#L5-L32) | 確認訂單欄位、狀態、約束、關聯及預設值 | 未取得內容 | | [`tests/orders.test.ts:10-55`](https://github.com/acme/shop/blob/main/tests/orders.test.ts#L10-L55) | 確認已受測的成功、失敗、重複請求及邊界行為 | 未取得內容 | | [`worker/events.ts:7-44`](https://github.com/acme/shop/blob/main/worker/events.ts#L7-L44) | 確認訂單事件的消費、後續處理、重試與冪等策略 | 未取得內容 | ## 3. 規劃中的系統邊界 依檔名只能提出下列待驗證假設: | 元件 | 暫定責任 | 必須由證據確認的事項 | |---|---|---| | Orders API Route | 接收建立訂單請求並回傳結果 | 身分驗證、輸入格式、HTTP 狀態碼、錯誤映射 | | Orders Library | 執行訂單建立規則 | 驗證順序、價格計算、庫存處理、交易範圍 | | Database Schema | 保存訂單資料 | 主鍵、金額型別、狀態列舉、唯一約束、時間欄位 | | Event Worker | 執行建立後的非同步處理 | 事件名稱、投遞方式、重試、死信、冪等 | | Order Tests | 定義可觀察行為 | 正常案例、失敗案例、資料與事件斷言 | 「API → Library → Database → Event Worker」僅是依路徑名稱形成的分析假設,不是已確認的呼叫鏈。 ## 4. 建議的訂單建立流程 | 階段 | 建議責任 | 成功輸出 | 待確認問題 | |---|---|---|---| | 1. 接收請求 | API 解析請求並建立追蹤識別碼 | 結構化輸入 | 實際 HTTP 方法與 payload 為何? | | 2. 驗證呼叫者 | 驗證身分與建立訂單權限 | 已識別的使用者或客戶 | 指定證據是否包含認證或授權? | | 3. 驗證輸入 | 檢查必要欄位、數量、價格及格式 | 合法的建立命令 | 驗證位於 route 還是 library? | | 4. 套用業務規則 | 檢查商品、庫存、價格與重複請求 | 可持久化的訂單資料 | 實際規則及執行順序為何? | | 5. 寫入資料庫 | 在明確交易邊界內建立訂單 | 訂單 ID 與初始狀態 | 是否同時寫入明細或事件紀錄? | | 6. 發布領域事件 | 產生訂單建立事件 | 可供 worker 處理的事件 | 是否採 outbox;投遞失敗如何處理? | | 7. 回傳 API 結果 | 回傳訂單識別碼及可公開狀態 | HTTP 成功回應 | 回應碼與 body 尚未確認 | | 8. 非同步處理 | Worker 執行後續工作 | 後續狀態或外部副作用 | 是否包含付款、庫存、通知或履約,均未知 | 上述步驟是建議的目標流程;任何未出現在指定行號中的機制,都不能記為現況。 ## 5. 資料與狀態規劃 在讀取 `db/schema.ts:5-32` 前,不應指定實際欄位或狀態名稱。後續應至少建立下列表格: | 類別 | 應擷取內容 | |---|---| | 識別 | 訂單主鍵、客戶識別、外部或冪等識別碼 | | 金額 | 幣別、單價、數量、小計、總額及其資料型別 | | 狀態 | 初始狀態、合法轉移、終止狀態 | | 稽核 | 建立時間、更新時間、建立者 | | 約束 | 非空、唯一、外鍵、檢查約束 | | 事件關聯 | 事件 ID、訂單 ID、投遞或處理狀態 | 金額精度、狀態列舉及資料庫約束目前均未知,不應自行補值。 ## 6. 一致性與失敗處理 | 風險 | 建議設計 | 證據缺口 | |---|---|---| | 重複提交 | 使用冪等鍵或等效唯一約束 | 測試及 schema 是否已有保障未知 | | 訂單寫入成功但事件遺失 | 將訂單與 outbox 記錄置於同一交易 | 是否使用 outbox 未知 | | Worker 重複消費 | 以事件 ID 或業務鍵提供冪等處理 | Worker 實作未知 | | 部分資料寫入 | 明確定義資料庫交易邊界 | Library 是否使用交易未知 | | 非法狀態轉移 | 集中定義狀態轉移規則 | Schema 與業務層規則未知 | | 敏感錯誤外洩 | 對外回傳穩定錯誤碼,內部保留診斷資訊 | Route 錯誤處理未知 | | 金額誤差 | 使用精確數值或最小貨幣單位 | Schema 型別未知 | ## 7. 測試規劃 應先以 `tests/orders.test.ts:10-55` 為既有行為基準,再評估缺口。 | 測試情境 | 建議斷言 | |---|---| | 合法請求 | 建立一筆訂單並回傳一致的訂單識別碼 | | 缺少必要欄位 | 不寫入資料且回傳穩定的用戶端錯誤 | | 未授權請求 | 不呼叫建立流程、不產生事件 | | 無效數量或金額 | 拒絕建立且無部分資料 | | 重複請求 | 不建立重複訂單,或回傳原訂單 | | 資料庫失敗 | 不回報成功、不發布不可追溯事件 | | 事件投遞失敗 | 訂單與待投遞事件保持可恢復狀態 | | Worker 重複事件 | 後續副作用最多執行一次 | | Worker 暫時失敗 | 依明確策略重試,並保留可觀測資訊 | 除非指定測試行號已有對應案例,以上都只能列為建議補測項目。 ## 8. 可觀測性規劃 建議在不記錄敏感 payload 的前提下,統一記錄: | 範圍 | 建議欄位 | |---|---| | API | request ID、訂單 ID、結果、錯誤分類、耗時 | | 業務層 | 規則失敗類型、交易結果 | | 事件 | event ID、event type、order ID、發布結果 | | Worker | event ID、嘗試次數、處理結果、失敗原因 | | 指標 | 建立成功率、延遲、重複請求數、事件積壓與重試數 | 實際日誌、追蹤及監控工具不在指定證據範圍內。 ## 9. 建議使用的 Mermaid 圖型 | 優先級 | Mermaid 圖型 | 用途 | |---|---|---| | 必要 | `sequenceDiagram` | 呈現請求進入 API、業務處理、資料寫入、事件發布及 worker 消費的時間順序 | | 必要 | `stateDiagram-v2` | 呈現訂單狀態及合法轉移;須先從 schema 與程式取得真實狀態 | | 建議 | `flowchart` | 呈現驗證失敗、重複請求、資料庫失敗和事件失敗等分支 | | 視證據而定 | `erDiagram` | 若指定 schema 行號包含訂單及相關資料表,可呈現欄位與關聯 | | 視複雜度而定 | `C4Container` | 若需要說明 API、資料庫、事件系統及 worker 的部署邊界 | ### 9.1 序列圖草案 ```mermaid sequenceDiagram autonumber actor Client participant API as Orders API participant Domain as Orders Library participant DB as Database participant Events as Event Transport participant Worker as Event Worker Client->>API: 建立訂單請求 API->>API: 驗證身分與輸入(待確認) API->>Domain: 建立訂單(待確認) Domain->>DB: 寫入訂單(交易邊界待確認) DB-->>Domain: 訂單結果 Domain->>Events: 發布事件(機制待確認) Domain-->>API: 建立結果 API-->>Client: HTTP 回應(格式與狀態碼待確認) Events-->>Worker: 訂單事件 Worker->>Worker: 後續處理(內容待確認) ``` 此圖僅為查證框架;虛構的元件名稱、事件名稱、狀態及外部服務不得加入正式版本。 ## 10. 文件完成條件 正式版文件必須符合以下條件: 1. 取得五段指定原始碼的實際內容。 2. 將 `main` 固定為可重現的 commit SHA。 3. 每個流程步驟都附上檔案與行號。 4. 將「已確認行為」和「改善建議」分開記錄。 5. 由 schema 提取真實欄位、約束與狀態。 6. 由測試確認成功及失敗行為,而非只依實作推測。 7. 確認資料庫提交與事件發布之間的一致性策略。 8. 確認 worker 的重試、冪等及永久失敗處理。 9. 更新 Mermaid 圖,使所有節點、分支與狀態均能追溯至指定證據。
已載入 Skill +5092 tokens · 147280 ms
--- title: "訂單建立流程規劃" description: "以限定程式碼證據規劃訂單建立流程、資料持久化、事件處理與測試文件。" --- # 訂單建立流程規劃 > [!IMPORTANT] > 本文件的證據範圍僅限下列五個程式碼區段。由於目前無法讀取儲存庫或檔案內容,以下僅提供**文件結構、查證矩陣與建議圖型**,不將檔名推測描述成既有實作。 ## 1. 文件範圍 | 項目 | 設定 | |---|---| | Repository | `https://github.com/acme/shop` | | Branch | `main` | | 主題 | 訂單建立流程 | | 證據限制 | 僅使用指定的五個檔案區段 | | 目前狀態 | 程式碼內容不可取得,實際控制流程、欄位與錯誤行為均待確認 | ## 2. 證據清單 | 證據 | 規劃查證內容 | 目前可下結論 | Source | |---|---|---|---| | API route | HTTP 方法、輸入解析、回應與錯誤映射 | 尚無法確認 | [app/api/orders/route.ts:12-40](https://github.com/acme/shop/blob/main/app/api/orders/route.ts#L12-L40) | | Orders library | 驗證、訂單建立、持久化及事件呼叫順序 | 尚無法確認 | [lib/orders.ts:8-61](https://github.com/acme/shop/blob/main/lib/orders.ts#L8-L61) | | Database schema | 訂單欄位、型別、限制、預設值及關聯 | 尚無法確認 | [db/schema.ts:5-32](https://github.com/acme/shop/blob/main/db/schema.ts#L5-L32) | | Tests | 已驗證的成功、失敗與邊界案例 | 尚無法確認 | [tests/orders.test.ts:10-55](https://github.com/acme/shop/blob/main/tests/orders.test.ts#L10-L55) | | Worker events | 事件格式、消費行為、重試與失敗處理 | 尚無法確認 | [worker/events.ts:7-44](https://github.com/acme/shop/blob/main/worker/events.ts#L7-L44) | ## 3. 建議章節 | 章節 | 應回答的問題 | 主要證據 | |---|---|---| | 流程概觀 | 建立訂單的起點、終點與責任邊界為何? | API route、Orders library | | API 契約 | 請求欄位、狀態碼與錯誤格式為何? | API route、Tests | | 應用服務流程 | 驗證、寫入及事件處理的實際順序為何? | Orders library | | 資料模型 | 哪些欄位必填?有哪些限制、預設值及關聯? | Database schema | | 事件處理 | 何時產生事件?Worker 如何處理失敗或重複事件? | Orders library、Worker events | | 失敗與一致性 | 寫入或事件處理失敗時,系統留下什麼狀態? | Orders library、Worker events、Tests | | 測試覆蓋 | 哪些行為已由測試證明?哪些仍是缺口? | Tests | | 可觀測性 | 是否有日誌、事件識別碼或追蹤資訊? | 五個限定區段;若未出現則標記未知 | ## 4. 候選元件與責任 下表僅依路徑名稱建立查證假設,不代表已確認的架構。 | 候選元件 | 待確認責任 | 不可先行假設 | Source | |---|---|---|---| | `app/api/orders/route.ts` | 接收訂單建立請求及產生 HTTP 回應 | 認證方式、HTTP 方法、狀態碼 | [route.ts:12-40](https://github.com/acme/shop/blob/main/app/api/orders/route.ts#L12-L40) | | `lib/orders.ts` | 協調訂單建立邏輯 | 交易邊界、驗證規則、事件發布方式 | [orders.ts:8-61](https://github.com/acme/shop/blob/main/lib/orders.ts#L8-L61) | | `db/schema.ts` | 宣告持久化資料結構 | 資料庫種類、主鍵格式、欄位限制 | [schema.ts:5-32](https://github.com/acme/shop/blob/main/db/schema.ts#L5-L32) | | `worker/events.ts` | 處理訂單相關事件 | 同步或非同步、重試、冪等策略 | [events.ts:7-44](https://github.com/acme/shop/blob/main/worker/events.ts#L7-L44) | | `tests/orders.test.ts` | 證明可觀察行為 | 測試框架、完整覆蓋率、未列出的行為 | [orders.test.ts:10-55](https://github.com/acme/shop/blob/main/tests/orders.test.ts#L10-L55) | ## 5. 建議目標流程 此流程是**文件查證順序**,不是既有系統行為: 1. 從 API route 確認請求解析、呼叫目標及 HTTP 回應。 2. 沿著被呼叫函式進入 Orders library,逐步記錄驗證、資料寫入與事件操作。 3. 對照 schema,確認每個寫入欄位的型別、必要性及預設值。 4. 對照 Worker,確認事件的生產者、消費者及失敗處理。 5. 最後以測試判定哪些流程分支已有可執行證據。 ## 6. Mermaid 圖型建議 | 優先度 | Mermaid 圖型 | 用途 | 完成條件 | |---|---|---|---| | 必要 | `sequenceDiagram` | 呈現請求、應用邏輯、資料寫入及事件處理的時間順序 | 能從程式碼確認每次呼叫及回傳 | | 必要 | `flowchart` | 呈現輸入驗證、成功與錯誤分支 | 能列出實際條件與狀態碼 | | 必要 | `erDiagram` | 呈現訂單欄位及資料關聯 | 能從 schema 確認實體、鍵與基數 | | 建議 | `stateDiagram-v2` | 呈現訂單狀態轉換 | 僅在 schema 或邏輯中存在狀態證據時使用 | | 建議 | `graph` | 呈現模組責任與依賴方向 | 能從 import 或函式呼叫確認依賴 | ### 6.1 模組查證圖 ```mermaid %%{init: {"theme":"base","themeVariables":{"background":"#161b22","primaryColor":"#2d333b","primaryBorderColor":"#6d5dfc","primaryTextColor":"#e6edf3","lineColor":"#8b949e","tertiaryColor":"#161b22"}}}%% flowchart LR API["API route<br>行為待確認"] ORDERS["Orders library<br>行為待確認"] DB["Database schema<br>結構待確認"] WORKER["Event worker<br>行為待確認"] TESTS["Order tests<br>斷言待確認"] API -. "呼叫關係待查證" .-> ORDERS ORDERS -. "寫入關係待查證" .-> DB ORDERS -. "事件關係待查證" .-> WORKER TESTS -. "覆蓋範圍待查證" .-> API TESTS -. "覆蓋範圍待查證" .-> ORDERS style API fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style ORDERS fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style DB fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style WORKER fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style TESTS fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 ``` <!-- Sources: app/api/orders/route.ts:12-40, lib/orders.ts:8-61, db/schema.ts:5-32, tests/orders.test.ts:10-55, worker/events.ts:7-44 --> 所有虛線均表示**待查證關係**,不得在讀取實作前改成已確認的實線依賴。 ### 6.2 建立訂單循序圖模板 ```mermaid %%{init: {"theme":"base","themeVariables":{"background":"#161b22","primaryColor":"#2d333b","primaryBorderColor":"#6d5dfc","primaryTextColor":"#e6edf3","lineColor":"#8b949e","actorBkg":"#2d333b","actorBorder":"#6d5dfc","actorTextColor":"#e6edf3","signalColor":"#8b949e","signalTextColor":"#e6edf3"}}}%% sequenceDiagram autonumber participant C as 呼叫端 participant A as API route participant O as Orders library participant D as 資料儲存 participant W as Event worker C-->>A: 請求格式待確認 A-->>O: 呼叫及參數待確認 O-->>D: 寫入行為待確認 O-->>W: 事件交付方式待確認 O-->>A: 回傳型別待確認 A-->>C: HTTP 回應待確認 ``` <!-- Sources: app/api/orders/route.ts:12-40, lib/orders.ts:8-61, db/schema.ts:5-32, worker/events.ts:7-44 --> 完成版必須以實際函式名稱、參數、回傳值和同步/非同步邊界取代「待確認」。 ### 6.3 分支與錯誤處理圖模板 ```mermaid %%{init: {"theme":"base","themeVariables":{"background":"#161b22","primaryColor":"#2d333b","primaryBorderColor":"#6d5dfc","primaryTextColor":"#e6edf3","lineColor":"#8b949e","tertiaryColor":"#161b22"}}}%% flowchart TD START["接收請求"] PARSE{"解析是否成功?"} VALID{"業務驗證是否通過?"} WRITE{"資料寫入是否成功?"} EVENT{"是否存在事件步驟?"} SUCCESS["成功回應:待確認"] ERROR["錯誤回應:待確認"] START --> PARSE PARSE -- "條件待確認" --> VALID PARSE -- "錯誤映射待確認" --> ERROR VALID -- "條件待確認" --> WRITE VALID -- "錯誤映射待確認" --> ERROR WRITE -- "成功行為待確認" --> EVENT WRITE -- "錯誤映射待確認" --> ERROR EVENT -- "存在且成功" --> SUCCESS EVENT -- "不存在或處理方式待確認" --> SUCCESS style START fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style PARSE fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style VALID fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style WRITE fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style EVENT fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style SUCCESS fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 style ERROR fill:#2d333b,stroke:#6d5dfc,color:#e6edf3 ``` <!-- Sources: app/api/orders/route.ts:12-40, lib/orders.ts:8-61, tests/orders.test.ts:10-55, worker/events.ts:7-44 --> 圖中的解析、驗證、寫入與事件節點是規劃中的查證面向;若限定程式碼沒有對應步驟,完成版應刪除該節點。 ### 6.4 狀態圖採用條件 ```mermaid %%{init: {"theme":"base","themeVariables":{"background":"#161b22","primaryColor":"#2d333b","primaryBorderColor":"#6d5dfc","primaryTextColor":"#e6edf3","lineColor":"#8b949e"}}}%% stateDiagram-v2 [*] --> EvidenceCheck EvidenceCheck --> OmitDiagram: 未發現訂單狀態 EvidenceCheck --> DocumentStates: schema 或邏輯存在狀態證據 DocumentStates --> VerifyTransitions: 列出每個轉換的程式碼位置 VerifyTransitions --> [*] OmitDiagram --> [*] ``` <!-- Sources: lib/orders.ts:8-61, db/schema.ts:5-32, tests/orders.test.ts:10-55, worker/events.ts:7-44 --> 若限定區段沒有明確狀態欄位或轉換邏輯,不應為了完整性虛構訂單生命週期。 ## 7. 待完成查證表 | 問題 | 查證位置 | 記錄格式 | |---|---|---| | API 接受哪種 HTTP 方法? | `route.ts:12-40` | 方法名稱與引用行 | | 請求包含哪些欄位? | `route.ts:12-40`、`orders.ts:8-61` | 欄位、型別、必要性 | | 驗證發生在哪一層? | `route.ts:12-40`、`orders.ts:8-61` | 條件、錯誤及引用行 | | 訂單如何寫入? | `orders.ts:8-61`、`schema.ts:5-32` | 呼叫、欄位映射、交易邊界 | | 是否發布或處理事件? | `orders.ts:8-61`、`events.ts:7-44` | 事件名稱、payload、觸發時機 | | 如何處理重複請求或事件? | `orders.ts:8-61`、`events.ts:7-44` | 冪等鍵或明確標記「未見證據」 | | 哪些錯誤已被測試? | `orders.test.ts:10-55` | 輸入、預期結果、引用行 | | 資料與事件失敗是否可能不一致? | `orders.ts:8-61`、`events.ts:7-44` | 已證明機制或「未知」 | ## 8. 完成標準 | 檢查項目 | 標準 | |---|---| | 可追溯性 | 每項實作敘述均附指定行號連結 | | 事實與建議 | 「程式碼現況」和「改善建議」分開標示 | | 流程圖 | 每條箭頭均可對應函式呼叫或資料操作 | | API 契約 | 僅記錄限定區段可證明的輸入、輸出及狀態碼 | | 資料模型 | 僅記錄 schema 明確宣告的欄位與限制 | | 事件處理 | 未見重試、冪等或交易證據時明確標記未知 | | 測試 | 不將未出現在限定測試區段的案例描述成已覆蓋 | ## 9. References - [app/api/orders/route.ts:12-40](https://github.com/acme/shop/blob/main/app/api/orders/route.ts#L12-L40) - [lib/orders.ts:8-61](https://github.com/acme/shop/blob/main/lib/orders.ts#L8-L61) - [db/schema.ts:5-32](https://github.com/acme/shop/blob/main/db/schema.ts#L5-L32) - [tests/orders.test.ts:10-55](https://github.com/acme/shop/blob/main/tests/orders.test.ts#L10-L55) - [worker/events.ts:7-44](https://github.com/acme/shop/blob/main/worker/events.ts#L7-L44) ## 10. Related Pages 限定證據未提供其他 Wiki 頁面或文件路徑,因此目前無法建立可靠的交叉連結。
03
壓力題

處理證據衝突

測試問題

README 說付款失敗會重試三次,但 src/payment.ts:70-96 看起來只重試兩次,測試也沒有涵蓋重試。Repo 是本機專案。請撰寫文件中的『失敗與重試』段落,清楚區分已知、衝突與待驗證事項。

載入前 · 0 個 Skill載入後 · 版本已核對再次確認 · 0 個 Skill已確認模型套用 Skill三個環境皆已清理
未載入 Skill963 tokens · 37432 ms
## 失敗與重試 ### 已知事項 - README 記載付款失敗後會重試三次。 - `src/payment.ts:70-96` 顯示的流程看起來最多只執行兩次重試。 - 現有測試未涵蓋付款重試行為,因此目前沒有測試可確認實際重試次數及最終失敗處理。 ### 衝突 文件宣稱「重試三次」,但程式碼看起來只重試兩次。另需注意,「三次」也可能分別表示「首次嘗試加兩次重試」或「首次嘗試後再重試三次」;目前資訊不足以判定文件與實作採用的計數方式。 ### 待驗證事項 - 確認產品預期是最多三次總嘗試,還是首次失敗後最多重試三次。 - 以實際執行或新增測試確認 `src/payment.ts` 的最大嘗試次數。 - 確認哪些錯誤可重試、每次重試的等待策略,以及重試耗盡後回傳或記錄的錯誤。 - 釐清預期行為後,同步修正 README 或實作,並補上成功重試與重試耗盡的測試。
已載入 Skill +1362 tokens · 43788 ms
## 失敗與重試 ### 已知事項 - `README` 宣稱付款失敗後會「重試三次」。(`README`:行號待確認) - `src/payment.ts` 的付款流程位於第 70–96 行;依目前提供的觀察,實作看起來最多只執行兩次重試。(`src/payment.ts:70-96`) - 現有測試未涵蓋付款重試行為,因此目前沒有自動化測試能確認實際嘗試次數、停止條件或最終錯誤。(測試檔案與行號待確認) ### 衝突 文件與實作對重試次數的描述不一致:文件寫「重試三次」,實作看起來只有兩次重試。此外,「重試三次」是否包含首次付款嘗試並不明確: | 解讀 | 總嘗試次數 | |---|---:| | 首次嘗試後再重試三次 | 4 | | 最多嘗試三次,即首次嘗試加兩次重試 | 3 | 在語意與預期行為確認前,不應將其中任一解讀視為正式契約。 ### 待驗證事項 - 產品預期究竟是「最多三次付款嘗試」還是「首次失敗後再重試三次」。 - `src/payment.ts:70-96` 的迴圈邊界與計數方式是否確實只允許兩次重試。 - 哪些失敗可以重試,例如逾時、網路錯誤或供應商暫時性錯誤;永久拒付是否應立即停止。 - 每次重試之間是否需要延遲、退避或抖動,以及相關參數。 - 最後一次失敗後回傳的錯誤內容與記錄行為。 - 補充測試,至少涵蓋首次成功、重試後成功、耗盡重試,以及不可重試錯誤;再依確認後的契約同步修正文件或實作。
測試紀錄

這次測試記錄了什麼?

固定不變兩邊使用相同的模型版本、帳號方案、系統指令、思考強度與測試問題。

分開測試每次回答都使用全新環境。載入前不含任何 Skill,載入後只含本頁指定的 Skill。

完整才公開三題的所有步驟與環境清理都成功後,才顯示結果。若無法確認模型是否套用 Skill,也會清楚標示。