AI規格驅動開發(SDD)-Spec-Kit
Source:2025-09-04
-Spec-Kit-img.png)
AI規格驅動開發(SDD)
如附件或是這邊下載,針對自己購買的AI模組進行選擇下載
下面以github Copilot進行示範
安裝步驟
- 將檔案複製到想要使用的專案
- 在使用vscode開啟該專案後,使用Ctrl + Alt + i 呼叫AI chat
- 使用以下指令可以進行規劃
/specify:進行規格撰寫,使用/specify <你想做的事情>。/specify 針對此專案進行分析,幫我撰寫規格表
/plan: 針對specify執行後的Spec資料夾下的檔案再進行一系列的分析後產出執行計畫/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
-img.png)
觀察到的狀況
目標
- 看看SDD可以做到什麼程度
- /specity --> /plan --> /task(基於TDD去執行)
- 一值無腦執行下去 keep going
- 規劃CLI、schdule、unit test、ingete test、太多太肥
- cli 有安裝設定、檢測連線...好多
- 其實可以直接跑,但是他卻要有安裝cli 光是cli工具就開發了非常多的沒意義的東西,對我來講是一種負擔(理解做什麼事情的負擔)S
- 寫一堆cli指令,但是裡面有非常多細節都沒有執行,卻跟我說寫好了,可以佈署了
-img-1.png)
自己看到問題也去延伸找其他類似的錯誤並且修復
-img-2.png)
活動需求
全通路商品下單與上架配銷管理
- 風格或策展下單與設定波段
- 風格或策展波段:新品+重生+翻單(品牌開發拉起,營運、行銷同意)
- 風格或策展重點陳列波段:櫥窗+行銷品(開發安排,營運、行銷同意)
- 採購底單更動
- 增加櫥窗欄位
- 門店分配家數更改為分配家數等級 ABC,以此決定下單量
- 各通路上架與配比(自動撥補)
- 新品以官網門市通路優先,重生、翻單可依據庫存狀況斟酌排定其他通路新品上架(靜宛)
- 虛擬通路依據各通路活動重點品與一般活動品設定保留庫存,商控依據活動銷售、庫存狀況調整上下架與自動撥補(門店自動撥補另外管理)
- 活動系統更動(Scott)
- 各通路新品上架波段與時間設定(待確認)
- 各通路配銷活動時間波段
- 各通路配銷活動之重點品設定(新增)
- 各通路限定會員之活動商品時間波段
- BI產銷報表優化
- 分成全商品追加、出清與零碼管理、全商品活動、全通路配銷活動管理、門店進貨、門店補貨與調轉、門店出清與零碼管理⋯等功能報表
- 全商品追加管理
- 可否用Scott那支追加報表優化
- 篩選欄位:商品線別、策展企劃、商品類別、新品上架波段
- 注意事項:
- 顯示欄位銷售等級、現有庫存、銷售數與毛利率(1、3個月內、1年、2年)
- 透過採購底單優化追加採購(Scott) ,需顯示通路銷售彙整(按管理分類,另找Jack)
- 全商品銷售、出清與零碼管理
- 用上面那支程式另外調整或現用現有BI先調整
- 篩選欄位增加通路(按管理分類,另找Jack)
- 注意事項:
- 顯示欄位增加銷售等級、活動等級、零碼等級、是否大小碼、出清波段表,零碼佔比彙整上面
- 人工定期分類出清波段表,可按大碼、一般碼分開,匯入出清波段表(Scott)
- 人工定期分類銷售等級,可按大碼、一般碼分開(Scott)
- 零碼等級也要按大碼、一般碼分開 (yoyo趕快提出與每週自動計算,分成零碼1-3級)
- 按通路別零碼狀況可以篩選商品給各通路參考調回集中銷售
- 全商品通路活動管理(BI)
- 篩選欄位:選定通路與活動時間、商品線別、策展企劃、商品類別、部分二代標、銷售等級、活動等級、大小碼分開銷售、零碼分級、新品上架波段、出清波段表
- 注意事項:
- 顯示其他通路同時間是否有活動(有,才顯示活動、銷售數、進銷比與毛利率)
- 選定通路顯示過去3個月內是否有活動(有,才顯示顯示活動、銷售數、進銷比與毛利率)
- 部分二代標再另外確認(Jack)
- 之後有可能改成Scott系統挑選匯出?
- 原有配銷BI輔助報表需加入零碼、活動分級、大小碼管理(nana再跟yoyo討論優化)A
第二範例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.