Files
spark-tracker/README.md
T
luff 0e6065897b 星火纪元 个人成长追踪 v1.0
- Flask + SQLite 自托管,单用户无 PIN
- 仪表盘:学科进度环轮播、健康双线图、任务接龙、书架墙、浮动打卡
- 后台:孩子信息、学科/单元课表、健康历史录入、数据管理(重置/新学期)
- 徽章由进度实时派生;主题由后台设置
2026-08-11 15:20:53 +08:00

84 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 星火纪元 · 儿童个人成长系统(自托管)
给自家孩子用的轻量成长记录 Web 服务:追踪**学科进度**、**读书**、**运动打卡**、**健康**并颁发轻量徽章。
纯本地、离线可用,数据存在你自己的 SQLite 文件里,不依赖任何云、不用 Docker。
## 特性
- 📅 **学期日历小图**:进度环旁的点状日历,每点代表一天,按颜色区分打卡密度(越深越多 / 蓝=周末 / 灰=未打卡 / 圆环=今天),一眼看学期投入节奏。起止日期在家长后台「孩子信息」里设定。
- 🎡 **各学科进度一览**:一行小进度环,每屏 3 个学科自动轮播;右侧有半透明「›」箭头可手动切下一屏。
- 📚 **学科进度(单科轮播)**:整年课表(学科 → 单元/章节)逐科展示;每科按任务顺序显示「已完成 3 · 进行中 1 · 待完成 3」,点一下即完成、下一任务自动接上。点「详情」弹窗看全部单元与目标日。
- 📖 **书架墙**:已读完的书以封面墙展示——上排 3 本最近读完、下排 3 本随机回顾;点「详情」弹窗可按书名/作者/分类搜索、分类筛选、排序。无封面时显示彩色书脊,封面完成日期标在右下角。封面支持本地上传(自动标准化为统一 2:3 并生成缩略图)或填图片 URL。
- 💗 **健康综合**:主视图只显示「当前身高 / 当前体重」及同龄标准参考;点「📈 图表详情」弹窗看最近两年的身高(绿)/体重(橙)双线趋势。家长后台可补录任意历史日期的健康数据。
- 🚀 **浮动快捷打卡**:仪表盘右侧常驻三个竖向按钮——跳绳打卡、仰卧起坐打卡、读书打卡,点一下即记录当天打卡。
- 🏅 **轻量徽章**:由任务完成数、读书、运动等实时派生(如「迈出第一步」「任务小达人」「单科全通关」「学年进度过半」等),随进展自动获得;仪表盘顶部轮播已得徽章,点开可看全部(含未解锁)与获得时间。
- 🎨 **主题**:家长后台「孩子信息」里设定默认主题(浅色 / 暗色 / 糖果 / 海洋),服务端直接应用,刷新即生效。
- 🔒 **双角色**:孩子无 PIN 直进仪表盘;家长后台 `/admin` 用密码管理课表、健康记录与数据(含一键导出 JSON)。
## 运行(不用 Docker
需要 Python 3.10+。
```bash
cd tracker
python -m venv venv
venv\Scripts\activate # Windows
# macOS/Linux: source venv/bin/activate
pip install -r requirements.txt
python app.py
```
启动后打开:
- 仪表盘: http://127.0.0.1:5000/
- 家长后台: http://127.0.0.1:5000/admin (默认账号 `admin` / 密码 `admin123`
首次启动会自动建库并写入一份示例数据,方便直接看效果。
## 配置(环境变量,可选)
| 变量 | 默认 | 说明 |
|---|---|---|
| `ADMIN_USER` | admin | 家长后台用户名 |
| `ADMIN_PASSWORD` | admin123 | 家长后台密码 |
| `PORT` | 5000 | 服务端口 |
| `SECRET_KEY` | change-me... | Flask 会话密钥 |
例:`ADMIN_PASSWORD=你的强密码 PORT=8080 python app.py`
## 家长后台数据管理
- **重置全部数据**:清空所有进度 / 打卡 / 健康记录,但保留学科、单元、书目结构(方便从零开始新一轮记录)。
- **开启新学期**:把单元进度重置为「未开始」、清空打卡,并把学期起设为今天;适合换学期时一键归零。
> 徽章由进度实时派生,重置或开启新学期后会随孩子的新进展自动重新累积,无需手动发徽章。
## 数据与备份
- 数据库文件:`data/tracker.db`(单文件,复制即备份)。
- 上传的本地封面:`static/covers/`(备份时建议连同此目录一起复制)。
- 家长后台「导出全部数据」可下载 `tracker-export.json`
## 目录结构
```
tracker/
├── app.py # Flask 应用 + 数据库 + 纯 SVG 图表逻辑
├── requirements.txt
├── data/tracker.db # 自动生成
├── templates/
│ ├── base.html # 布局 + 主题类挂载
│ ├── dashboard.html # 孩子仪表盘
│ ├── admin.html # 家长后台
│ ├── login.html
│ └── _book_cover.html # 书架封面局部(主墙与详情弹窗共用)
└── static/
├── style.css
└── covers/ # 上传的本地封面
```
## 说明
- 图表用纯 SVG 生成,无任何外部 CDN 依赖,断网也能用。
- 按需求定制:单孩子、无 PIN、Python、不用 Docker、小学阶段、手动录课表、轻量徽章。
- 多孩子、教材章节模板、更多健康指标可在现有数据模型上平滑扩展。