Add full AARS system - Attendance & Accident Record System
- FastAPI backend with SQLite database - React + TailwindCSS frontend - JWT authentication - Excel upload/download for attendance and accident records - Shift roster management with S7a/S7b split - Lateness/OT calculation based on shift times - Roster info API endpoints - Export API with token query parameter support - Docker compose deployment
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
# 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`。
|
||||
Reference in New Issue
Block a user