Commit Graph

44 Commits

Author SHA1 Message Date
3b1f7fb416 feat: 添加饮食文字AI识别功能与代码文档
- 饮食页面新增"文字AI识别"按钮,支持输入文字描述后自动识别卡路里
- 修复 database.py 中 time 模块导入冲突问题
- 新增 CODEMAPS.md 代码结构文档

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 15:38:08 +08:00
lzh
ac8c95d1a9 chore(docker): 生产环境 MySQL 配置注释,便于后续外连时启用端口 2026-01-26 14:28:16 +08:00
0f11e8ad56 feat: 用户配置隔离与食物智能识别
1. Config 表用户隔离
   - 添加 user_id 字段,复合主键 (user_id, key)
   - 现有数据归属 ID=1 用户
   - 所有 get_config/save_config 调用传入 user_id

2. 食物文字智能识别
   - 本地数据库优先匹配(快速)
   - 识别失败时自动调用通义千问 AI(准确)
   - 有配置 API Key 才调用,否则返回本地结果

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 11:32:56 +08:00
lzh
afc6d2fb5e fix: 添加 hash_password 导入修复注册接口
- 注册时使用 hash_password 但未导入该函数
- 导致 NameError: name 'hash_password' is not defined

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:11:54 +08:00
lzh
4614946c7a fix: 修复邀请码注册时 _parse_datetime 类型处理问题
- MySQL 返回的 datetime 可能是 date 类型
- _parse_datetime 现在能正确处理 date 类型
- 修复注册接口 500 错误

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:07:46 +08:00
lzh
ac478e1600 修复认证问题:支持从 Cookie 读取 token
- 修复 require_user 和 require_admin 函数只从 Header 读取 token 的问题
- 新增 get_token_from_request 函数,优先从 Cookie 读取 token,其次从 Header 读取
- 更新所有认证相关函数以支持 Cookie 和 Header 两种认证方式
- 解决 /api/admin/api-keys 等接口返回未登录错误的问题
2026-01-23 22:49:53 +08:00
eb88d2638f feat: API Keys 支持数据库存储和 Web 界面管理
- database.py: 新增 get_api_key/set_api_key/delete_api_key/get_all_api_keys 函数
- qwen.py/deepseek.py/analyzer.py: 改用 db.get_api_key() 读取配置
- app.py: 新增管理员 API 接口 (/api/admin/api-keys)
- settings 页面: 管理员可见的 API 密钥配置区域

API Key 优先级: 数据库 > 环境变量

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:33:50 +08:00
dba052bb5e docs: API Keys 数据库存储设计文档
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:33:50 +08:00
lzh
cd27ecf7d0 fix: MySQL 连���池添加重试逻辑
- 最多重试 30 次,每次间隔 2 秒
- 解决 MySQL 容器启动慢导致的连接失败问题
- 添加 import time 模块

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 21:41:02 +08:00
lzh
4c22a137cf refactor: 管理员账号存储在数据库,生产环境使用宿主机目录存储数据
- 管理员账号在数据库初始化时创建,不再从环境变量读取
  - 默认账号: admin / admin123
  - 首次启动时自动创建,请在登录后修改密码
- 移除 ADMIN_USERNAME 和 ADMIN_PASSWORD 环境变量
- 生产环境 MySQL 数据直接存储在宿主机 /opt/vitals/mysql_data
  - 便于备份和恢复
  - 更直观的数据管理
