Commit Graph

45 Commits

Author SHA1 Message Date
e14c85436b feat(auth): 添加 Refresh Token 双 Token 机制
- 添加 /api/refresh-token 接口支持 Token 续期
- 登录接口返回 access_token 和 refresh_token
- 新增 refresh_tokens 表存储 refresh_token
- 部署脚本添加数据库备份和迁移功能
- deploy.sh 添加 4 项 API 测试
- 更新 AGENTS.md 文档
2026-04-19 16:01:41 +08:00
9d452c4e75 feat: 统一前后端日志和错误处理 2026-04-19 00:14:22 +08:00
fd21e641a2 fix: 将 get_weather_details 和 health_check 移出 JWT 保护作用域作为公开接口 2026-04-18 14:04:49 +08:00
61b1174b30 fix: 统一字段命名为 camelCase 并修复详情 API
- models.rs: 将 inspectiontype/assignmentnumber 的 serde rename 改为
  inspectionType/assignmentNumber,与前端 TypeScript 接口保持一致
- models.rs: 为 WeatherDataBrief 添加 isFavorite 字段支持
- models.rs: WeatherData.is_favorite 添加 skip_deserializing 避免 POST
  请求解析失败,同时使用 default 处理数据库 NULL 值
- handlers/weather.rs: get_weather_details 支持 string 和 number 类型的
  id 参数解析
- IMPROVEMENTS.md: 新增第十三章记录本次对话经验(serde 配置、config
  路径解析、TOML 结构等)
2026-04-17 20:47:00 +08:00
bdbba2cd60 feat: 添加收藏功能 API
- models.rs: 添加 is_favorite 字段到 WeatherData 和 WeatherDataBrief
- db.rs: 添加 get_favorites_list 和 set_weather_favorite 函数
- handlers/favorites.rs: 新建收藏 API 处理器
- handlers/mod.rs: 导出 favorites 模块
- main.rs: 注册收藏 API 路由
2026-04-17 17:40:58 +08:00
562528a1f0 feat: implement payment order system (create-order, mock-confirm, get-quota) 2026-04-17 12:45:53 +08:00
da4e6f557e feat: 实现后端多环境配置机制
- 使用 toml crate 替代 config crate 直接读取配置文件
- 创建 config/default.toml、config/development.toml、config/production.toml
- 重写 config.rs 支持多环境配置加载
- 增强 deploy.sh 支持 development/production 环境参数
- 更新 IMPROVEMENTS.md 标记环境区分完成
2026-04-17 11:11:13 +08:00
a819a0db91 fix: 调整路由顺序,修复静态文件被JWT拦截的问题
- 将 /static/{tail:.*} 路由移到受保护 scope 之前
- 确保静态文件无需认证即可访问
2026-04-15 11:51:59 +08:00
e8990f7771 fix: 隐藏内部错误信息,防止敏感数据泄露
- 移除 ErrorResponse.errmsg 中的 e.to_string() 调用
- 将详细的内部错误信息改为 None,用户看不到内部详情
- 错误详情仍然记录到 JSON 日志,供开发者排查
- 健康检查端点也使用友好的错误信息
- 更新 IMPROVEMENTS.md 标记 1.3 完成

影响范围:
- src/main.rs: login handler (2处)
- src/main.rs: health_check handler (1处)
2026-04-15 11:11:16 +08:00
6b871ca4d6 refactor: 整理路由配置,分离公开接口与受保护接口
- 登录和天气详情接口移至公开区域
- 其他接口统一在 web::scope("") 下受 JWT middleware 保护
- 静态文件和健康检查移至最后
- 为 actix-ratelimit 兼容性问题做准备(当前无法在 actix-web 4.x 使用)

