4.1 KiB
4.1 KiB
AGENTS.md — opsx-licence 开发约定
本文件供 AI 协作助手(Claude / ZCode 等)参考,确保产出代码与项目既有风格一致。
语言与签名
- 所有交互、注释、文档一律使用中文。
- 每次新增或修改代码注释时,在注释末尾追加
// Logan.Li签名。 - 函数必须有文档注释(以函数名开头)。
后端约定
分层架构(4 层)
internal/controller/<domain>/ HTTP 处理层(gin.Context)
↓
internal/service/<domain>/ 业务逻辑层(持有 *gorm.DB + *config.Config)
↓
internal/dto/ 请求/响应结构体(扁平包,按域分文件)
internal/model/ GORM 模型(扁平包,按域分文件)
↓
GORM
硬性约束
- Controller 方法 ≤ 80 行:只做参数校验 + 响应格式化;复杂逻辑下沉到 Service。
- Service 承载所有业务逻辑:DB 操作、业务规则、跨表事务。
- 单文件 ≤ 300 行:超出则按子域拆分。
- 标准 CRUD 方法名:
List / Get / Create / Update / Delete。 - Controller 持有
service与db;Service 持有db与cfg。
响应格式
统一使用 dto.Response{Code, Message, Data},code:0 表示成功。
分页响应结构:
{
"code": 0,
"data": {
"count": 100,
"total_pages": 10,
"current_page": 1,
"page_size": 10,
"next": "...",
"previous": "...",
"results": []
}
}
新增业务域步骤(示例:product)
internal/model/product.go—— GORM 模型internal/dto/product.go—— 请求/响应 DTOinternal/service/product/product_service.go—— 业务逻辑internal/controller/product/product_controller.go—— HTTP handler- 在
router/router.go的 protected 组注册路由
路由规范
- 统一
/api前缀,集中注册于router/router.go。 - 公开接口(登录、客户端验证等)放公开组;管理接口放 JWT 保护组。
前端约定
- Vue 3 Composition API +
<script setup>。 - Element Plus:
el-checkbox/el-radio的选项用value而非label。 - 减少打扰:常规操作不发成功 toast;仅错误用
ElMessage.error;危险操作用确认弹窗。 - 命名:组件 PascalCase(
UserList.vue),工具 camelCase(request.js),目录 kebab-case。 - 接口封装在
src/api/,每个业务域一个文件,统一基于@/utils/request或@/api/request的 axios 实例。
认证体系
- 单 Admin 表(无 RBAC 多角色)。
- JWT 单 token,HS256,24h 过期。
- 中间件
AuthMiddleware校验Authorization: Bearer <token>,写入user_id到上下文。
安全
- 生产环境(
release模式)必须设置JWT_SECRET,否则启动失败。 - CORS 使用显式白名单,禁止
*。 - 默认账号
admin/admin必须在部署后修改。
服务器环境(已验证可连)
三台机器均可用本机 SSH 密钥登录,部署路径统一为 /srv/opsx-licence(容器 9001 端口,GIN_MODE=release)。
| 机器 | SSH | 角色 |
|---|---|---|
| 42.193.242.65(opsx-core) | ssh root@42.193.242.65(22 端口) |
应用服务器,域名 https://licence.rlwj.cn,容器绑 127.0.0.1:9001 |
| 47.243.95.12(pub-monitor) | ssh root@47.243.95.12 -p 1022(注意非标端口) |
应用服务器,内网 IP 192.168.14.7,容器绑 0.0.0.0:9001 |
| 47.243.187.100(test-hk-web,香港) | ssh root@47.243.187.100(22 端口) |
nginx 反代,l123.91ai.io → proxy_pass http://192.168.14.7:9001 |
- 两个管理后台地址:
https://licence.rlwj.cn与https://l123.91ai.io,登录账号 admin(密码不写入仓库,向 Logan 索取或查密码管理器;泄露或遗忘时可在服务器容器内重置)。 - 管理后台登录接口:
POST /api/auth/login(IP 限流 + 账号级锁定,勿频繁请求)。 - 两套环境
JWT_SECRET各自独立,互不通用。 - 47.243.95.12 的 SSH 端口 22 不通,只有 1022;外网仅开放必要端口,由云安全组控制。