- 更新部署指南,添加 MySQL 数据目录创建和备份说明
- 更新 .env.example 和 README.md 反映新的配置方式

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 21:16:32 +08:00
18e0668941 docs: 更新 README 反映 MySQL 迁移和 H5 适配功能
- 更新快速启动说明,添加 MySQL 环境变量配置
- 更新环境变量表格,添加 MySQL 相关配置项
- 更新技术栈说明(SQLite → MySQL 8.0)
- 更新项目结构,添加迁移脚本说明
- 添加功能清单:MySQL 数据库支持、移动端 H5 适配

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:41:50 +08:00
733d737413 fix: MySQL 类型兼容性修复
- 添加 _parse_datetime, _parse_date, _parse_time 辅助函数
- 处理 MySQL 返回原生 datetime/date/time 类型而非字符串的情况
- 修改默认绑定地址为 0.0.0.0 以支持局域网访问

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:37:35 +08:00
5860dccd60 style: 报告页面移动端适配
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:37:35 +08:00
f9e586582f style: 管理页面 H5 移动端适配
- 添加移动端 CSS: 隐藏桌面导航,响应式布局
- 表格改为卡片列表: 使用 data-label 属性显示字段名
- 按钮触摸目标: 最小 44px 高度
- 表单输入框: 48px 高度,font-size 16px
- 底部 Tab 导航: 包含更多菜单和管理入口
- Safe area 支持: 适配刘海屏设备
- 操作按钮组: 移动端水平排列

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:37:35 +08:00
00d93f132a style: 设置页面移动端适配 2026-01-23 18:37:35 +08:00
3831ed6580 style: 阅读页面 H5 移动端适配增强
- 表单输入框: 增大到 48px 高度,font-size 16px 防止 iOS 缩放
- 按钮触摸目标: 最小 48px 高度
- 时长预设按钮: 44px 触摸目标
- 心情选择器: 48px 触摸目标
- 底部导航: 添加 safe-area-inset-bottom 支持
- 更多菜单: 触摸目标优化
- 模态框: 移动端边距和滚动优化
- 图表容器: 移动端布局优化

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:37:35 +08:00
35b481a1ca style: 睡眠/体重/阅读页面移动端适配
- 睡眠页面: 响应式布局、表格转卡片
- 体重页面: 统计卡片优化、图表适配
- 阅读页面: 书籍网格双列/单列切换
- 三页均添加底部 Tab 导航

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:37:35 +08:00
b547564bef style: 运动/饮食页面移动端适配
- 运动页面: 响应式网格、表格转卡片、FAB 位置调整
- 饮食页面: 日历紧凑布局、照片网格优化
- 两页均添加底部 Tab 导航

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:37:35 +08:00
18e70b5f03 config: 添加 MySQL Docker 配置 2026-01-23 18:37:35 +08:00
772f871fb6 feat: 添加 SQLite 到 MySQL 数据迁移脚本 2026-01-23 18:36:38 +08:00
a37cf93c67 style: 首页 Dashboard 移动端适配
- 添加响应式网格布局
- 卡片和图表移动端优化
- 添加底部 Tab 导航
- 管理入口根据用户权限显示

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:36:38 +08:00
fe99649f72 refactor: 移除 SQLite 特有代码,完成 MySQL 迁移 2026-01-23 18:36:38 +08:00
ef43b1bc57 refactor: 所有 SQL 查询改为 MySQL 语法 2026-01-23 18:36:38 +08:00
49abeaeff6 style: 登录/注册页面移动端适配
- 768px 断点响应式布局
- 输入框高度48px, font-size 16px 防止 iOS 缩放
- 按钮符合触摸标准
- 小屏幕进一步优化间距

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:36:38 +08:00
094aab5ba2 feat: 用户权限增强 - 非管理员仅能看到自己
- GET /api/users: 非管理员仅返回自己的用户信息
- GET /api/users/{id}: 非管理员只能查询自己,否则返回403
- 管理页面: 非管理员隐藏导航栏管理链接

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:36:38 +08:00
b8f55f97a6 refactor: init_db 改为 MySQL 建表语句 2026-01-23 18:36:38 +08:00
1664f88963 feat: 添加移动端 H5 基础样式和底部导航组件
- 添加 get_common_mobile_styles() 通用移动端 CSS
- 添加 get_mobile_nav_html() 底部 Tab 导航组件
- 支持触摸优化和安全区域适配
- 底部导航包含首页/运动/饮食/睡眠/更多菜单

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:36:38 +08:00
c44de8f52e refactor: database.py 添加 MySQL 连接池管理 2026-01-23 18:36:38 +08:00
185ac8e40f deps: 添加 mysql-connector-python 依赖 2026-01-23 18:36:38 +08:00
b8ff1f0ee9 docs: 添加详细实施计划
包含 4 个阶段 20+ 个任务:
- 阶段1: MySQL 数据库迁移 (7 tasks)
- 阶段2: 用户权限增强 (3 tasks)
- 阶段3: H5 移动端适配 (12 tasks)
- 阶段4: 测试验证 (2 tasks)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:36:38 +08:00
7713e7809f docs: 添加 H5/MySQL/权限增强设计方案
- H5 移动端适配:响应式 CSS + 底部 Tab 导航
- MySQL 迁移:mysql-connector-python 裸 SQL
- 用户权限:非管理员仅能看到自己

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:36:38 +08:00
lzh
b2a590cbdf feat: 管理员密码支持从环境变量同步
修改环境变量 ADMIN_PASSWORD 后重启容器即可生效,无需删除数据库

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 16:41:40 +08:00
lzh
93255e09a4 feat: evn.local提交 2026-01-22 16:18:59 +08:00
lzh
9f1feeb216 feat: 支持本地与生产环境分离配置
- 新增 .gitignore 忽略敏感配置文件
- 新增 .env.local 本地开发环境配置
- 新增 .env.production 生产环境配置
- 新增 docker-compose.prod.yml 生产环境覆盖配置
- 更新 docker-compose.yml 使用 env_file 方式读取配置

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 16:15:59 +08:00
5de6cfc9de feat: 设置页面添加管理后台入口
- 在账户区域添加"进入管理后台"按钮(仅管理员可见)
- 使用 localStorage 缓存用户信息确保显示正确

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 15:17:09 +08:00
9fa6616110 fix: 修复混合认证方案 - Cookie + Authorization Header
- 修改 login/register API 使用 JSONResponse 正确设置 Cookie
- 添加 path="/" 确保 Cookie 在所有路径可用
- 前端同时使用 localStorage token 进行 API 认证
- 修复登录后闪屏返回登录页的问题

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 15:03:01 +08:00
518e5c8284 feat: 优化登录功能 - 服务端认证 + Cookie + 新UI
主要改进:
1. 添加服务端认证中间件,未登录用户自动重定向到登录页
2. 使用 HTTPOnly Cookie 存储 token(比 localStorage 更安全)
3. 添加"记住我"功能(勾选:30天,不勾选:1天)
4. 添加登出 API (/api/auth/logout)
5. 登录/注册页面采用 Neumorphism 设计风格
   - 健康主题配色(青色 + 绿色)
   - Lora + Raleway 字体组合
   - 新拟态阴影效果