注意:Rate Limiting 功能暂未实现(actix-ratelimit 与 actix-web 4.x 不兼容)
2026-04-15 11:05:21 +08:00
338871796a feat: 添加 /health 健康检查端点
- 新增 GET /health 端点,公开无需认证
- 检查 PostgreSQL 数据库连接状态
- 健康时返回: {"status": "healthy", "database": "connected"}
- 不健康时返回 HTTP 503 + {"status": "unhealthy", "database": "disconnected", "error": "..."}
- 失败时记录错误到 JSON 日志
- 用于负载均衡器、Kubernetes、1Panel 健康探针
- 更新 IMPROVEMENTS.md 标记 6.3 完成
2026-04-15 10:49:15 +08:00
741d6acff1 feat: 升级日志系统为 tracing 结构化日志
- 替换 env_logger 为 tracing + tracing-subscriber
- 统一使用 tracing::{debug, error, info, warn} 日志宏
- 消除所有 eprintln!/println 调用
- 添加 JSON 格式日志输出便于 ELK Stack 收集
- 添加文件日志轮转(每天一个新文件 ./logs/rust-backend-{date}.log)
- 日志等级过滤:rust_backend=info, actix_web=info, sqlx=warn
- 更新 IMPROVEMENTS.md 标记 6.1 日志系统两项完成
2026-04-15 10:39:30 +08:00
6d2824589c feat: 添加用户信息存储功能
- 添加 avatar_url 和 nickname 字段到 users 表
- 修改 get_user_by_id 查询包含新字段
- 添加 save_user_profile API
- 优化 deploy.sh 默认使用 release 模式
2026-03-26 14:28:46 +08:00
34f698ded2 feat: 添加获取当前用户信息 API
新增 GET /api/user/profile 接口
- 返回用户付费状态和管理员标识
- 计算付费是否有效(考虑过期时间)
2026-03-25 16:08:39 +08:00
fa34e6597f 添加管理员API端点
- .env 添加 FREE_USER_DATA_LIMIT 配置
- 新增 GET /api/admin/users/{id} 管理员获取用户信息
- 新增 PUT /api/admin/users/{id}/payment 更新用户付费状态
- post_weather_data 集成 JWT 认证,使用 claims.user_id
- 管理员接口通过数据库查询验证 is_admin
2026-03-25 13:17:53 +08:00
f7450bce7f 修改了服务只监听本地端口 2025-10-21 10:07:32 +08:00
9e76976a56 修改了端口 2025-10-21 09:28:42 +08:00
edf6200acd 修改了不规范的temp_token返回 2025-10-17 23:59:49 +08:00
9ff20c16c3 删除了多余的info 2025-10-17 22:51:49 +08:00
bd60a72e68 修改了convertedwindspeed为float 2025-10-17 19:39:12 +08:00
e294c00c0b 修改了部分代码位置 2025-10-17 16:30:24 +08:00
7d4f27feff 添加了正确的katex方法 2025-10-17 15:50:59 +08:00
e76c039432 添加了新的log提示 2025-10-17 15:29:10 +08:00
e19d6af2fa 将println都修改为了info,
eprintln修改为了error,
将部分debug信息输出修改为了debug
2025-10-17 12:11:07 +08:00
7143064a09 更新了https功能,将原有的服务从http迁移到了https中 2025-09-30 17:26:56 +08:00
7fa1ae6301 使用了logger来进行后端的消息记录 2025-09-30 15:59:15 +08:00
ea64c436b6 可以在使用temp_token的情况下使浏览器和微信小程序前端都能获取到正确的数据 2025-09-29 11:56:08 +08:00
56844a537f 可以正常使用get_weather_details获取前端指定的数据了 2025-09-29 11:20:21 +08:00
58a0b6858a 修改了错误的数据库方法 2025-09-28 14:28:16 +08:00
1ac9db3f84 移除了不需要的方法 2025-09-27 18:41:19 +08:00
02703de89c 修改了get_weather方法,现在可以实现前端的需求了 2025-09-27 17:29:46 +08:00
6d680260a2 添加了weatherlistresponse并进行了一些修改 2025-09-27 16:21:04 +08:00
1c2eb82248 使用了jwt作为身份验证和分发 2025-09-26 13:48:18 +08:00
a4f2f5bf6b 将struct从main移动到models 2025-09-25 15:10:03 +08:00
ef326d82ed 将insert_weather_data方法移到db.rs 2025-09-23 10:27:41 +08:00
bf6045ece2 将WeatherData移到models.rs中 2025-09-23 10:19:59 +08:00
6513ac793f 修改了数据库插入中的数据类型错误 2025-09-22 17:34:47 +08:00
b294b6cc90 修改了weather-test的位置,并尝试做插入数据库 2025-09-22 17:02:30 +08:00
40d4c9ad49 weather data upload test 2025-09-12 09:25:15 +08:00
7e569e59d6 更新了get_user_id和get_openid 2025-09-10 15:42:05 +08:00
b289e6414e change for server 2025-09-08 09:45:11 +08:00
f567e66485 访问users数据库 2025-09-05 15:10:30 +08:00
7570bfd50b port 80 2025-09-05 10:07:42 +08:00
b524d00f7e 0.0.0.0 2025-09-04 16:58:20 +08:00
e6f937fe44 initialize 2025-09-04 16:36:08 +08:00