Files
nl-admin-api/.cursor/rules/Dual-Backend-Sync.mdc
李琦 6e2769c528
Some checks failed
Tests / PHP 8.2 (push) Has been cancelled
Tests / PHP 8.3 (push) Has been cancelled
Tests / PHP 8.4 (push) Has been cancelled
优化部分代码,增加微信公众号模板
2026-08-13 19:02:05 +08:00

39 lines
2.8 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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/ 双前端),两端能力必须同口径