|
|
d03acf0add
|
temp
|
2026-05-26 15:20:50 +08:00 |
|
|
|
8d77a240da
|
feat: 添加send-notification.sh管理员通知发送脚本+文档
|
2026-05-26 15:19:10 +08:00 |
|
|
|
8d7e9d8ca1
|
fix: notifications查询type列别名与sqlx rename冲突导致500
|
2026-05-26 15:08:57 +08:00 |
|
|
|
640f57b6da
|
feat: 通知系统(notifications表+CRUD接口+管理员接口)
|
2026-05-26 15:02:49 +08:00 |
|
|
|
80434047df
|
fix: 支付页面文案-检测额度→存储空间,无限次→无限制
|
2026-05-26 10:35:54 +08:00 |
|
|
|
541ea7245b
|
refactor: scripts确认信息优化-显示当前状态+目标数据库
|
2026-05-26 10:24:20 +08:00 |
|
|
|
2d8ea052f7
|
feat: scripts/set-paid-user.sh 添加--monthly选项(30天会员)
|
2026-05-26 10:21:04 +08:00 |
|
|
|
daba6d6878
|
fix: scripts中DB_NAME初始化在while之后导致--dev被覆盖
|
2026-05-26 10:10:28 +08:00 |
|
|
|
920c774f0e
|
fix: scripts中--dev缺少shift导致死循环
|
2026-05-26 10:07:18 +08:00 |
|
|
|
9b54a71994
|
fix: scripts支持--dev参数切换milkydata_dev数据库
|
2026-05-26 10:05:19 +08:00 |
|
|
|
28033bc432
|
refactor: 清理is_paid/paid_expires_at旧字段引用(scripts+service文件)
|
2026-05-26 10:02:10 +08:00 |
|
|
|
c9c9cc04de
|
refactor: config.rs去掉TOML文件加载,统一走systemd Environment
|
2026-05-25 16:39:46 +08:00 |
|
|
|
83f51d349c
|
fix: dev服务切换到milkydata_dev数据库(隔离生产)
|
2026-05-25 16:35:03 +08:00 |
|
|
|
da4af50b45
|
fix: mock_login支持X-Mock-Key请求头鉴权 + deploy自动配置随机密钥
|
2026-05-25 16:27:01 +08:00 |
|
|
|
a9be70aabc
|
fix: deploy工具service文件命名对齐 + 重命名dev服务文件
|
2026-05-25 15:37:53 +08:00 |
|
|
|
722ab837d0
|
refactor: is_paid→is_member, paid_expires_at→membership_expires_at 全局重命名
|
2026-05-25 15:33:31 +08:00 |
|
|
|
94ad9ba190
|
fix: payment_page支持resume参数复用已有待支付订单
|
2026-05-25 14:59:33 +08:00 |
|
|
|
ae46e0b0fc
|
fix: sync-order仅查询状态不确认订单(防止误激活)
|
2026-05-25 14:50:43 +08:00 |
|
|
|
4240bb6970
|
refactor: deploy工具适配systemd service模式-移除.env依赖
|
2026-05-25 14:46:07 +08:00 |
|
|
|
216dd365f6
|
fix: dev数据库连接改用内网127.0.0.1
|
2026-05-25 14:31:34 +08:00 |
|
|
|
61e8b5aab7
|
docs: 添加systemd service文件备份(deploy/)
|
2026-05-25 14:19:06 +08:00 |
|
|
|
d5f87d3d85
|
fix: rsa2_sign后备逻辑改为from_pkcs8_der(支持裸Base64私钥)
|
2026-05-25 14:13:32 +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 |
|
|
|
f9f1ffeff6
|
refactor: deploy.sh 拆分为模块化结构
- deploy.sh: 从 1574 行精简至 141 行,仅保留主流程编排
- lib/common.sh: 基础设施(日志/SSH复用/备份/上传/迁移/服务管理)
- lib/test.sh: 6 项部署后测试函数
- 迁移系统改用 _migrations 追踪表替代文件名模式匹配
- 所有 SSH 操作复用 ControlMaster socket
|
2026-05-18 10:09:40 +08:00 |
|
|
|
2616bcc69e
|
ci: 添加 Gitea Actions workflow(推送自动构建/部署)
- .gitea/workflows/deploy.yaml
- 支持 master/production 和 beta/development 分支
- 自动构建→测试→备份→部署→迁移→重启→健康检查
|
2026-05-18 10:02:11 +08:00 |
|
|
|
41b3aa6177
|
docs: 更新 weather_data 表文档(spotcheckcount 字段)
|
2026-05-18 09:53:08 +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 |
|
|
|
5dce0e3332
|
fix: sentry init 日志从 info! 改为 eprintln!(tracing 初始化前不输出)
|
2026-05-14 10:59:48 +08:00 |
|
moira
|
f8a95c7417
|
feat: 集成 Sentry 错误监控 + 前端错误上报中继
后端:
- Cargo.toml 添加 sentry/sentry-actix/sentry-tracing (v0.48)
- main.rs 条件初始化 Sentry(SENTRY_DSN 环境变量控制)
- 新增 handlers/sentry.rs — POST /api/sentry/events 前端中继端点
- sentry-actix 全局中间件 + sentry-tracing 自动捕获 tracing::error!
- .env.example 添加 SENTRY_DSN / SENTRY_TRACES_SAMPLE_RATE 配置
前端:
- 新增 utils/sentryReporter.ts (批量上报/防抖/开发环境跳过)
- app.ts 全局错误处理接入 Sentry (wx.onError/onUnhandledRejection/onPageNotFound)
Sentry 未配置 DSN 时完全无操作,无性能开销
|
2026-05-14 10:12:09 +08:00 |
|
moira
|
27c8979690
|
fix: 全量代码审计修复—安全/死代码/错误处理/配置净化
P0 安全修复:
- 支付宝回调验签 (alipay_notify BTreeMap + rsa2_verify)
- JWT fallback 'default_secret' 改为 .expect() (panic保底)
- 安全响应头中间件 (CSP/X-Frame-Options/HSTS)
P1 死代码清理:
- 移除孤儿文件 src/alipay.rs (284行, 无mod注册)
- 移除Cargo未使用依赖 (actix-files/error/log/hex/digest)
- log::info! → tracing::info! (auth.rs)
- 移除 config.rs server_host + 3个TOML定义
P1 质量修复:
- 修复 weather.rs unwrap() → unwrap_or
- 修复 auth.rs+payment.rs 错误吞咽 (add tracing::warn)
- 修复 main.rs 3x parse().unwrap → unwrap_or
P3 运维:
- 新增 scripts/backup-db.sh (定时备份用)
- 新增 README.md (快速入门文档)
- deploy.sh 集成 backup-db.sh 上传
|
2026-05-13 17:20:31 +08:00 |
|
moira
|
cb483298d5
|
feat: 新增deploy.sh --init-env一键初始化.env+完善JWT_SECRET管理文档
新增 --init-env 功能:
- 自动生成 256 位随机 JWT_SECRET (openssl rand -base64 32)
- 推送完整.env模板到服务器,设置权限600
- 文件已存在时先备份再覆盖,有确认提示
- dry-run 模式下安全预览
JWT_SECRET 管理方案:
- dev/prod 使用不同密钥
- 仅在服务器.env中存储(不进入Git/TOML)
- deploy.sh check_env_file() 部署前自动验证
- AGENTS.md 新增完整管理文档(生成/存储/验证/轮换)
deploy.sh 帮助文档同步更新 --init-env 说明
|
2026-05-13 15:31:23 +08:00 |
|
moira
|
0ffe2065e1
|
feat: 部署脚本添加.env文件健康检查
新增 check_env_file() 函数,在编译前自动检查:
1. .env 文件是否存在
2. 必需变量是否定义(生产环境额外要求SSL_KEY_PATH/SSL_CERT_PATH)
3. 变量值是否为占位符(your_/placeholder/xxx等)
4. 变量行是否被注释(# VAR=)
检查失败时终止部署,防止因缺少密钥导致服务无法启动
|
2026-05-13 15:21:22 +08:00 |
|
moira
|
bded0113ee
|
refactor: 配置安全加固-从TOML移除密钥+去除死代码+统一端口
P0: 从config/production.toml和config/development.toml移除wechat_secret/jwt_secret
这些密钥现在仅通过.env(EnvironmentFile)加载,不再进入Git历史
config.rs: 新增直接环境变量名回退(JWT_SECRET而非仅APP_JWT_SECRET)
P1: - 移除config.rs中的server_ports字段(死代码,未被任何代码使用)
- 简化main.rs端口fallback: 生产环境仅4433,开发环境仅8080/3000
- .env.example版本号0.2.3→0.3.0
Docs: - AGENTS.md测试域名xmclassmate.top/dev→dev.xmclassmate.top
|
2026-05-13 15:17:45 +08:00 |
|
moira
|
d879b65662
|
docs: 添加版本控制约束-使用jj提交变更
|
2026-05-13 14:52:08 +08:00 |
|
|
|
061c2bbb5a
|
fix: 修复多处代码质量问题-移除unwrap/println/dead-code/重复代码/错误吞咽
|
2026-05-11 13:38:41 +08:00 |
|
|
|
0cba52f545
|
docs: 更新后端AGENTS.md-补齐auto-confirm/sync-order/orders API/修复支付流程和部署表
|
2026-05-11 09:40:39 +08:00 |
|
|
|
2c66528205
|
fix: goPay 加载状态、轮询 5min 超时;成功页已有小程序引导
|
2026-05-07 17:33:30 +08:00 |
|
|
|
df64877a5d
|
fix: 推荐标签移到包年;清理永久套餐的残留 CSS
|
2026-05-07 17:30:11 +08:00 |
|
|
|
e074171d44
|
fix: 网页端套餐只保留包月和包年,移除永久
|
2026-05-07 17:26:16 +08:00 |
|
|
|
28dc46ad95
|
feat: 添加 expire-paid-user.sh 脚本,使用户付费时间过期
|
2026-05-07 17:20:43 +08:00 |
|
|
|
228a9f3b3b
|
feat: 添加 GET /api/payment/orders 接口,返回用户订单记录
|
2026-05-07 17:12:31 +08:00 |
|
|
|
a05b46dfe2
|
feat: 添加 POST /api/payment/sync-order 接口,用于强制同步订单会员状态
|
2026-05-07 16:58:55 +08:00 |
|
|
|
c82bb303f7
|
fix: payment/success 同步确认订单(防止异步回调未到)
|
2026-05-07 16:52:41 +08:00 |
|
|
|
aab0377b3a
|
fix: 支付宝表单 method 改为 GET(沙箱 page.pay 不支持 POST)
|
2026-05-07 16:39:31 +08:00 |
|
|
|
05b6520140
|
fix: 支付宝表单添加 HTML 转义,防止 JSON 双引号破坏属性
|
2026-05-07 16:27:27 +08:00 |
|