v9.5: 實作標籤完全不重疊算法

- 新增 _calculate_lane_conflicts_v2() 分開返回標籤重疊和線穿框分數
- 修改泳道選擇算法,優先選擇無標籤重疊的泳道
- 兩階段搜尋:優先側別無可用泳道則嘗試另一側
- 增強日誌輸出,顯示標籤範圍和詳細衝突分數

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
beabigegg
2025-11-06 11:35:29 +08:00
commit 2d37d23bcf
83 changed files with 22971 additions and 0 deletions

138
GUIDLINE.md Normal file
View File

@@ -0,0 +1,138 @@
# 📕 AI VIBE Coding Guideline
## 1. 定義與理念
**VIBE = Vision → Interface → Behavior → Evidence**
AI Agent 必須依據此四階段原則執行開發任務。
### 1.1 階段說明
| 階段 | 定義 | 成果 |
|------|------|------|
| Vision | 理解產品願景與使用者需求 | 任務分解圖與開發路線圖 |
| Interface | 理解系統與介面設計 | API / UI 契約圖與資料流模型 |
| Behavior | 實作對應行為 | 程式碼與行為邏輯 |
| Evidence | 驗證成果 | 測試報告與效能結果 |
---
## 2. AI Agent 開發流程
1. **讀取 GuideLine本文件**:確定規範。
2. **載入 PRD**:掌握產品願景與 KPI。
3. **讀取 SDD**取得架構、模組定義、API 契約。
4. **分析 TDD**:對應測試案例,建立驗證點。
5. **生成代碼**:依據規格實作並自動化測試。
6. **提交報告**:附測試覆蓋率、效能與風險分析。
---
## 3. 開發準則
1. **規格驅動**:程式碼與文件一一對應,無明確條款不得生成。
2. **測試先行**:先生成測試案例再撰寫程式。
3. **可回溯性**每次變更需附帶來源PRD 條款、SDD 模組、TDD 案例)。
4. **安全預設**:無網路傳輸,僅本地資料處理。
5. **自動驗證**:所有程式碼須通過 TDD 測試才能提交。
---
## 4. 實作規範
| 項目 | 標準 |
|------|------|
| 前端 | React + TypeScript + Tailwind支援暗色模式 |
| 後端 | FastAPI + Pydantic嚴格型別與錯誤碼機制 |
| 測試 | pytest + Playwright自動化覆蓋率 ≥ 80% |
| 文件 | 代碼註解、Rationale、版本註記必填 |
---
## 5. 自動化檢查
- **Lint 檢查**ESLint + flake8。
- **型別驗證**mypy後端、tsc前端
- **安全掃描**Bandit + npm audit。
- **文件同步**:若檢測到 API/Schema 變更,自動觸發 SDD 更新 PR。
---
## 6. 驗證與審核
- **測試覆蓋率報告**:自動產出於 `/docs/validation/coverage`
- **效能報告**:顯示 100、300、1000 筆事件渲染時間。
- **品質稽核**PR 須通過以下檢查:
- 測試通過率 ≥ 100%。
- 效能落在 KPI 範圍內。
- 無安全漏洞或規格違反。
---
## 7. 例外與升級
- 若 AI 發現規格不足,必須先生成 **Spec PR** 更新文件。
- 每次破壞性修改需升版 `x.y.z`,並附 Migration 指南。
- 所有生成記錄與報告需自動歸檔於 `/docs/audit`
---
## 8. 變更追溯與文件變更策略(**強制規範**
> 目標:強制 AI 在開發或修正時具備完整追溯性;並**優先更新現有文檔**而非新建以維持單一事實來源SSOT
### 8.1 文件清單與索引Doc Registry
- 維護 `/docs/REGISTRY.md`(唯一權威清單),包含:
- `DocID`(如 `PRD-001``SDD-API-002``TDD-E2E-003`
- `Title``Owner``Scope``LastUpdated``Link`
- `SSOT` 標記(是否為單一事實來源)
- AI 修改或查閱前**必讀 REGISTRY**,以判斷應修改的目標文檔。
### 8.2 新增前必查Pre-Create Check
AI 在**新建任何文檔**前,必須完成以下檢查並寫入變更報告:
1. 以關鍵詞(需求/模組/API在 REGISTRY 搜索,列出**Top 5** 既有候選文檔。
2. 為每一候選估算**適配度分數**(相符段落比例/關鍵詞重合度/更新日期權重)。
3. 若存在 **適配度 ≥ 0.6** 的文檔,**禁止新建**,改為**在該文檔中更新**
- 追加段落或開新章節;
- 若為過時內容,進行標註並保留舊版於附錄或變更記錄。
4. 僅當**所有候選皆 < 0.6** 時方可新建**同步更新 REGISTRY**。
### 8.3 版本與變更記錄Versioning & Changelog
- 每份文檔必須維護 YAML Frontmatter 或標準區塊
```
Version: x.y.z
LastUpdated: YYYY-MM-DD
DocID: <唯一 ID>
SSOT: true|false
```
- 在文檔尾端新增 `## Changelog`
- `YYYY-MM-DD | Agent | Reason | Related DocID/PR | Impact`
- **禁止**刪除歷史內容若需淘汰改以 `Deprecated` 區塊標註與遷移連結
### 8.4 變更單Change Ticket模板AI 產生並附於 PR
- **Title**`[Doc|Code] Change <Module/Feature>`
- **Reason**來源需求PRD 條款/Issue/Meeting Minutes
- **Scope**影響模組與文件 DocID 列表
- **Decision**更新現有文檔或新建的依據含適配度證據
- **Tests**對應 TDD Case 列表
- **Risk & Rollback**風險與回退策略
### 8.5 單一事實來源SSOT與鏡射
- `PRD.md``SDD.md``TDD.md``AI_GUIDELINE.md` SSOT
- 任何導讀或摘要文檔標註 `SSOT: false` **必須**連回原 SSOT
- API/Schema 更新時
1) 先更新 `SDD`SSOT
2) 觸發腳本自動更新次要文檔與程式碼註解鏡射)。
### 8.6 檢核 GateCI 強制)
CI 中新增 **Doc-Change Gate**
- PR 變更程式碼但未引用相關 `DocID` **阻擋合併**
- 若新建文檔但 `Pre-Create Check` 證據不足 **阻擋合併**
- 檢查 `REGISTRY.md` 是否同步更新
- 檢查 `Changelog` 是否新增
- 檢查 `Version` 是否依規則遞增fix: patchfeat: minorbreak: major)。
### 8.7 追溯鏈Traceability Chain
- **需求 設計 程式碼 測試 交付** 全鏈路需以 `DocID` `Commit/PR` 互相鏈結
- 需求PRD 條款編號
- 設計SDD 模組節點
- 程式碼目錄/檔案與函式註解
- 測試TDD Case ID
- 交付產物效能與覆蓋率報告
### 8.8 最佳實務
- **改寫優先**小幅調整以段落更新避免碎片化文件
- **章節化**若更新內容較大優先在現有文檔開新章保留連貫脈絡
- **變更影響矩陣**變更單中列出受影響的模組API測試與文件 DocID
- **審核清單**Reviewer 需檢查 `Pre-Create Check``SSOT` 鏈接與 `Changelog` 完整性