# AARS - Attendance & Accident Record System 出勤及意外記錄系統 ## 🚀 快速開始 ### 方式一:Docker 部署(推薦) ```bash # 复制到 VPS scp -r ~/aars root@187.127.116.15:/root/ # SSH 到 VPS ssh root@187.127.116.15 # 進入目录并运行 cd /root/aars chmod +x setup.sh ./setup.sh ``` 访问:`http://187.127.116.15:18775` ### 方式二:本地开发 ```bash # Backend cd backend python3 -m venv venv source venv/bin/activate pip install -r requirements.txt python test_backend.py # 测试 uvicorn main:app --reload --port 8000 # Frontend (另一个terminal) cd frontend npm install npm run dev ``` ## 🔐 默认账户 - **Email:** admin@aars.hk - **Password:** admin123 ⚠️ 首次登录后请立即修改密码! ## 📋 功能 ### 出勤 Attendance - ✅ 列表视图 (Filter/Sort/分页) - ✅ 新增/编辑/删除记录 - ✅ Excel 批量导入(自动去重) - ✅ 导出 Excel / PDF - ✅ 自定义字段 ### 意外 Accident - ✅ 列表视图 (Filter/Sort/分页) - ✅ 新增/编辑/删除记录 - ✅ Excel 批量导入(自动去重) - ✅ 导出 Excel / PDF - ✅ 自定义字段 ### Dashboard - 📊 统计卡片(总计/今日/本月) - 📈 趋势图表 - ⚠️ 最近意外列表 ## 🏗️ 技术栈 | Layer | Technology | |-------|------------| | Frontend | React 18 + Vite + TailwindCSS | | Backend | FastAPI + SQLAlchemy | | Database | SQLite | | Charts | Recharts | | Excel | openpyxl + xlsxwriter | | PDF | ReportLab | ## 📁 项目结构 ``` aars/ ├── backend/ │ ├── main.py # FastAPI app │ ├── models.py # Database models │ ├── schemas.py # Pydantic schemas │ ├── auth.py # JWT auth │ ├── database.py # SQLite setup │ └── requirements.txt ├── frontend/ │ ├── src/ │ │ ├── pages/ # React pages │ │ ├── components/ # Reusable components │ │ └── context/ # Auth context │ └── ... ├── docker-compose.yml ├── Dockerfile └── SPEC.md ``` ## 🔧 配置 ### 端口 - 默认: `18775` - 修改: 编辑 `docker-compose.yml` ### JWT Secret - 开发: 自动生成 - 生产: 修改 `backend/secret.py` ## 📝 API 文档 启动后访问:`http://localhost:8000/docs` (Swagger UI) ## 🐛 常见问题 **Q: Docker build 失败?** ```bash docker compose down docker compose build --no-cache docker compose up -d ``` **Q: 无法登录?** 检查浏览器 console 的 CORS 错误,或确认 JWT secret 未变更。 **Q: Excel 导入失败?** 确保 Excel 文件第一行是表头,且日期格式为 `YYYY-MM-DD`。