|
|
2ce97243ab
|
fix: 全量代码审计修复 — 30项
Deploy Backend / deploy (push) Has been cancelled
P0 - Panic 风险修复:
- payment.rs: unwrap() → let-else safe handling
- payment.rs: get_jwt_secret() expect → Result/AppError
- auth.rs: openid 切片添加 len >= 8 守卫
- main.rs: 启动时 expect → unwrap_or_else 描述性 panic
- main.rs: Directive::from_str 添加 fallback
P1 - 逻辑/安全修复:
- payment.rs: urlencoding() + 解码 bug 修复 (移除 had_escape)
- payment.rs: Mock 支付添加 check_mock_payment_allowed 检查
- db.rs: 永久会员 NULL → 2099-12-31 一致化
- user.rs: 维护模式添加安全说明注释
- 自动清理 unused_variables 警告 (_is_mobile)
P2 - 错误吞没修复:
- main.rs: 3 处定时任务 let _ = → if let Err = tracing::error!
- db.rs + admin.rs: 7 处通知/审计日志 let _ = → tracing::warn!
- auth.rs: refresh token 保存 add warn 日志
P3 - 死代码清理:
- models.rs: 移除 TokenResponse (dead)
- models.rs: 移除 AppState 中 5 个未使用字段 (env var 直接读取)
- error.rs: 移除 3 个 dead ErrorResponse 方法
- rate_limiter.rs: extract_client_ip_from_header → #[cfg(test)]
- models.rs: 注释 typo fix (user_ytpe → user_type)
- db.rs: RefreshToken 添加 deserialization 注释
Shell 脚本修复:
- deploy.sh: run_migrations 移到 restart_service 之前
- test.sh: 移除 EXIT trap 覆盖; heredoc 引号修复; 维护模式添加 restart
- common.sh: mock_key 添加 sed 转义 (防 / & 注入)
验证: cargo check 0 warnings, 8 tests passed
|
2026-07-23 12:40:47 +08:00 |
|
|
|
217e7f8a55
|
fix: deploy.sh/test.sh 审计修复
Deploy Backend / deploy (push) Has been cancelled
deploy.sh:
- 修复重复的 header 注释行
lib/common.sh:
- view_logs/tail_logs/status: 从日志文件切换为 journalctl(上次改
日志输出到 stdout 后,日志文件已不存在)
- init_env 模板: User=root → User=rust-backend(匹配最小权限原则)
lib/test.sh:
- test_notify_url_domain: 添加自定义 Host 头(TEST_DOMAIN),模拟
真实外部请求场景。之前测试走 127.0.0.1 直连,Host 头为 localhost
导致 notify_url 校验永远通过但实际配置可能是错误的
|
2026-07-23 12:25:55 +08:00 |
|
|
|
ba00fcb1c6
|
fix: 适配新服务器蓝绿部署 — nginx 原生/PostgreSQL Docker 容器名/部署脚本
Deploy Backend / deploy (push) Has been cancelled
|
2026-07-13 18:30:38 +08:00 |
|
|
|
38ee5ccbc6
|
feat: 所有页面添加ICP备案号 浙ICP备2026052792号
Deploy Backend / deploy (push) Has been cancelled
|
2026-07-13 17:30:06 +08:00 |
|
|
|
178008496e
|
优化: Keep-Alive/rate-limiter/dead-code清理 + deploy.sh蓝绿自动检测 + 压测文档
|
2026-07-03 19:45:57 +08:00 |
|
|
|
452728be32
|
feat: deploy.sh增加活动环境检测-禁止直接部署到当前活动端口
|
2026-06-15 11:19:26 +08:00 |
|
|
|
00df4135c7
|
feat: deploy.sh部署后自动调用switch-env.sh切换代理
|
2026-06-07 16:37:29 +08:00 |
|
|
|
10576cda1e
|
feat: deploy.sh支持--target blue|green蓝绿部署+分目录隔离
|
2026-06-02 12:54:50 +08:00 |
|
|
|
a4a455381c
|
docs: 更新文档和deploy.sh-生产库改为milkydata_dev
|
2026-05-31 23:05:09 +08:00 |
|
|
|
4240bb6970
|
refactor: deploy工具适配systemd service模式-移除.env依赖
|
2026-05-25 14:46:07 +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 |
|
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 |
|
|
|
0c7d44d795
|
fix(deploy): 改进备份命名和清理逻辑,防止版本重复
问题:同一版本多次备份时,备份文件仅时间戳不同,内容完全相同,
导致清理后仍保留多个相同版本的备份,失去回滚多样性。
解决方案:
1. 备份文件名加入 Git hash + MD5:{timestamp}.{gitHash}.{md5}
2. 清理逻辑按 MD5 去重:相同版本的多个备份只保留最早一个
3. 手动回滚支持选择特定版本
影响:
- 回滚时可明确知道恢复到哪个版本(Git hash + MD5 可验证)
- 清理不再基于简单时间戳,而是基于版本内容
- 保留了真正的版本多样性
|
2026-04-19 20:55:47 +08:00 |
|
|
|
778bf0e9e7
|
fix(deploy): 修复迁移执行和数据库测试问题
1. 迁移执行:使用 cat + pipe 替代 stdin 重定向,解决远程文件读取问题
2. 数据库表检测:修复 SQL 引号嵌套问题,使用正确的 psql 语法
|
2026-04-19 17:53:29 +08:00 |
|
|
|
58e52ce1c1
|
feat(deploy): 增强部署测试套件
新增 6 大测试模块:
1. test_basic_connectivity - 基础连通性 (health, login, refresh-token, /)
2. test_database_connection - Docker PostgreSQL 连接和查询测试
3. test_token_flow - 完整 Token 流程 (登录 → JWT → 受保护接口)
4. test_weather_details_jwt - weather/details 端点 JWT 验证测试
5. test_invalid_token_401 - 无效 Token 返回 401 测试
6. test_response_content - JSON 响应内容结构验证
测试覆盖:
- 本地端口和 HTTPS 域名双重验证
- 数据库表存在性和查询测试
- JWT 生成、验证、受保护接口访问
- 响应格式完整性验证
|
2026-04-19 17:45:48 +08:00 |
|
|
|
45ed78a883
|
feat(deploy): 增强 deploy.sh 日志和服务管理功能
新增选项:
- --logs [N] 查看后端日志(默认50行)
- --tail [N] 实时跟踪后端日志(Ctrl+C 退出)
- --status 查看服务状态
- --post-logs 部署后自动显示日志
改进:
- 修复 --help 选项无法正确处理的 bug
- 优化参数解析逻辑(先选项后位置参数)
|
2026-04-19 17:40:23 +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 |
|
|
|
988828b984
|
feat(deploy): 添加开发环境 systemd 服务,改进部署文档
|
2026-04-19 00:31:26 +08:00 |
|
|
|
44aa62da49
|
feat(deploy): 优化部署脚本,添加 dry-run、备份、SSH 复用
|
2026-04-19 00:20:06 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
ef8fac7ec2
|
添加systemd service文件,更新部署脚本格式
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-03-25 17:26:44 +08:00 |
|
|
|
7d7c0b251f
|
更新了deploy的方法
|
2025-10-21 10:07:46 +08:00 |
|
|
|
9e76976a56
|
修改了端口
|
2025-10-21 09:28:42 +08:00 |
|
|
|
03bbd845c7
|
for deploy
|
2025-09-26 15:55:05 +08:00 |
|