## TODO 后端默认用户名不能是完整手机号 前端需要 token 化改造,以避免每次 basic 认证流程中 bcrypt 对比导致的性能对比 优化中间件,配置通用限速 observe 部署,蓝狐部署 --- 用反射实现环境变量解析,以简化函数签名 分离 task 的客户端,支持多进程(prefork 必要!) 调整目录结构: ``` - /util 工具函数 - /models 模型 - /queries 数据库层 - /clients 三方依赖的客户端实例 - /services 服务层 - /auth 认证相关,特化服务 - /app 应用相关,初始化日志,环境变量,错误类型等 - /http 协议层,http 服务 - /cmd 主函数 逐层向上依赖 cmd 调用 app, http 的初始化函数 http 调用 clients 的初始化函数 ``` --- 数据库转模型文件 jsonb 类型转换问题,考虑一个高效的 any 到 struct 转换工具 慢速请求底层调用埋点监控 - redis - gorm - 三方接口 冷数据迁移方案 ## 开发环境 ### 更新表结构的流程 1. 编辑 `scripts/sql/init.sql` 文件,参照原有格式,需要注意: - 先写 drop table if exists 语句,确保脚本可以幂等执行 - 编写 create table 语句,按需添加审计字段和软删除字段 (created_at, updated_at, deleted_at) - 为有必要的字段添加索引 - 为数据表及其字段添加注释 - 在文件末尾创建数据表流程全部结束后,为字段添加外键 2. 建议用数据库工具检查差异并增量更新,或者手动增量更新 3. 创建 model 文件,并将其添加到 gen 代码中 4. 生成查询文件 ## 业务逻辑 ### 订单关闭的几种方式 1. 创建订单后推送异步任务,到时间后尝试完成订单或关闭订单 2. sse 接口推送订单状态,轮询尝试完成订单 3. 异步回调事件,收到支付成功事件后自动完成订单 4. 用户退出支付界面,客户端主动发起关闭订单 ### 产品字典表 | 代码 | 产品 | | ----- | ------------ | | short | 短效动态代理 | | long | 长效动态代理 | ### 节点分配与存储逻辑 提取: - 检查用户套餐与白名单 - 选中代理 - 找到当前可用端口最多的代理 - 不考虑分割端口,不够加机器 - 获取可用端口 - 获取可用节点 - 生成批次号,提交到期释放任务 - 绑定节点与端口,保存到数据库 - 分别提交连接与配置请求 释放: - 根据批次查出所有端口与相关节点 - 分别提交断开与关闭请求 - 释放端口