FaceMatch

FaceMatch 企業級管理系統

API Migration TypeScript OpenAPI

一個功能完整的企業級 FaceMatch 承攬商管理系統,具備完整的 TypeScript 後端、OpenAPI 文檔、多層級簽核工作流程、AD 驗證整合等企業功能。

🎉 最新消息

🚀 API 遷移專案完成! 所有 42 個 API 端點已成功從 JavaScript 遷移到 TypeScript,實現 100% 類型安全!

🚀 快速啟動

前置要求

一鍵安裝與啟動

# 1. 安裝依賴
npm run setup

# 2. 建置專案
npm run build

# 3. 啟動服務 (推薦 PM2)
npm run start:pm2

# 查看服務狀態
pm2 status

開發模式

# 同時啟動前後端開發模式
npm run dev:all

# 或分別啟動
npm run dev           # 後端開發模式
npm run dev:frontend  # 前端開發模式

生產環境部署

# Rocky Linux/CentOS/RHEL 自動部署
./deploy-rocky.sh

# 手動 PM2 管理
npm run start:pm2     # 啟動服務
npm run stop:pm2      # 停止服務  
npm run restart:pm2   # 重啟服務

🌐 系統地址

🏠 本地開發環境

☁️ 雲端部署環境

💡 說明: 雲端版本為前端展示用途,完整功能需本地部署後端 API

預設登入帳號

⚠️ 安全提醒: 生產環境請務必修改預設密碼!參考 SECURITY.md

✨ 核心功能

🏗️ 系統架構 (100% TypeScript)

👥 承攬商管理

📋 施工單管理 + 多層級簽核

🎓 年度資格管理 + 快速操作

👤 使用者管理系統

🔍 人臉辨識管理 (NEW!)

🔐 企業級認證系統

📊 企業級日誌系統

🛠️ 技術架構

後端 (100% TypeScript)

技術棧:
├── TypeScript 5.8+        # 類型安全
├── Express.js 4.21+       # Web 框架
├── OpenAPI 3.0            # API 規範
├── Swagger UI             # API 文檔
├── SQLite + Sequelize     # 資料庫
├── bcrypt                 # 密碼加密
├── LDAP 整合              # AD 驗證
├── Winston                # 日誌管理
└── PM2                    # 進程管理

前端

技術棧:
├── 響應式 HTML/CSS/JS     # 輕量化前端
├── 智能 API 路由          # 自動後端檢測
├── 模組化設計             # 易於維護
├── React 版本 (client/)   # 現代化備選
└── 深色模式支援           # 使用者體驗

企業功能

核心特性:
├── 多層級簽核工作流程     # 業務流程自動化
├── 角色基礎存取控制       # RBAC 權限系統
├── Active Directory 整合   # 企業帳號統一
├── 完整操作日誌追蹤       # 稽核與合規
├── 資料完整性保護         # 商業邏輯驗證
└── API 文檔與測試         # 開發者友善

📁 專案結構

FaceMatch/
├── 🚀 主要服務
│   ├── ecosystem.config.js        # PM2 生產環境配置
│   ├── package.json               # 專案依賴與腳本
│   └── deploy-rocky.sh             # 自動部署腳本
├── 📂 TypeScript 後端 (src/)
│   ├── app.ts                     # 主應用程式入口
│   ├── routes/                    # API 路由層
│   │   ├── api.ts                # 主路由配置
│   │   ├── auth.ts               # 認證管理
│   │   ├── contractors.ts        # 承攬商管理
│   │   ├── work-orders.ts        # 施工單管理
│   │   ├── approvals.ts          # 簽核管理
│   │   ├── qualifications.ts     # 年度資格管理
│   │   ├── facematch.ts          # 人臉辨識管理 ⭐ NEW
│   │   ├── users.ts              # 使用者管理
│   │   ├── config.ts             # 系統配置
│   │   └── logs.ts               # 日誌管理
│   ├── models/                   # 資料模型
│   ├── middleware/               # 中間件
│   ├── types/                    # TypeScript 類型
│   ├── utils/                    # 工具函數
│   ├── config/                   # 配置檔案
│   └── docs/                     # OpenAPI 規範
│       └── openapi.yml           # API 文檔定義
├── 📂 前端
│   ├── static/index.html         # 主要前端應用
│   └── client/                   # React 版本 (開發中)
├── 📂 編譯輸出
│   └── dist/                     # TypeScript 編譯結果
├── 📂 文檔
│   ├── README.md                 # 主要說明文件
│   ├── API-MIGRATION-STATUS.md   # API 遷移狀態 ⭐
│   ├── SECURITY.md               # 安全配置指南
│   └── DEPLOY.md                 # 部署指南
└── 📂 資料與日誌
    ├── facematch.sqlite          # SQLite 資料庫
    └── logs/                     # 系統日誌

