# HACCP 環境檢查表管理系統

## 📌 功能簡介

本系統用於管理與紀錄每日 **HACCP 環境檢查**，包含檢查表填寫、歷史紀錄查詢、檢查區域與檢查項目管理，並支援匯入/匯出設定。

## 🔧 系統架構

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

## 📑 功能說明

### 1. 環境檢查表填寫（首頁 `/`）

- 可選擇日期與時段（上午/下午）。
- 系統自動載入已啟用的檢查區域與檢查項目。
- 使用者可勾選檢查狀態並填寫備註。
- 同一日期+時段的紀錄僅允許一筆，若重複提交則更新原紀錄。

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

- 支援日期區間篩選。
- 顯示每筆檢查紀錄的檢查結果。
- 透過區域與項目對照表，將紀錄內容轉換為對應名稱顯示。

### 3. 區域管理 (`/manage_areas`)

- 可新增/編輯/停用檢查區域。
- 支援拖曳排序（更新 position）。
- 支援匯出與匯入：
    
    
    - **匯出**：下載 JSON 格式 (`area_export.json`)。
    - **匯入**：上傳 JSON，避免重複名稱區域。

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

- 可針對單一區域新增/編輯/停用檢查項目。
- 支援拖曳排序（更新 position）。

### 5. JSON 匯入/匯出

- **匯出 (`/export_areas`)**：輸出所有區域與檢查項目。
- **匯入 (`/import_areas`)**：匯入 JSON 檔，支援避開重複區域。

## 📂 主要資料表

- **Area**
    
    
    - `id`、`name`、`is_active`、`position`
- **CheckItem**
    
    
    - `id`、`name`、`is_active`、`position`、`area_id`
- **Checklist**
    
    
    - `id`、`check_date`、`period`（上午/下午）
    - `results`（JSON 格式，存每個區域檢查項目狀態）