Files
huangjingfen/docs/license-replacement-test-record.md
2026-04-30 17:57:03 +08:00

351 lines
25 KiB
Markdown
Raw 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.
# CRMEB 基础依赖合规替换测试记录
## 阶段 0基线
### 目标
固定合规替换前的依赖边界、测试能力和接口回归记录格式,避免后续阶段把既有授权或环境问题误判为新回归。
### 依赖清单
#### `crmeb\basic\BaseAuth`
- `pro_v3.5.1/config/app.php`:读取 `BaseAuth::AUTH_CRMEB` 作为 `auth_crmeb` 配置。
- `pro_v3.5.1/app/services/out/OutAccountServices.php`:外部账号 token 解析。
- `pro_v3.5.1/app/services/kefu/LoginServices.php`:客服 token 解析,当前项目暂不使用,最后阶段处理。
- `pro_v3.5.1/crmeb/traits/SearchDaoTrait.php`:通用 DAO 搜索条件构建。
- `pro_v3.5.1/app/dao/work/*Dao.php`:企业微信相关 DAO 搜索,当前项目暂不使用,最后阶段处理。
- `pro_v3.5.1/app/dao/BaseDao.php`:库存扣减和回滚,当前项目暂不使用相关链路,最后阶段处理。
#### `crmeb\basic\BaseController`
- `pro_v3.5.1/app/controller/out/OutAccount.php`
- `pro_v3.5.1/app/controller/supplier/AuthController.php`
- `pro_v3.5.1/app/controller/admin/AuthController.php`
- `pro_v3.5.1/app/controller/api/v1/Common.php`
- `pro_v3.5.1/app/controller/kefu/AuthController.php`,当前项目暂不使用,最后阶段处理。
- `pro_v3.5.1/app/controller/kefu/Login.php`,当前项目暂不使用,最后阶段处理。
- `pro_v3.5.1/app/controller/kefu/Common.php`,当前项目暂不使用,最后阶段处理。
#### 授权/版权接口
- `pro_v3.5.1/route/admin.php``check_auth``auth_apply``auth``crmeb_*``copyright`
- `pro_v3.5.1/route/api.php``get_copyright`
- `pro_v3.5.1/route/supplier.php``copyright`
- `pro_v3.5.1/app/controller/admin/Common.php`:版权保存、版权读取、授权相关接口。
- `pro_v3.5.1/app/controller/api/v1/Common.php`:版权读取。
- `pro_v3.5.1/app/controller/supplier/Common.php`:版权读取。
- `pro_v3.5.1/app/controller/kefu/Common.php`:版权读取,当前项目暂不使用,最后阶段处理。
### 当前测试能力
- `pro_v3.5.1/composer.json` 没有 `test``lint` 或静态分析脚本。
- 项目根目录没有 `phpunit.xml``phpunit.xml.dist`
- `pro_v3.5.1/vendor/bin/phpunit` 当前不存在,`tests/hjf/*` 中的 PHPUnit 用例无法直接通过项目依赖运行。
- `pro_v3.5.1/view/admin/package.json` 有构建脚本,但没有测试或 lint 脚本。
- 每个阶段必须记录自动化检查是否可执行;不可执行时记录原因,并用手工接口回归补足验收证据。
### 统一回归记录格式
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 示例 | `/adminapi/jnotice` | GET | admin | token | 200 | 200 | `data` | 待测 | 阶段执行时填写 |
### 核心 smoke 基线接口
阶段执行时至少记录以下接口的当前响应:
- `GET /adminapi/login/info`
- `GET /adminapi/menusList`
- `GET /adminapi/home/header`
- `GET /adminapi/jnotice`
- `GET /supplierapi/login/info`
- `GET /supplierapi/jnotice`
### 阶段提交规则
- 每个阶段测试通过后单独提交。
- 提交前确认改动只包含当前阶段范围。
- 客服、企业微信 DAO、库存扣减/回滚均作为最后阶段内容,不夹带到前置阶段。
## 阶段 1外部账号 token 解析
### 自动化检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/services/auth/AccessTokenService.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/services/out/OutAccountServices.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
### 手工回归记录
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 1 | 外部账号获取 token | POST | out | `appid``appsecret` | 待预发填写 | 待预发填写 | `token``exp_time` | 待测 | 当前本地无外部账号凭证和完整运行环境。 |
| 1 | 外部账号刷新 token | POST | out | `access_token` | 待预发填写 | 待预发填写 | `access_token``exp_time` | 待测 | 当前本地无外部账号凭证和完整运行环境。 |
| 1 | 外部账号受保护接口 | GET/POST | out | `access_token` | 待预发填写 | 待预发填写 | 业务数据 | 待测 | 当前本地无外部账号凭证和完整运行环境。 |
| 1 | 伪造/过期 token | GET/POST | out | 非法 token | 待预发填写 | 待预发填写 | 错误码 | 待测 | 当前本地无外部账号凭证和完整运行环境。 |
### 阶段结论
- `app/services/out/OutAccountServices.php` 已移除 `crmeb\basic\BaseAuth` 依赖。
- `app/services/kefu/LoginServices.php` 未修改,保留到最后阶段处理。
- 外部账号手工接口回归需要在具备外部账号凭证的预发或生产验证窗口执行。
## 阶段 2通用搜索条件构建
### 自动化检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/services/dao/SearchConditionBuilder.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l crmeb/traits/SearchDaoTrait.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -r '...SearchConditionBuilder smoke...'` | 通过 | 验证搜索器字段进入 `withSearch`,普通表字段进入 where非法字段和 `timeKey` 被过滤。 |
### 手工回归记录
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 2 | 商品列表筛选 | GET | admin | 关键词、分类、上下架、分页 | 待预发填写 | 待预发填写 | `list``count` | 待测 | 当前本地无完整接口运行环境。 |
| 2 | 订单列表筛选 | GET | admin | 订单号、用户、状态、时间范围、分页 | 待预发填写 | 待预发填写 | `list``count` | 待测 | 当前本地无完整接口运行环境。 |
| 2 | 用户列表筛选 | GET | admin | 手机号/昵称、等级/标签、状态、分页 | 待预发填写 | 待预发填写 | `list``count` | 待测 | 当前本地无完整接口运行环境。 |
| 2 | 非法字段请求 | GET | admin | 非法 where 字段 | 待预发填写 | 待预发填写 | 无 500 | 待测 | 当前本地无完整接口运行环境。 |
### 阶段结论
- `crmeb/traits/SearchDaoTrait.php` 已移除 `crmeb\basic\BaseAuth` 依赖。
- 企业微信 `app/dao/work/*Dao.php` 未修改,保留到最后阶段处理。
- 常用列表接口手工回归需要在具备后台 token 的预发或生产验证窗口执行。
## 阶段 3自有 AppBaseController 迁移
### 3.0 基类检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/common/controller/AppBaseController.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
### 3.1 `out` 入口
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/controller/out/OutAccount.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 3.1 | 外部账号登录/获取 token | POST | out | `appid``appsecret` | 待预发填写 | 待预发填写 | `token``exp_time` | 待测 | 当前本地无外部账号凭证和完整运行环境。 |
| 3.1 | 外部账号刷新 token | POST | out | `access_token` | 待预发填写 | 待预发填写 | `access_token``exp_time` | 待测 | 当前本地无外部账号凭证和完整运行环境。 |
### 3.2 `supplier` 入口
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/controller/supplier/AuthController.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 3.2 | `/supplierapi/login/info` | GET | anonymous | 无 | 待预发填写 | 待预发填写 | 登录页配置 | 待测 | 当前本地无完整接口运行环境。 |
| 3.2 | `/supplierapi/jnotice` | GET | supplier | token | 待预发填写 | 待预发填写 | 通知数据 | 待测 | 当前本地无供应商 token。 |
| 3.2 | 供应商商品列表 | GET | supplier | token、分页 | 待预发填写 | 待预发填写 | `list``count` | 待测 | 当前本地无供应商 token。 |
| 3.2 | 供应商上传图片 | POST | supplier | token、file | 待预发填写 | 待预发填写 | 文件地址 | 待测 | 当前本地无供应商 token。 |
### 3.3 `admin` 入口
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/controller/admin/AuthController.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 3.3 | `/adminapi/login/info` | GET | anonymous | 无 | 待预发填写 | 待预发填写 | 登录页配置 | 待测 | 当前本地无完整接口运行环境。 |
| 3.3 | `/adminapi/menusList` | GET | admin | token | 待预发填写 | 待预发填写 | 菜单列表 | 待测 | 当前本地无 admin token。 |
| 3.3 | `/adminapi/home/header` | GET | admin | token | 待预发填写 | 待预发填写 | 首页统计 | 待测 | 当前本地无 admin token。 |
| 3.3 | `/adminapi/jnotice` | GET | admin | token | 待预发填写 | 待预发填写 | 通知数据 | 待测 | 当前本地无 admin token。 |
| 3.3 | 表单校验失败 | POST/PUT | admin | 非法参数 | 待预发填写 | 待预发填写 | 校验错误 | 待测 | 当前本地无 admin token。 |
## 阶段 4版权/授权接口合规清理
### 自动化检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/services/system/LocalCopyrightService.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/controller/admin/Common.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/controller/api/v1/Common.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/controller/supplier/Common.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
### 手工回归记录
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 4 | `/adminapi/auth` | GET | admin | token | 待预发填写 | 待预发填写 | `edition``license_source``crm_pro_authorized` | 待测 | 不返回伪造原厂授权成功状态。 |
| 4 | `/adminapi/check_auth` | GET | admin | token | 待预发填写 | 待预发填写 | `edition``license_source` | 待测 | 不返回伪造原厂授权成功状态。 |
| 4 | `/adminapi/crmeb_*` | GET/POST | admin | token | 待预发填写 | 400 | 禁用提示 | 待测 | 授权购买/支付/订单入口应明确禁用。 |
| 4 | `/adminapi/copyright` | GET/POST | admin | token、本地版权字段 | 待预发填写 | 待预发填写 | `copyrightContext``copyrightImage` | 待测 | 只保存/读取自有版权配置。 |
| 4 | `/api/get_copyright` | GET | anonymous | 无 | 待预发填写 | 待预发填写 | 版权、备案、站点字段 | 待测 | 不调用加密版权 helper。 |
| 4 | `/supplierapi/copyright` | GET | anonymous | 无 | 待预发填写 | 待预发填写 | `copyrightContext``copyrightImage` | 待测 | 不调用加密版权 helper。 |
### 阶段结论
- admin/api/supplier 的版权读取已改为 `LocalCopyrightService`
- 后台授权申请、授权登录、授权订单、授权支付、授权产品接口返回明确禁用提示。
- 不再返回 `AUTHORIZED`、授权天数、原厂授权成功等伪造字段。
- 客服版权接口未修改,保留到最后阶段处理。
## 阶段 5配置依赖收口
### 自动化检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l config/app.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `rg "BaseAuth|BaseController|auth_crmeb|__z6uxy|__qsG" pro_v3.5.1 --glob "*.php"` | 通过 | 剩余 `BaseAuth`/`BaseController` 引用均属于最后阶段暂不使用模块或 `AppBaseController` 命名命中。 |
### 剩余引用说明
- `app/services/kefu/LoginServices.php`:客服 token 解析,最后阶段处理。
- `app/controller/kefu/*`:客服控制器继承和版权读取,最后阶段处理。
- `app/dao/work/*Dao.php`:企业微信 DAO 搜索,最后阶段处理。
- `app/dao/BaseDao.php`:库存扣减/回滚,最后阶段处理。
- `config/app.php``auth_crmeb` 保留为空字符串兼容配置读取,不再引用 `BaseAuth::AUTH_CRMEB`
### 手工回归记录
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 5 | `php think` | CLI | system | 无 | 不适用 | 不适用 | 命令输出 | 待测 | 当前本地可能受授权/环境影响,部署验证时补充。 |
| 5 | `/adminapi/login/info` | GET | anonymous | 无 | 待预发填写 | 待预发填写 | 登录页配置 | 待测 | 当前本地无完整接口运行环境。 |
| 5 | `/adminapi/jnotice` | GET | admin | token | 待预发填写 | 待预发填写 | 通知数据 | 待测 | 当前本地无 admin token。 |
| 5 | `/supplierapi/jnotice` | GET | supplier | token | 待预发填写 | 待预发填写 | 通知数据 | 待测 | 当前本地无 supplier token。 |
## 阶段 6.1:企业微信 DAO 搜索
### 自动化检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/dao/work/WorkMemberDao.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/dao/work/WorkWelcomeDao.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/dao/work/WorkGroupMsgSendResultDao.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/dao/work/WorkClientDao.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/dao/work/WorkGroupMsgTaskDao.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `rg "BaseAuth" app/dao/work --glob "*.php"` | 通过 | 企业微信 DAO 已无 `BaseAuth` 引用。 |
### 手工回归记录
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 6.1 | 企业微信客户列表 | GET | admin | token、筛选条件 | 待预发填写 | 待预发填写 | `list``count` | 待测 | 当前项目未启用企业微信,部署验证时确认明确错误或正常列表。 |
| 6.1 | 企业微信成员列表 | GET | admin | token、筛选条件 | 待预发填写 | 待预发填写 | `list``count` | 待测 | 当前项目未启用企业微信,部署验证时确认明确错误或正常列表。 |
| 6.1 | 企业微信欢迎语列表 | GET | admin | token、筛选条件 | 待预发填写 | 待预发填写 | `list``count` | 待测 | 当前项目未启用企业微信,部署验证时确认明确错误或正常列表。 |
## 阶段 6.2:库存扣减/回滚
### 自动化检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/services/product/StockMutationService.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/dao/BaseDao.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `rg "BaseAuth" app/dao/BaseDao.php` | 通过 | `BaseDao` 已无 `BaseAuth` 引用。 |
### 手工回归记录
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 6.2 | 创建订单/支付成功 | POST | user/admin | 商品、规格、数量 | 待预发填写 | 待预发填写 | 库存、销量、订单状态 | 待测 | 当前项目暂不使用相关链路,部署验证时补充。 |
| 6.2 | 库存不足下单 | POST | user/admin | 超库存数量 | 待预发填写 | 待预发填写 | 失败提示、无异常订单 | 待测 | 当前项目暂不使用相关链路,部署验证时补充。 |
| 6.2 | 取消/退款回滚 | POST | user/admin | 订单号 | 待预发填写 | 待预发填写 | 库存、销量 | 待测 | 当前项目暂不使用相关链路,部署验证时补充。 |
| 6.2 | 并发扣减 | POST | user/admin | 同商品多请求 | 待预发填写 | 待预发填写 | 库存不为负 | 待测 | 需在预发压测或脚本验证。 |
## 阶段 6.3:客服模块
### 自动化检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/services/kefu/LoginServices.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/controller/kefu/AuthController.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/controller/kefu/Login.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `php -l app/controller/kefu/Common.php` | 通过 | PHP 提示 `swoole_loader` 已加载,不影响语法检查结果。 |
| `rg -n -F -e 'crmeb\basic\BaseAuth' -e 'crmeb\basic\BaseController' -e 'BaseAuth::' -e '__z6uxy' -e '__qsG' pro_v3.5.1/app pro_v3.5.1/config pro_v3.5.1/route pro_v3.5.1/crmeb/traits --glob '*.php'` | 通过 | 目标应用目录已无商业基础类和加密版权 helper 直接引用。 |
| `php think list` | 未通过 | 本地输出“授权文件被更改,无法运行程序~~~”,属于当前商业授权环境基线问题,需在授权正确的部署环境回归。 |
### 手工回归记录
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| 6.3 | 客服登录 | POST | kefu | 账号、密码 | 待预发填写 | 待预发填写 | `token``kefuInfo` | 待测 | 当前项目未启用客服模块。 |
| 6.3 | 客服会话列表 | GET | kefu | token | 待预发填写 | 待预发填写 | 会话数据 | 待测 | 当前项目未启用客服模块。 |
| 6.3 | 客服上传图片 | POST | kefu | token、file | 待预发填写 | 待预发填写 | 文件地址 | 待测 | 当前项目未启用客服模块。 |
| 6.3 | 非法/过期 token | GET/POST | kefu | 非法 token | 待预发填写 | 待预发填写 | 错误码 | 待测 | 当前项目未启用客服模块。 |
### 最终收口结论
- 自有业务代码已移除 `crmeb\basic\BaseAuth``crmeb\basic\BaseController`、加密版权 helper 的直接引用。
- 阶段 6.3 执行时 `php think list` 曾受本地环境影响;最终复核修复阶段已在本机环境通过,部署前仍需完成全量手工接口回归。
## 审查修复记录
### 自动化检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l app/common/controller/AppBaseController.php` | 通过 | 修复校验失败未抛异常的问题。 |
| `php -l app/services/auth/AccessTokenService.php` | 通过 | 增加账号状态校验回调。 |
| `php -l app/services/out/OutAccountServices.php` | 通过 | 刷新 token 时补齐 `auth` claim并拒绝禁用/删除外部账号。 |
| `php -l app/services/kefu/LoginServices.php` | 通过 | 拒绝禁用客服账号 token。 |
| `rg -n -F -e 'crmeb\basic\BaseAuth' -e 'crmeb\basic\BaseController' -e 'BaseAuth::' -e '__z6uxy' -e '__qsG' pro_v3.5.1/app pro_v3.5.1/config pro_v3.5.1/route pro_v3.5.1/crmeb/traits --glob '*.php'` | 通过 | 目标应用目录仍无商业基础类和加密版权 helper 直接引用。 |
## 最终复核修复
### 修复说明
- 修正 `config/app.php` 最后残留的 `crmeb\basic\BaseAuth` 依赖,`auth_crmeb` 配置键保留为空字符串用于兼容历史读取。
- 前序记录中的 `rg "crmeb\\basic\\BaseAuth|..."` 属于正则检查,反斜杠组合存在被解释为正则边界的漏报风险;最终复核统一改为固定字符串检查。
- 不移除 `crmeb/basic/BaseAuth.php``crmeb/basic/BaseController.php` 源文件本身,仅确认业务应用目录不再直接依赖。
### 自动化检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l pro_v3.5.1/config/app.php` | 通过 | `No syntax errors detected in pro_v3.5.1/config/app.php`。 |
| `rg -n -F -e 'crmeb\basic\BaseAuth' -e 'crmeb\basic\BaseController' -e 'BaseAuth::' -e '__z6uxy' -e '__qsG' pro_v3.5.1/app pro_v3.5.1/config pro_v3.5.1/route pro_v3.5.1/crmeb/traits --glob '*.php'` | 通过 | 命令无输出,目标应用目录无直接残留。 |
| `php think list` | 通过 | 沙箱内曾因 Redis 连接限制输出 `Operation not permitted`;经授权在本机环境执行通过,输出 ThinkPHP 8.0.2 命令列表。 |
### 待部署回归
| 阶段 | 接口/命令 | 方法 | 身份 | 关键参数 | HTTP 状态 | 业务 `status` | 关键字段 | 结果 | 备注 |
|------|-----------|------|------|----------|-----------|---------------|----------|------|------|
| final | `/adminapi/login/info` | GET | anonymous | 无 | 待预发填写 | 待预发填写 | 登录页配置 | 待测 | 部署环境补录。 |
| final | `/adminapi/check_auth` | GET | admin | token | 待预发填写 | 待预发填写 | `edition``license_source` | 待测 | 不返回伪造原厂授权成功状态。 |
| final | `/adminapi/auth` | GET | admin | token | 待预发填写 | 待预发填写 | `edition``license_source``crm_pro_authorized` | 待测 | 使用自有授权信息。 |
| final | `/api/get_copyright` | GET | anonymous | 无 | 待预发填写 | 待预发填写 | 版权、备案、站点字段 | 待测 | 不调用加密版权 helper。 |
| final | `/supplierapi/copyright` | GET | anonymous | 无 | 待预发填写 | 待预发填写 | `copyrightContext``copyrightImage` | 待测 | 使用自有版权配置。 |
| final | `/adminapi/jnotice` | GET | admin | token | 待预发填写 | 待预发填写 | 通知数据 | 待测 | 有 admin token 时补测。 |
| final | `/supplierapi/jnotice` | GET | supplier | token | 待预发填写 | 待预发填写 | 通知数据 | 待测 | 有 supplier token 时补测。 |
| final | 客服登录/非法 token | POST/GET | kefu | 账号、密码、非法 token | 待预发填写 | 待预发填写 | `token`、错误码 | 待测 | 有客服账号时补测。 |
## 前端授权入口收口
### 修复说明
- 后台 `系统维护/商业授权` 页面改为 `系统许可` 页面,只展示自有许可状态、系统版本和本地版权配置,不再提供 CRMEB 原厂授权申请、购买授权或购买版权入口。
- 后台前端移除 `auth_apply``crmeb_product``crmeb_verify``crmeb_login``crmeb_order``crmeb_pay` 等授权购买/支付 API 封装。
- 后端兼容路由继续保留,避免旧前端或缓存请求直接 404但路由名称和控制器返回均明确为“原厂授权入口已禁用”。
- `SystemAuthServices::authApply()` 不再请求 `authorize.crmeb.net`,仅返回禁用异常,避免误触发远程原厂授权申请。
- 升级脚本中的菜单显示名从 `商业授权` 调整为 `系统许可`
### 自动化检查
| 命令 | 结果 | 备注 |
|------|------|------|
| `php -l pro_v3.5.1/app/services/system/SystemAuthServices.php` | 通过 | 无语法错误。 |
| `php -l pro_v3.5.1/app/controller/admin/Common.php` | 通过 | 无语法错误。 |
| `php -l pro_v3.5.1/route/admin.php` | 通过 | 无语法错误。 |
| `php -l pro_v3.5.1/app/controller/Upgrade.php` | 通过 | 无语法错误。 |
| `php think list` | 通过 | 输出 ThinkPHP 8.0.2 命令列表。 |
| `npm run build``pro_v3.5.1/view/admin` | 通过 | 构建成功;存在既有 CSS 顺序和资源体积警告。 |
| `rg -n -F -e 'crmeb\basic\BaseAuth' -e 'crmeb\basic\BaseController' -e 'BaseAuth::' -e '__z6uxy' -e '__qsG' pro_v3.5.1/app pro_v3.5.1/config pro_v3.5.1/route pro_v3.5.1/crmeb/traits --glob '*.php'` | 通过 | 命令无输出,目标应用目录无直接残留。 |
| `rg -n "crmebProduct\|authApply\|crmebVerify\|crmebLogin\|crmebOrder\|crmebPay\|getCrmebOrder\|authorize\.crmeb\.net\|购买授权\|购买版权\|申请授权" pro_v3.5.1/view/admin/src pro_v3.5.1/app/services/system/SystemAuthServices.php` | 通过 | 前端无申请/购买授权入口;仅保留后端禁用方法名 `authApply`。 |