feat(api-doc): 範例只掛純量成員,類別型往下遞迴

- 使用者要求改判準。類別型參數與中間層的類別屬性只留說明,範例責任往下推給屬性,一路走到最內層的純量。
- 一個值只有一個出處。範例掛在父層,屬性一改就過期,讀的人拿到的是沒有屬性定義背書的一份資料。
- 集合看元素型別,不看外殼;字典看值型別。字串集合與字串判出來一樣,位址集合與位址判出來也一樣。
- 壞味道清單原本寫「輸入與輸出參數都必須有範例」,與新判準衝突,兩支技能會對同一段程式碼給出不同標準。一併改成同一套。
- 說明與範例的兩份檢核表併成一個 sub agent,同一批資料模型檔只讀一次。
- 順帶補上偵測腳本結束碼二漏掉的一個原因:環境缺 grep。原本只寫參數與路徑,遇到這個原因換路徑重跑永遠清不掉。
This commit is contained in:
2026-08-31 11:07:05 +08:00
parent a0bd488ac8
commit f6cd1f9ef7
2 changed files with 39 additions and 17 deletions
+6 -5
View File
@@ -140,14 +140,15 @@
### 5.4 輸入與輸出範例
- **定義**:輸入與輸出參數都必須有範例;範例內容**優先嘗試從資料庫取得真實資料,失敗才透過邏輯推理**產生。
- **偵測訊號**:註解缺範例;範例與型別不符;範例顯然是佔位假資料而環境可取得真實資料。
- **建議重構手法**:以可用的連線查詢一筆代表性資料當範例(去識別化,不可含個資);無法連線才以邏輯推理造出合理範例並標明為推理值。
- **定義**:輸入與輸出參數都必須有說明,範例則只掛在**純量**成員上。純量參數與純量屬性(字串、數值、布林、日期、列舉)要有範例。類別型參數與中間層的類別屬性只要說明,自己不掛範例,範例責任往下推給該類別的屬性。集合看元素型別判斷:元素是純量就比照純量,附一份列出幾個元素的範例;元素是類別就比照類別,只留說明,往下走進元素型別。字典看值型別,判準相同。範例內容**優先嘗試從資料庫取得真實資料,失敗才透過邏輯推理**產生。
- **偵測訊號**:純量參數或純量屬性缺範例;範例與型別不符;範例顯然是佔位假資料而環境可取得真實資料;範例掛在類別型成員上,該類別的屬性卻一個範例都沒有。
- **建議重構手法**:以可用的連線查詢一筆代表性資料當範例(去識別化,不可含個資);無法連線才以邏輯推理造出合理範例並標明為推理值;範例掛錯層就往下搬到該類別的每個純量屬性上。
- **注意**:型別判準與 `jsc-review:api-doc` 的檢核表 A 完全相同,同一個成員在兩邊判出來的答案一樣。分工不變:本項只看原始碼註解,Swagger 文件屬性歸 `api-doc`,同一個標的不重複回報。
### 5.5 巢狀結構註解
- **定義**:如果參數有巢狀結構(例如 class 內還有 class),就必須完全補齊每一層的註解。
- **偵測訊號**:DTO/ViewModel 僅頂層有註解;內層類別、集合元素型別的欄位無說明或無範例。
- **定義**:如果參數有巢狀結構(例如 class 內還有 class),就必須完全補齊每一層的註解。每一層的純量屬性要有說明與範例,中間層的類別屬性只要說明;集合往元素型別走,遞迴走到「屬性全是純量」那一層為止。
- **偵測訊號**:DTO/ViewModel 僅頂層有註解;內層類別、集合元素型別的欄位無說明;任一層的純量屬性缺範例;遞迴半途停住,某一層的屬性完全沒被走到。
- **建議重構手法**:逐層補齊 5.1–5.4;巢狀過深(≥ 3 層)時同時評估 Extract Class 是否被濫用。
### 5.6 內含功能的導向連結