Commit Graph

36 Commits

Author SHA1 Message Date
e672f00b66 fix: 支付确认TOCTOU竞态(AND status=pending)+定时器补充过期订单清理 2026-06-10 14:11:47 +08:00
caf3c7cc61 fix: 支付后增加会员时长验证(verify_membership_after_payment)防止ELSE静默错误 2026-06-07 16:34:30 +08:00
955e8d9501 chore: 受影响的3位测试用户补偿91天会员+发送感谢通知 2026-06-05 22:25:37 +08:00
55259a96a6 fix: 套餐定价更新+新增季卡/半年卡+SQL interval适配 2026-05-27 09:18:20 +08:00
d20c785d38 refactor: 移除会员过期通知(check_member_expired) 2026-05-26 15:29:52 +08:00
667231520d feat: 自动通知-支付成功+到期前7天提醒+已过期通知 2026-05-26 15:28:11 +08:00
722ab837d0 refactor: is_paid→is_member, paid_expires_at→membership_expires_at 全局重命名 2026-05-25 15:33:31 +08:00
e6e04979dc fix: get_user_quota 返回 was_paid 字段 2026-05-25 13:45:55 +08:00
fed95531fe fix: 维护模式使用500条临时限额而非完全跳过(防滥用) 2026-05-25 13:34:40 +08:00
f82dd8d5de feat: 添加PAYMENT_MAINTENANCE_MODE维护模式 + ServiceUnavailable错误 2026-05-25 13:32:16 +08:00
72cbb8ff28 fix: 添加用户取消订单 + 管理员手动退款端点 2026-05-25 13:09:54 +08:00
5f3b919e92 fix: 添加后台定时重试 + 管理员强制确认 + 审计日志 + mock守卫 2026-05-25 13:04:19 +08:00
af2837e15e fix: 修复付费机制失效处理的5个后端缺口
- 新增POST /payment/refund-notify支付宝退款Webhook
- 新增待支付订单自动清理(超过24h→cancelled, 含启动清理)
- 新增web登录码过期启动清理
- 永久会员用NULL替代硬编码2099-12-31
- 修复缺失的is_paid_active数据库函数(改用内联SQL)
2026-05-25 12:07:15 +08:00
54484482c3 feat: 抽测风速改为用户可自定义次数(增删按钮)
- models.rs:新增 spot_check_count 字段(默认 5)
- db.rs:INSERT/SELECT 添加 spotcheckcount 列
- migrations/007:ALTER TABLE weather_data ADD spotcheckcount
- afterbody.js:使用 data.spotCheckCount 动态渲染抽测数据
2026-05-18 09:51:43 +08:00
061c2bbb5a fix: 修复多处代码质量问题-移除unwrap/println/dead-code/重复代码/错误吞咽 2026-05-11 13:38:41 +08:00
228a9f3b3b feat: 添加 GET /api/payment/orders 接口,返回用户订单记录 2026-05-07 17:12:31 +08:00
a588478ab0 fix: 修复付费会员累加逻辑和迁移误判问题
- 修复 confirm_payment_order 累加逻辑:GREATEST(COALESCE(paid_expires_at, NOW()), NOW()) + days
- 永久会员改为 2099-12-31 而非 NULL,避免与未付费用户的 NULL 混淆
- 禁用 003_set_all_users_paid.sql 迁移(将所有已有用户设为永久付费)
- 后端部署后已回滚 Dev 数据库中 73 个被误设为付费的用户
2026-05-07 15:55:37 +08:00
e8286310ea feat(payment): 接入支付宝沙箱环境 (alipay.trade.page.pay) 2026-04-23 12:23:53 +08:00
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
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
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
fe514ebfc4 fix: 修复 desc 保留关键字导致的 SQL 语法错误
desc 是 PostgreSQL 保留关键字,需要加双引号转义
2026-03-25 17:15:17 +08:00
484146aba9 支付系统核心:配额限制与用户付费状态管理
- 添加 tokio 依赖用于异步测试
- 启用 User 结构体,添加 is_paid/is_admin/paid_expires_at 字段
- 添加 UpdatePaymentRequest 请求体
- insert_weather_data 集成配额检查逻辑
- 新增 get_user_by_id、count_user_weather_data、update_user_payment_status
- 添加 payment_fields 数据库迁移脚本
2026-03-25 13:17:36 +08:00
67c3be3c9e 在数据库中添加了Version字段,并修改前端,不再使用指定的Version 2026-01-08 14:12:34 +08:00
a99fb905ec 修改了point_height以支持可选值 2025-10-18 10:21:59 +08:00
ebe4e69222 根据前端上传数据的修改,修正了相关代码 2025-10-17 12:07:52 +08:00
9880124c87 在weather_data表中添加了一个字段 2025-09-29 16:02:50 +08:00
58a0b6858a 修改了错误的数据库方法 2025-09-28 14:28:16 +08:00
02703de89c 修改了get_weather方法,现在可以实现前端的需求了 2025-09-27 17:29:46 +08:00
6d680260a2 添加了weatherlistresponse并进行了一些修改 2025-09-27 16:21:04 +08:00
5c269328ee 修改了db.rs中的create_pool()方法 2025-09-24 14:07:31 +08:00
ef326d82ed 将insert_weather_data方法移到db.rs 2025-09-23 10:27:41 +08:00
f567e66485 访问users数据库 2025-09-05 15:10:30 +08:00