AI規格驅動開發(SDD)-Spec-Kit

Source:2025-09-04

AI規格驅動開發(SDD)-Spec-Kit-img.png

AI規格驅動開發(SDD)

如附件或是這邊下載,針對自己購買的AI模組進行選擇下載

下面以github Copilot進行示範

安裝步驟

  1. 將檔案複製到想要使用的專案
  2. 在使用vscode開啟該專案後,使用Ctrl + Alt + i 呼叫AI chat
  3. 使用以下指令可以進行規劃
    1. /specify:進行規格撰寫,使用/specify <你想做的事情>。
      1. /specify 針對此專案進行分析,幫我撰寫規格表
    2. /plan : 針對specify執行後的Spec資料夾下的檔案再進行一系列的分析後產出執行計畫
    3. /task:

執行狀況記錄

Follow instructions in [specify.prompt.md](vscode-file://vscode-app/c:/Users/shengwei/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html).  
請詳細分析這個python的專案,任務目前已經完成,所以僅針對專案整體分析

分析產出

## Python專案整體分析報告

基於對 **GetOmnichatConcat** 專案的詳細分析,這是一個專門用於從 Omnichat API 擷取客戶資料並存入 Microsoft SQL Server 資料庫的 Python 應用程式。

### 專案概述

**專案名稱**: `getomnichatconcat`  
**版本**: 0.1.0  
**目的**: 從 Omnichat 客戶管理平台的 API 批量抓取 LINE 平台的客戶聯絡資料,並將關鍵資訊存入 MSSQL 資料庫

### 核心功能架構

#### 1. **API 資料擷取模組**

- **目標 API**: `https://open-api.omnichat.ai/v1/contacts`
- **認證方式**: Bearer Token 驗證
- **分頁策略**: 每頁 100 筆資料,動態計算總頁數
- **重試機制**: 最多重試 3 次,間隔 5 秒
- **平台篩選**: 專注於 LINE 平台 (channelId: 1479356826)

#### 2. **資料庫整合模組**

- **目標資料庫**: Microsoft SQL Server (MLDB)
- **資料表**: `OmnichatConcat_20250617`
- **儲存欄位**:
    - `name` - 客戶姓名
    - `id` - 唯一識別碼
    - `phone` - 電話號碼
    - `memberId` - 會員編號
    - `created_at` - 建立時間戳

#### 3. **錯誤處理與日誌系統**

- **日誌目錄**: [logs](vscode-file://vscode-app/c:/Users/shengwei/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html)
- **錯誤追蹤**: 詳細記錄 API 呼叫失敗、資料庫連線問題、資料插入錯誤
- **容錯設計**: 單筆資料失敗不影響整體流程,繼續處理下一筆

### 技術特點

#### **依賴套件**

- [requests](vscode-file://vscode-app/c:/Users/shengwei/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html) (>=2.31.0) - HTTP API 呼叫
- [pyodbc](vscode-file://vscode-app/c:/Users/shengwei/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html) (>=5.0.1) - SQL Server 資料庫連接

#### **程式設計亮點**

1. **分頁處理邏輯**: 先取得第一頁資料計算總筆數,再依序處理所有頁面
2. **命令列參數支援**: 可指定起始頁與結束頁範圍 (`--start`, `--end`)
3. **事務管理**: 每筆資料獨立提交,確保部分成功不被回滾
4. **資源管理**: 適當的資料庫連線關閉處理

### 資料流程分析

## 第二步驟:加入新需求跟他討論

```prompt
Follow instructions in [specify.prompt.md](vscode-file://vscode-app/c:/Users/shengwei/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html).  
新增需求

1. 修改從Omnichat同步回來的欄位id,phone,memberId,agentName,agentEmployeeCode,agentBindTime,agentLocationName,agentLocationCode,status,lastMessageTime,subscribedAt,unsubscribedAt,updatedAt,tags,資料庫的名稱直接跟這些名稱一樣即可
2. Table Name從原本的OmnichatConcat_20250617,修改成OmnichatConcatSync
3. 【重要】此專案當初只做一次地同步,並未考慮到後續的持續運作的問題,請修改邏輯架構,針對每天進行資料同步更新回來,主要的比對資料使用id作為是否update或insert為主要依據

step2產出

## 📋 完成摘要

✅ **新分支建立**: `002-omnichat`  
✅ **規格檔案路徑**: [spec.md](vscode-file://vscode-app/c:/Users/shengwei/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html)  
✅ **狀態**: 已完成,準備進入下一階段

### 📄 新功能規格書亮點

**標題**: 增強型 Omnichat 同步系統 - 擴展欄位與每日增量更新

### 🎯 三大核心改進需求

1. **欄位擴展**: 從原本 4 個欄位擴展至 15 個欄位
    
    - 新增:`id`, `phone`, `memberId`, `agentName`, `agentEmployeeCode`, `agentBindTime`, `agentLocationName`, `agentLocationCode`, `status`, `lastMessageTime`, `subscribedAt`, `unsubscribedAt`, `updatedAt`, `tags`
2. **資料表重新命名**:
    
    - 從 `OmnichatConcat_20250617` 改為 `OmnichatConcatSync`
3. **每日增量更新機制**:
    
    - 實現 UPSERT 邏輯(以 ID 為主鍵進行比對)
    - 支援每日自動排程執行
    - 新客戶進行 INSERT,現有客戶進行 UPDATE

### 🔧 規格書包含內容

- **15項功能需求**: 涵蓋欄位同步、表格管理、UPSERT邏輯、排程機制
- **6個驗收情境**: 包含每日自動同步、增量更新、錯誤處理
- **4個關鍵實體**: 增強客戶記錄、同步作業記錄、差異檢測、排程管理
- **商業價值量化**: 275% 更豐富的客戶洞察、100% 資料完整性目標

### 🚀 商業價值

- **資料完整性**: 從4個欄位擴展至15個欄位,大幅提升客戶洞察能力
- **營運連續性**: 從一次性同步升級為持續運作的企業級解決方案
- **即時決策支援**: 每日自動更新確保資料新鮮度
- **客戶服務品質**: 完整的代理人資訊與互動歷史

此規格書現在已準備好進入開發規劃階段,完整定義了從現有系統到增強型每日同步系統的升級路徑。

[[Spec產出檔案參考002]]

根據規格產生執行計畫

2025/09/08

AI規格驅動開發(SDD)-img.png

觀察到的狀況

目標

  1. 看看SDD可以做到什麼程度
    1. /specity --> /plan --> /task(基於TDD去執行)
    2. 一值無腦執行下去 keep going
  2. 規劃CLI、schdule、unit test、ingete test、太多太肥
    1. cli 有安裝設定、檢測連線...好多
    2. 其實可以直接跑,但是他卻要有安裝cli 光是cli工具就開發了非常多的沒意義的東西,對我來講是一種負擔(理解做什麼事情的負擔)S
    3. 寫一堆cli指令,但是裡面有非常多細節都沒有執行,卻跟我說寫好了,可以佈署了
      AI規格驅動開發(SDD)-img-1.png

自己看到問題也去延伸找其他類似的錯誤並且修復

AI規格驅動開發(SDD)-img-2.png

活動需求

全通路商品下單與上架配銷管理

第二範例AI修圖專案

TODO

無中生有的專案之中,慢慢堆疊功能

作法:每次都更新一點點

specify

/specify Build an application that can help me organize my photos in separate photo albums. Albums are grouped by date and can be re-organized by dragging and dropping on the main page. Albums are never in other nested albums. Within each album, photos are previewed in a tile-like interface.

/specify 建立一個應用程序, 幫助我將照片整理到單獨的相簿中 。相簿按日期分組,並可透過在主頁上拖放作業進行重新整理。相簿不會嵌套在其他相簿中 。在每個相簿中,照片都會以平鋪式介面進行預覽。

/specify 建立一個應用程式,主要目的是標記圖片上的區塊,做為跟AI溝通的時候要修改的特定區域,需要有上傳圖片後,可以使用滑鼠去針對上傳的圖片做簡易的繪圖,希望可以調整筆觸的粗細,另外一邊也可以上傳另一張圖片,讓我可以作為兩張圖片要合併的素材,最終希望可以使用有一個按鈕送出後,進行AI合成的動作,不需要有登入的功能,圖片針對jpg,png為主,其他圖片格式都不接受,每次送出合成需求之前,把兩張上傳的圖片先儲存到本地資料夾(commit),並且每次提交之前都針對每次的合成進行儲存圖檔,檔案名稱直接使用main-MMDDHHmmss-01.jpg/png,第二張圖片main-MMDDmmss-02.jpg/png,最後生成出來接收到AI產出的圖片後,檔案名稱則為,Finally-MMDDmmss.jpg/png,另外提供多種模特兒的姿勢可以選擇(站姿、坐姿..等等),圖片風格(黑暗、明亮、溫馨..等等),特效文字輸入框(可以讓使用者輸入想要加入的文字訊息),文字訊息的顯示位置也要提供選擇(使用九宮格的方式,左上,中上,右上,左中,中間,右中,左下,中下,右下),API需要針對這些資訊進行蒐集後,按下送出後一併把資料拋給API


/plan The application uses Vite with minimal number of libraries. Use vanilla HTML, CSS, and JavaScript as much as possible. Images are not uploaded anywhere and metadata is stored in a local SQLite database.