工程文件
工程企劃書
本工程企劃書定義正式後端系統的模組分層、技術選型、資料流、測試策略與階段導入順序。
技術決策
| 項目 | C# .NET 5.0 |
|---|---|
| 測試框架 | xUnit |
| 第一階段 Host | Web API + Console Worker,或先以 ConsoleHost 驗證排程與通知流程。 |
| 文件網站 | 靜態 HTML,可部署至 GitHub Pages 或 Cloudflare Pages。 |
| 登入權限 | 最後階段導入 Microsoft 365 / Outlook / Entra ID。 |
建議 Solution 結構
HS.ProjectFlow.sln
src/
HS.ProjectFlow.Core/
HS.ProjectFlow.Workflow/
HS.ProjectFlow.Importing/
HS.ProjectFlow.Adapters/
HS.ProjectFlow.Notification/
HS.ProjectFlow.Reporting/
HS.ProjectFlow.Api/
HS.ProjectFlow.Worker/
tests/
HS.ProjectFlow.Core.Tests/
HS.ProjectFlow.Workflow.Tests/
HS.ProjectFlow.Notification.Tests/
HS.ProjectFlow.Integration.Tests/
模組職責
| 模組 | 職責 |
|---|---|
| Core | 專案、節點、品項、狀態、部門、日期、通知事件等核心模型。 |
| Workflow | 節點轉移、狀態機、流程檢查、逾期判斷。 |
| Importing | 報價單、採購單、BOM、Excel 報表匯入與欄位標準化。 |
| Adapters | Google Sheet、Outlook / SMTP、檔案儲存、Excel 匯出。 |
| Notification | 提醒規則、通知合併、寄送結果、通知紀錄。 |
| Reporting | 查詢、彙總、日報表與 Excel 匯出。 |
| Api | 前端與外部系統使用的 HTTP API。 |
| Worker | 每日排程檢查、通知寄送、背景同步。 |
開發階段
- 整理現有 React 前端與 .NET API 的資料欄位與行為規格。
- 先完成採購部作為第一個部門模組,驗證專案總覽、來源單據、採購明細與狀態異動。
- 把採購部本地 JSON 結構收斂為正式資料表草稿與 API contract。
- 建立 C# .NET 5.0 Solution 與 Core Model。
- 建立採購部正式 API、MySQL 5.6.2 Repository 與狀態異動紀錄。
- 建立 Workflow Engine 與節點狀態轉移測試。
- 建立 Import Adapter,先支援現有報價單 / 採購單 JSON。
- 建立 Google Sheet Adapter 與專案比對服務,作為過渡資料同步來源。
- 建立 Notification Rule Engine 與 dry run 通知紀錄。
- 建立 Web API 與背景 Worker。
- 確認採購部模組穩定後,再以相同邊界擴展到業務、工程、財務與倉庫。
- 補上權限欄位與審計紀錄,最後階段導入 Microsoft 登入。
部門 Agent 邊界
未來各部門可以配置自己的 Agent 或自動化流程,但 Agent 不得直接修改其他部門擁有的資料。所有跨部門互通都必須透過 API command、事件或任務建立。
| Agent | 可修改範圍 | 不可直接修改 | 跨部門方式 |
|---|---|---|---|
| 採購部 Agent | 採購狀態、來源單據、交貨日、採購備註。 | BOM、案件合約日期、發票付款、倉庫入庫。 | 發出採購事件或到貨待確認任務。 |
| 業務部 Agent | 案件基本資料、客戶、履約交貨日、驗收資料。 | 採購狀態、BOM 明細、庫存與付款。 | 發出開案、規格交付、驗收完成事件。 |
| 工程部 Agent | BOM、工程圖、工程異常、測試回報。 | 採購叫貨、付款、客戶合約欄位。 | 發出 BOM 發布或補件需求事件。 |
| 倉庫 Agent | 到貨、入庫、儲位、短交、出庫。 | 採購單價、BOM、合約日期、付款。 | 回寫到貨事件,供採購與財務讀取。 |
| 財務 Agent | 發票、付款、成本歸屬、請款狀態。 | 採購作業狀態、BOM、倉庫入庫數。 | 發出付款或發票確認事件。 |
API 設計需避免共用一個大而全的 update endpoint,應以部門 Command 切開,例如 Procurement.UpdatePurchaseItemStatus、Warehouse.ConfirmArrival、Engineering.PublishBom、Sales.UpdateContractDeliveryDate、Finance.UpdateInvoiceStatus。這樣才能降低改 A 壞 B 的風險。
測試計畫
- Core Model 單元測試。
- Workflow 狀態轉移測試。
- 報價單匯入與欄位映射測試。
- 專案比對測試。
- 通知規則與通知合併測試。
- Excel 匯出格式測試。
- 背景排程 dry run 測試。