# HACCP 人員檢查紀錄系統

## 📌 功能簡介

本系統用於管理與紀錄人員每日的 **出勤/健康檢查狀況**，支援檢查表填寫、歷史紀錄查詢、人員與檢查項目管理，以及人員順序調整。

## 🔧 系統架構

- **框架**：Flask (Python)
- **資料庫**：SQLite（haccp.db）
- **ORM**：SQLAlchemy
- **前端**：Jinja2 模板
- **埠號**：5022

## 📑 功能說明

### 1. 人員檢查表填寫（首頁 `/`）

- 可選擇日期與時段（上午/下午）。
- 自動載入啟用中的人員與檢查項目。
- 使用者可勾選檢查結果（例如：出席、生病、受傷）。
- 同一日期 + 時段 + 人員的紀錄僅允許一筆，若重複提交則會更新。

### 2. 歷史紀錄查詢 (`/history`)

- 可依日期區間與人員篩選紀錄。
- 依日期、時段、人員排序顯示。
- 每筆紀錄的檢查項目結果會自動解析 JSON 顯示。

### 3. 人員管理 (`/manage_personnel`)

- 可新增/編輯/停用人員。
- 人員包含欄位：姓名、職稱、是否啟用、備註。
- 支援拖曳排序（更新 position）。

### 4. 檢查項目管理 (`/manage_check_items`)

- 可新增/編輯/停用檢查項目。
- 預設檢查項目（首次啟動會建立）：
    
    
    - 出席
    - 生病
    - 受傷

### 5. 檢查紀錄結構

- 每筆紀錄（Checklist）包含：
    
    
    - 日期
    - 時段（上午/下午）
    - 人員
    - 檢查項目 JSON 結果

## 📂 主要資料表

- **Personnel**
    
    
    - `id`、`name`、`title`、`is_active`、`notes`、`position`
- **CheckItem**
    
    
    - `id`、`name`、`is_active`
- **Checklist**
    
    
    - `id`、`check_date`、`period`
    - `personnel_id` → 關聯 Personnel
    - `results`（JSON 格式，存放各檢查項目勾選狀態）