當用戶指定一個介面(Controller 方法名、API 路徑、或 Service 方法名),自動追蹤完整呼叫鏈路並生成 Mermaid 時序圖。
使用者可能提供以下任一資訊:
/api/v1/dossier/selectDossierVolumeselectDossierVolumeEleDossierController#selectDossierVolume操作:
search_symbol 定位目標 Controller 方法,必要時結合 grep_code 搜尋路徑註解@RequestMapping、@PostMapping 等註解或對應 API 介面定義獲取)ele-archives-api 模組),獲取註解和路徑資訊從 Controller 方法開始,逐層深入追蹤:
Controller → Service(介面) → ServiceImpl(實現) → DAO/Mapper → SQL
→ 外部呼叫(Feign/MQ/Redis)
對每一層執行:
search_symbol(帶 relation: calls)查詢被呼叫方法read_file 讀取方法完整實現程式碼小蔥技能站7w4.net每天更新,海量AI技能等你發現。
必須關注的呼叫型別:
@Autowired 注入的 Service、DAO、工具類AppMessageSender、publisher 包下的類)ApplicationEventPublisher)追蹤終止條件:
MessageUtils、BeanUtils、PageHelper)僅標註不展開參與者命名:
| 層級 | 命名規則 | 示例 |
|---|---|---|
| 客戶端 | Client |
Client |
| Controller | 類名簡稱 | Controller |
| Service | 業務名+Service | DossierService |
| Mapper/DAO | 業務名+Mapper | DossierMapper |
| 資料庫 | DB |
DB |
| 快取 | Redis |
Redis |
| 訊息佇列 | MQ |
MQ |
| 外部服務 | 服務名 | MoiraiService |
箭頭語義:
->> (實線)-->> (虛線)Note right of 標註"非同步"分支與迴圈:
alt 條件A業務含義 / else 條件B業務含義 / endloop 迴圈業務含義opt 可選條件業務含義par 並行任務描述Note over 參與者: 判斷說明 標註模板:
sequenceDiagram
participant Client
participant Controller
participant Service
participant Mapper
participant DB
Client->>Controller: POST /api/path (RequestDto)
Controller->>Controller: 引數預處理(業務含義說明)
Controller->>Service: methodName(params)
Note over Service: 關鍵變數 xxx 的業務含義說明
alt 條件成立(用業務語言描述)
Service->>Mapper: queryMethod(params)
Mapper->>DB: SQL操作描述
DB-->>Mapper: 結果集
Mapper-->>Service: List<Entity>
Note over Service: 對結果進行 xxx 業務處理
else 條件不成立(用業務語言描述)
Service-->>Controller: 返回錯誤/空結果
end
opt 存在某可選條件時
Service->>Mapper: updateMethod(params)
Mapper->>DB: UPDATE ...
end
Service-->>Controller: 處理結果
Controller-->>Client: BWJsonResult<Vo>
在時序圖之後,以表格形式列出所有關鍵判斷節點:
| 序號 | 位置(類#方法 行號) | 判斷條件(程式碼) | 業務含義(自然語言) | True 分支處理 | False 分支處理 |
|---|---|---|---|---|---|
| 1 | ServiceImpl#method L45 | if (status == null) |
校驗歸檔狀態是否存在 | 丟擲異常:狀態不能為空 | 繼續後續處理 |
| 2 | ServiceImpl#method L78 | if ("6".equals(dataState)) |
判斷是否為已歸檔狀態 | 過濾未接收的記錄 | 保持原始狀態不變 |
要求:
按層級列出每個方法:
### 呼叫鏈路
1. **Controller 層**
- `EleDossierController#selectDossierVolume`
- 職責:接收請求,引數預處理,呼叫 Service
- 關鍵邏輯:將逗號分隔的分類ID拆分為列表
2. **Service 層**
- `EleDossierServiceImpl#selectDossierVolume`
- 職責:核心業務邏輯處理
- 關鍵邏輯:分頁查詢、許可權過濾
- 事務:無 / @Transactional(propagation=REQUIRED)
3. **DAO 層**
- `EleDossierMapper#selectDossierVolume`
- 對應 SQL:SELECT ... FROM ... WHERE ...
根據實際程式碼情況,選擇性輸出以下內容:
@Transactional 覆蓋範圍及傳播行為## 介面概述
| 屬性 | 值 |
|------|-----|
| 介面路徑 | POST /api/xxx |
| 所屬模組 | xxx模組 |
| Controller | XxxController#methodName |
| 功能描述 | 一句話描述介面功能 |
## 時序圖
(Mermaid sequenceDiagram 程式碼塊)
## 關鍵判斷節點
(表格)
## 呼叫鏈路詳情
(分層列出)
## 補充分析
### 事務邊界
(如有)
### 異常處理鏈路
(如有)
### 效能關注點
(如有)
### 外部依賴
(如有)
Note 標註非同步邊界,單獨說明非同步處理流程@EventListener 或 subscriber 處理邏輯這是一個功能定位明確的 Skill,專注於介面呼叫鏈路分析和時序圖生成。文件規範詳盡,流程清晰,模板示例實用,對關鍵判斷節點和業務語義的處理較為深入。但目前主要適用於 Java Spring 技術棧,對其他技術棧支援有限,在複雜場景下的靈活性也有提升空間。總體來說質量良好,但適用範圍需要進一步擴充套件。