🔗 API 端點總覽

認證管理 (3 endpoints)

POST   /api/login           # 使用者登入 (AD/本地)
POST   /api/logout          # 使用者登出
GET    /api/verify-session  # 會話驗證

承攬商管理 (5 endpoints)

GET    /api/contractors     # 取得承攬商列表
POST   /api/contractors     # 建立承攬商
GET    /api/contractors/:id # 取得單一承攬商
PUT    /api/contractors/:id # 更新承攬商
DELETE /api/contractors/:id # 刪除承攬商

施工單 + 簽核管理 (15 endpoints)

# 施工單基本操作
GET    /api/work-orders                    # 取得施工單列表
POST   /api/work-orders                    # 建立施工單
GET    /api/work-orders/:id                # 取得單一施工單
PUT    /api/work-orders/:id                # 更新施工單
DELETE /api/work-orders/:id                # 刪除施工單

# 簽核流程
GET    /api/work-orders/pending-approval   # 待簽核清單
POST   /api/work-orders/:id/approve        # 快速簽核
GET    /api/work-orders/:id/history        # 簽核歷史

# 進階簽核操作
POST   /api/approvals/:id/submit           # 提交申請
POST   /api/approvals/:id/ehs              # 職環安簽核
POST   /api/approvals/:id/manager          # 經理簽核
POST   /api/approvals/:id/admin-reject     # 管理員駁回
POST   /api/approvals/:id/resubmit         # 重新提交
GET    /api/approvals/:id/history          # 詳細簽核歷史
GET    /api/approvals/pending              # 個人待簽核清單

年度資格管理 (7 endpoints)

GET    /api/qualifications                 # 取得資格列表
POST   /api/qualifications                 # 建立資格
GET    /api/qualifications/:id             # 取得單一資格
PUT    /api/qualifications/:id             # 更新資格
DELETE /api/qualifications/:id             # 刪除資格
POST   /api/qualifications/:id/quick-renew # 快速續約 ⚡
POST   /api/qualifications/:id/quick-suspend # 快速停用 ⚡
POST   /api/qualifications/:id/reactivate  # 重新啟用 ⚡

人臉辨識管理 (6 endpoints) ⭐ NEW

GET    /api/facematch                      # 取得辨識記錄列表
POST   /api/facematch                      # 建立辨識記錄
GET    /api/facematch/:id                  # 取得單一記錄
PUT    /api/facematch/:id                  # 更新記錄
DELETE /api/facematch/:id                  # 刪除記錄
POST   /api/facematch/verify               # 人臉驗證 🔍
POST   /api/facematch/sync                 # 數據同步 🔄

使用者管理 (7 endpoints)

GET    /api/users                          # 取得使用者列表
POST   /api/users                          # 建立使用者
GET    /api/users/:id                      # 取得單一使用者
PUT    /api/users/:id                      # 更新使用者
DELETE /api/users/:id                      # 刪除使用者
POST   /api/users/:id/reset-password       # 重設密碼
POST   /api/users/:id/toggle-status        # 切換狀態
POST   /api/users/sync-ad                  # AD 同步

