# 衛生檢查表

# 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 格式，存每個區域檢查項目狀態）

# 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 格式，存放各檢查項目勾選狀態）