39 lines
2.8 KiB
Plaintext
39 lines
2.8 KiB
Plaintext
---
|
||
description: 双后端同步:本仓库(Laravel)与 nl-admin-api-gf(GoFrame)互为镜像实现,改一端必须同步另一端
|
||
alwaysApply: true
|
||
---
|
||
# 双后端同步(Laravel ↔ GoFrame)
|
||
|
||
本仓库(Laravel 13 版 nl-admin-api)与工作区内 `d:\myCode\nl-admin\nl-admin-api-gf`(GoFrame v2 的 Go 版同功能实现)**互为镜像**:
|
||
接口路径、入参出参、业务规则、响应结构、数据表结构必须保持一致,两端 JWT/密码/加密互通(同库同 Redis 可互认)。
|
||
|
||
## 强制要求
|
||
|
||
- 本仓库任何**接口、业务逻辑、表结构、配置键**的改动,必须同步修改 `nl-admin-api-gf` 对应实现
|
||
- 若本次会话无法当场同步(如用户明确说只改一端),必须在回复末尾列出「gf 侧待同步清单」(文件级 + 行为级)
|
||
- 新增接口两端都实现完才算完成;禁止只改一端悄悄收尾
|
||
- 改动 `config/nl.php` 的键值(如 log.no_insert、redis 前缀、jwt)时,同步改 gf 的 `manifest/config/config.yaml` 的 `nl` 段
|
||
|
||
## 层级对应关系(本仓库 → nl-admin-api-gf)
|
||
|
||
| Laravel(本仓库) | GoFrame(nl-admin-api-gf) |
|
||
|---|---|
|
||
| routes/api.php autoRouteRegister | internal/cmd/cmd.go 手写注册 + internal/router/genroutes |
|
||
| app/Http/Controllers/Api(及 core)/*Controller | internal/controller/<模块>/ |
|
||
| app/Service/*Service | internal/logic/<模块>/ |
|
||
| app/Service/common/(JWT/Utils/加密/OSS/AI/CURD 基类) | internal/library/(auth/utils/crypto/oss/ai/curd/response/xerr) |
|
||
| app/Models/*Model | internal/model/entity + internal/dao |
|
||
| app/Enum/ | internal/consts/consts.go |
|
||
| app/Http/Middleware/ApiOpLogMiddleware | internal/middleware/oplog.go |
|
||
| config/nl.php | manifest/config/config.yaml 的 nl 段 |
|
||
| app/template/(api/view/uniapp 代码生成模板) | resource/template/(api 模板为 Go 版,view/uniapp 语义一致) |
|
||
|
||
## 必须对齐的行为基线(两端一致,改动需双端验证)
|
||
|
||
- 鉴权:`Authorization: Bearer <JWT>`(HS256,同 secret 可互认)+ Redis `nl_login_{id}`(不设 TTL);无独立鉴权中间件差异不影响行为口径
|
||
- 响应:`{code, message, result, type}`,成功 code=0,失败默认 500,HTTP 恒 200(sql 安装向导 `{success,...}` 除外)
|
||
- 密码 bcrypt(PHP password_hash ↔ Go bcrypt cost12 互通);库内敏感字段 AES-256-CBC,密文前缀 `nl_ase_256_`
|
||
- 分页 `page`/`pageSize` 默认 1/20(个人 login-log/op-log 默认 10 上限 100,兼容 `size`);软删 `deleted_at`;批量删除入参 `ids`
|
||
- 操作日志按 `nl_api_endpoint` 的 `is_log`/`status` 落 `nl_api_op_log`,脱敏键与跳过白名单两端同步
|
||
- 代码生成产物:后端代码 + 建表 + 路由挂载 + `nl_menu` 菜单 + zip(view/ 与 uniapp/ 双前端),两端能力必须同口径
|