背景痛點
客戶用了 30 年的進銷存 + 生產管理系統。問題:完全沒有原始碼,原來的廠商失聯,手上只有跑著的 .EXE 跟 .DBF 資料檔。
想升級沒辦法 — 沒源碼就改不了、加不了新功能、修不了 bug;想換廠商沒辦法 — 沒人敢「黑盒接手」一套 30 年的關鍵業務系統;繼續用又怕老 EXE 哪天在新 Windows 跑不動。
14 個邏輯模組(採購、進貨、庫存、生產排程、銷售、出貨、應收、應付、報表⋯)、21 張主表、累積近 100 萬筆資料。每一個模組的業務規則都要重新搞清楚。
我們怎麼做
第一步:逆向業務邏輯。 從 .DBF 結構、.EXE 行為、現場員工怎麼操作,一條一條把業務規則重新整理出來。這不是技術活,是商業邏輯重建 — 每個欄位代表什麼、每個動作觸發什麼、每張報表要怎麼算。這階段花的時間最多。
第二步:用 VFP9 重寫。 為什麼還用 VFP?因為 (a) 客戶現有資料是 .DBF,VFP 原生支援,遷移無痛;(b) 員工已經熟悉 VFP 介面風格;(c) VFP 是 Windows native,速度快、部署簡單。這是務實的選擇,不是技術潔癖。
第三步:資料遷移 + 上線。 舊 .DBF 全部清理(trim、補編碼、去重)後 import 進新系統,dry-run 比對筆數確認零遺失。上線後員工繼續用,但這次系統有源碼了 — 想加什麼、改什麼,都做得到。
第四步:整套搬上 Web,並且真的做完了。 客戶要行動端、跨地遠端、跟外部系統整合。技術選 Next.js 15 + Prisma + PostgreSQL + NextAuth.js v5,部署在客戶自己的 Ubuntu 主機(bare metal,不上公有雲)。除了把 VFP 版功能一比一搬過去,還加了原本做不到的:生產看板、應收收款、多倉揀貨、工時報表、拖拉式甘特圖派車排程、簡訊通知、產能熱力圖。
第五步:規劃書逐項對標稽核。 不是「做完就算」— 拿當初交付的規劃書一條一條對,產出修正清單逐項補齊,並建進度追蹤檔讓客戶隨時看得到完成度。缺件、外部依賴全部標記出來,不留模糊地帶。
成果
VFP 版穩定在用,客戶從「沒源碼的黑盒」回到「有源碼的可控系統」— 這一步先穩住了營運。
Web 版已完成開發並部署到正式環境,進入上線前驗收。 含登入暴力破解防護等安全強化,功能逐項實測驗證通過。
這就是『沒源碼』案子的正確工法 — 先逆向重寫穩住現況,再從容搬上現代架構。想一步到位反而風險最高。