# 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。 |