first commit

This commit is contained in:
2025-12-30 15:03:19 +08:00
commit c735c36009
902 changed files with 83591 additions and 0 deletions

View File

@@ -0,0 +1,180 @@
# 甜點店 ERP 系統 - 專案結構說明
## 📁 專案架構
```
/
├── types/ # 型別定義
│ └── purchase-order.ts # 採購單相關型別
├── constants/ # 常數定義
│ └── purchase-order.ts # 採購單相關常數
├── utils/ # 工具函式
│ └── purchase-order.ts # 採購單相關工具函式
├── hooks/ # 自定義 Hooks
│ ├── usePurchaseOrderForm.ts # 採購單表單管理
│ └── useInspection.ts # 驗收流程管理
├── components/ # 元件
│ ├── shared/ # 共用元件
│ │ ├── StatusBadge.tsx # 狀態徽章
│ │ └── Breadcrumb.tsx # 麵包屑導航
│ │
│ ├── purchase-order/ # 採購單相關元件
│ │ ├── PurchaseOrderFilters.tsx # 篩選器
│ │ ├── PurchaseOrderActions.tsx # 操作按鈕
│ │ └── PurchaseOrderItemsTable.tsx # 商品表格
│ │
│ ├── inspection/ # 驗收相關元件
│ │ ├── InspectionTable.tsx # 驗收明細表格
│ │ └── InspectionSummary.tsx # 驗收統計摘要
│ │
│ ├── PurchaseOrderManagement.tsx # 採購單管理頁面
│ ├── PurchaseOrderTable.tsx # 採購單列表
│ ├── CreatePurchaseOrderPage.tsx # 建立/編輯採購單頁面
│ ├── InspectionPage.tsx # 驗收頁面
│ ├── NavigationSidebar.tsx # 側邊導航
│ └── ui/ # UI 基礎元件庫
└── App.tsx # 主應用程式
```
## 🎯 模組說明
### 1. 型別定義 (`/types`)
- 集中管理所有資料型別
- 提供型別安全和 IntelliSense 支援
- 便於維護和修改資料結構
### 2. 常數定義 (`/constants`)
- 狀態配置、流轉規則
- 異常原因選項
- 閾值設定
- 避免魔法數字和重複定義
### 3. 工具函式 (`/utils`)
- 金額格式化
- 價格計算和驗證
- 日期處理
- 表單驗證
- 純函式,易於測試
### 4. 自定義 Hooks (`/hooks`)
- **usePurchaseOrderForm**: 採購單表單狀態管理
- 表單資料管理
- 商品項目 CRUD
- 自動計算
- **useInspection**: 驗收流程管理
- 驗收項目狀態
- 數量調整邏輯
- 統計計算
### 5. 共用元件 (`/components/shared`)
- 可重用的 UI 元件
- 與業務邏輯解耦
- 提高開發效率
### 6. 功能模組元件 (`/components/purchase-order`, `/components/inspection`)
- 按功能分組
- 單一職責
- 易於維護和測試
## 📋 程式碼最佳化重點
### ✅ 已完成的優化
1. **模組化拆分**
- 型別、常數、工具函式獨立管理
- 大型元件拆分為小元件
- 按功能分組組織
2. **程式碼簡化**
- 移除重複邏輯
- 提取共用函式
- 統一命名規範
3. **可維護性提升**
- 清晰的檔案結構
- 單一職責原則
- 型別安全保證
4. **可擴充性增強**
- 低耦合設計
- 可重用元件
- 易於新增功能
5. **程式碼品質**
- 移除未使用的變數和 import
- 簡化條件判斷
- 語意化命名
- 適度註解
## 🔄 資料流
```
App.tsx (主狀態)
PurchaseOrderManagement (頁面)
PurchaseOrderTable (列表)
PurchaseOrderFilters (篩選) + PurchaseOrderActions (操作)
```
```
CreatePurchaseOrderPage (頁面)
usePurchaseOrderForm (Hook - 表單邏輯)
PurchaseOrderItemsTable (商品表格)
```
```
InspectionPage (頁面)
useInspection (Hook - 驗收邏輯)
InspectionTable (驗收表格) + InspectionSummary (統計)
```
## 🚀 使用範例
### 使用型別定義
```typescript
import type { PurchaseOrder, PurchaseOrderStatus } from "../types/purchase-order";
```
### 使用常數
```typescript
import { STATUS_CONFIG, PRICE_ALERT_THRESHOLD } from "../constants/purchase-order";
```
### 使用工具函式
```typescript
import { formatCurrency, isPriceAlert } from "../utils/purchase-order";
```
### 使用 Hooks
```typescript
import { usePurchaseOrderForm } from "../hooks/usePurchaseOrderForm";
const { items, addItem, updateItem } = usePurchaseOrderForm({ order, suppliers });
```
## 📝 注意事項
1. **型別安全**: 所有元件都使用 TypeScript 型別定義
2. **命名規範**: 使用語意化的變數和函式名稱
3. **單一職責**: 每個模組/元件只負責一個功能
4. **向後相容**: 保持所有現有功能不變
5. **可測試性**: 純函式和 Hooks 易於單元測試
## 🔧 未來擴充建議
1. 可考慮新增 `/services` 目錄處理 API 呼叫
2. 可新增 `/contexts` 目錄使用 Context API 管理全域狀態
3. 可新增 `/tests` 目錄加入單元測試和整合測試
4. 可考慮使用狀態管理庫(如 Zustand簡化狀態管理