今天設計客戶管理系統時,我延續昨天學到的成功方法:先想好需求,用人話表達,再寫Prompt讓AI協作。
本以為會遇到類似的業務邏輯挑戰,沒想到這次AI協作出奇順利,90%的功能一次到位!但就在我為這次成功感到滿意時,卻發現了一個更基礎但同樣重要的問題:代碼文件管理。
按照這個流程,我先分析了客戶管理在門市的真實使用情境。與昨天產品查詢的複雜業務邏輯不同,客戶管理系統其實相對簡單直接。
核心功能需求:
門市使用情境:
沒有複雜的暫存機制,沒有多維度篩選,就是最基本的資料管理功能。相比昨天的產品查詢,這應該是輕鬆的一天。
基於前幾天累積的經驗,我設計了第一版Prompt:
根據Layout框架設計.md和業務邏輯.md,設計一個客戶管理系統:
使用情境:
- 店員需要快速查看和管理客戶資料
- 支援客戶的新增、編輯、刪除功能
- 客戶資料包含:姓名、電話、地址、會員等級、備註
- 需要基本的搜尋和篩選功能
Layout要求:
- 沿用Dashboard的固定框架設計
- 左側客戶列表,右側客戶詳細資料
- 支援新增/編輯的彈出視窗
- 保持與其他頁面的視覺一致性
功能需求:
- 客戶CRUD操作
- 搜尋功能(按姓名、電話)
- 篩選功能(按會員等級、地區)
- 會員等級的視覺標識
請產出完整的HTML原型,包含互動效果。
Cursor的表現超乎預期!第一版產出就已經90%符合需求:
幾乎沒有需要大幅修正的問題,只有一些小細節需要調整,比如會員標籤的顏色深度、表單驗證的提示訊息等。
相比昨天產品查詢第一版的化妝品假資料問題,今天的客戶管理一次到位的成功率讓我很驚喜。
正當我為這次順利的協作感到高興時,突然意識到一個被忽略的問題:代碼檔案又變成巨獸了!
行數統計的現實:
這還只是第二階段的開始!後續還有訂單系統、退換貨系統等更複雜的頁面,如果繼續用單一HTML檔案的方式,很快就會面臨維護災難。
實際遇到的問題:
當我想調整客戶卡片的背景顏色時,要在1200行混合代碼中搜尋對應的CSS規則,經常找錯位置。
當我想理解新增客戶的邏輯時,JavaScript函數散佈在HTML的各個角落,需要來回跳轉才能看懂完整流程。
當我想統一調整底部Tab樣式時,需要在Dashboard、Products、Client三個檔案中重複修改,很容易漏改或不一致。
1500行混合代碼對Cursor協作造成的影響比想像中嚴重:
修改定位困難:
「請修改客戶卡片的樣式」→ Cursor需要花時間在1200行中找到正確位置,有時會修改錯區域。
上下文理解複雜:
HTML結構、CSS樣式、JavaScript邏輯混在一起,Cursor需要更多時間理解整體架構。
修改精確度下降:
複雜的檔案結構讓Cursor的修改建議變得不夠精準,經常需要多次來回調整。
這些問題隨著檔案大小增加而惡化,必須找到解決方案。
解決方案其實很簡單:把CSS和JavaScript拆分成獨立檔案。
我向Cursor提出了分離需求:
請將這個客戶管理系統拆分為三個檔案:
1. client-management.html - 只包含HTML結構
2. client-management.css - 所有CSS樣式
3. client-management.js - 所有JavaScript邏輯
HTML檔案用<link>和<script>引用外部檔案,功能保持完整。
拆分效果立竿見影:
檔案結構清晰:
Cursor協作效率大幅提升:
開發維護更容易:
後續擴充更方便:
什麼時候該分離檔案?
分離的好處:
這不是過度工程化,而是基本的代碼管理實踐。即使是prototype階段,當複雜度超過某個門檻時,適當的檔案組織仍然必要。
客戶管理系統讓我學到:好的協作不只需要好的方法論,還需要好的代碼管理。當工具開始限制效率時,就是改進工作方式的時機。檔案分離雖然簡單,但對協作效率的提升非常明顯。
好的工具配上好的組織方式,才能發揮最大的協作效率。