6. 支持登录后重定向到原页面

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 14:24:58 +08:00
90116d5615 fix: 添加 README.md 到 Docker 构建
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 14:06:20 +08:00
397dd22fb4 fix: 修复 Dockerfile 包名兼容性问题
- libgdk-pixbuf2.0-0 改为 libgdk-pixbuf-2.0-0 (Debian Trixie)
- 移除 docker-compose.yml 中过时的 version 属性

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 14:04:44 +08:00
f42a767236 chore: 修改服务端口为 8888
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 13:48:35 +08:00
Rocky
1d5936983a 第一版 2026-01-22 12:57:26 +08:00
Rocky
13f7c3d116 docs: 添加阅读模块设计文档 2026-01-20 17:55:43 +08:00
Rocky
3bfb059898 docs: 添加设置页面设计文档
包含用户管理和系统管理两个功能模块的完整设计:
- 用户档案切换(家庭多用户支持)
- 体重录入功能
- 数据清除功能(按时间/类型/全部)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 21:43:06 +08:00
Rocky
b5b2eba6f8 docs: 添加 Vitals 健康管理应用设计文档
- 综合健康管理:运动、饮食、睡眠、体重
- CLI + Web 仪表盘双交互模式
- 支持佳明/咕咚数据导入
- 智能卡路里计算,支持拍照识别食物
- 周报/月报多格式导出(HTML/PDF/PNG)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 22:11:13 +08:00