系統配置與日誌 (4 endpoints)

GET    /api/ad-config                      # AD 配置狀態
GET    /api/approvers                      # 簽核者清單
GET    /api/logs/stats                     # 日誌統計
DELETE /api/logs/cleanup                   # 日誌清理

總計: 42 個 API 端點 - 100% TypeScript 實現

📊 系統統計

🎯 核心指標:
├── API 端點總數: 42 個
├── TypeScript 覆蓋率: 100%
├── 功能模組數: 8 個主要模組
├── 簽核層級: 2 層企業流程
├── 使用者角色: 4 種權限等級
├── 認證方式: 2 種 (AD + 本地)
└── 資料庫: SQLite (輕量企業級)
🚀 技術成就:
├── ✅ 完整 API 遷移 (JS → TS)
├── ✅ OpenAPI 3.0 文檔化
├── ✅ 智能前端路由系統
├── ✅ 企業級安全實作
├── ✅ 多層級簽核工作流程
├── ✅ 完整稽核日誌系統
└── ✅ 生產環境自動部署

🔒 企業級安全特性

📈 版本歷史

v3.1.0 - 多平台部署完成 🚀 (最新)

v3.0.0 - API 遷移完成 🎉

v2.3.0 - 生產環境部署升級

v2.2.0 - TypeScript + OpenAPI 企業級升級

v2.1.0 - 增強型簽核系統

v2.0.0 - 企業級功能

🧪 開發與測試

開發腳本

npm run dev           # 後端開發模式 (nodemon)
npm run dev:frontend  # 前端開發模式
npm run dev:all       # 同時啟動前後端
npm run build         # 建置整個專案
npm run lint          # ESLint 代碼檢查
npm run format        # Prettier 代碼格式化
npm run clean         # 清理建置檔案與日誌

測試與驗證

# API 測試 (透過 Swagger UI)
curl http://localhost:5001/api-docs

# 健康檢查
curl http://localhost:5001/health

# 功能驗證
curl http://localhost:5001/api/contractors

🎯 使用案例

承攬商管理流程

  1. 新增承攬商 → 建立基本資料與聯絡資訊
  2. 資格驗證 → 檢查年度資格有效性
  3. 施工申請 → 提交施工單進入簽核流程
  4. 多層簽核 → 職環安 → 經理逐層核准
  5. FaceMatch 整合 → 人臉辨識驗證進場

年度資格管理流程

  1. 建立資格 → 新增技術/安全資格記錄
  2. 狀態監控 → 自動追蹤即將到期資格
  3. 快速續約 → 一鍵延長有效期限
  4. 緊急停用 → 違規時立即暫停資格
  5. 重新啟用 → 問題解決後恢復資格

簽核工作流程

  1. 提交申請 → 申請人建立施工單
  2. 職環安審核 → 第一層安全檢查
  3. 經理核准 → 最終決策層級
  4. 智能駁回 → 靈活的駁回路由選擇
  5. 重新提交 → 修正後重新進入流程

🚀 立即開始

# 1. 克隆專案
git clone <repository-url>
cd FaceMatch

# 2. 安裝與建置
npm run setup

# 3. 啟動服務
npm run start:pm2

# 4. 打開瀏覽器
open http://localhost:3000

📞 支援與貢獻


🎉 專案特色

這是一個功能完整的企業級管理系統,具備:

100% TypeScript 後端 - 完整類型安全
企業級簽核工作流程 - 多層級業務流程自動化
Active Directory 整合 - 企業帳號統一管理
OpenAPI 3.0 標準 - 完整 API 文檔與測試
生產環境就緒 - PM2 + 自動部署腳本

適用場景: 承攬商管理、施工安全簽核、年度資格追蹤、企業使用者管理、人臉辨識整合

立即體驗: npm run setup && npm run start:pm2 🚀