Files
huangjingfen/docs/license-replacement-test-record.md
2026-04-29 17:21:49 +08:00

17 KiB
Raw Blame History

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.phpcheck_authauth_applyauthcrmeb_*copyright
  • pro_v3.5.1/route/api.phpget_copyright
  • pro_v3.5.1/route/supplier.phpcopyright
  • 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 没有 testlint 或静态分析脚本。
  • 项目根目录没有 phpunit.xmlphpunit.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 appidappsecret 待预发填写 待预发填写 tokenexp_time 待测 当前本地无外部账号凭证和完整运行环境。
1 外部账号刷新 token POST out access_token 待预发填写 待预发填写 access_tokenexp_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 关键词、分类、上下架、分页 待预发填写 待预发填写 listcount 待测 当前本地无完整接口运行环境。
2 订单列表筛选 GET admin 订单号、用户、状态、时间范围、分页 待预发填写 待预发填写 listcount 待测 当前本地无完整接口运行环境。
2 用户列表筛选 GET admin 手机号/昵称、等级/标签、状态、分页 待预发填写 待预发填写 listcount 待测 当前本地无完整接口运行环境。
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 appidappsecret 待预发填写 待预发填写 tokenexp_time 待测 当前本地无外部账号凭证和完整运行环境。
3.1 外部账号刷新 token POST out access_token 待预发填写 待预发填写 access_tokenexp_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、分页 待预发填写 待预发填写 listcount 待测 当前本地无供应商 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 待预发填写 待预发填写 editionlicense_sourcecrm_pro_authorized 待测 不返回伪造原厂授权成功状态。
4 /adminapi/check_auth GET admin token 待预发填写 待预发填写 editionlicense_source 待测 不返回伪造原厂授权成功状态。
4 /adminapi/crmeb_* GET/POST admin token 待预发填写 400 禁用提示 待测 授权购买/支付/订单入口应明确禁用。
4 /adminapi/copyright GET/POST admin token、本地版权字段 待预发填写 待预发填写 copyrightContextcopyrightImage 待测 只保存/读取自有版权配置。
4 /api/get_copyright GET anonymous 待预发填写 待预发填写 版权、备案、站点字段 待测 不调用加密版权 helper。
4 /supplierapi/copyright GET anonymous 待预发填写 待预发填写 copyrightContextcopyrightImage 待测 不调用加密版权 helper。

阶段结论

  • admin/api/supplier 的版权读取已改为 LocalCopyrightService
  • 后台授权申请、授权登录、授权订单、授权支付、授权产品接口返回明确禁用提示。
  • 不再返回 AUTHORIZED、授权天数、原厂授权成功等伪造字段。
  • 客服版权接口未修改,保留到最后阶段处理。

阶段 5配置依赖收口

自动化检查

命令 结果 备注
php -l config/app.php 通过 PHP 提示 swoole_loader 已加载,不影响语法检查结果。
`rg "BaseAuth BaseController auth_crmeb

剩余引用说明

  • app/services/kefu/LoginServices.php:客服 token 解析,最后阶段处理。
  • app/controller/kefu/*:客服控制器继承和版权读取,最后阶段处理。
  • app/dao/work/*Dao.php:企业微信 DAO 搜索,最后阶段处理。
  • app/dao/BaseDao.php:库存扣减/回滚,最后阶段处理。
  • config/app.phpauth_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、筛选条件 待预发填写 待预发填写 listcount 待测 当前项目未启用企业微信,部署验证时确认明确错误或正常列表。
6.1 企业微信成员列表 GET admin token、筛选条件 待预发填写 待预发填写 listcount 待测 当前项目未启用企业微信,部署验证时确认明确错误或正常列表。
6.1 企业微信欢迎语列表 GET admin token、筛选条件 待预发填写 待预发填写 listcount 待测 当前项目未启用企业微信,部署验证时确认明确错误或正常列表。

阶段 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 同商品多请求 待预发填写 待预发填写 库存不为负 待测 需在预发压测或脚本验证。