AI Assistant 6dd3e863db 优化推广统计方法性能:使用UrsUserRelationCache替代多次查询 hai 6 meses
..
AddWoodRecipes.php 6e2bf76fa8 1 hai 7 meses
AskAndEchoCommand.php f27e6f17a3 新增后台管理系统测试报告和自定义问答命令 hai 7 meses
CheckMenuValidity.php a29322c005 feat(ucore): 增加 generate-apptree 命令 hai 7 meses
CheckSpecificMenus.php a29322c005 feat(ucore): 增加 generate-apptree 命令 hai 7 meses
CheckTempDataCommand.php 77970c0912 修复房屋升级后土地同步问题:新土地现在能正确进入暂存区 hai 6 meses
CreateSampleDismantleRules.php 6e2bf76fa8 1 hai 7 meses
CreateSampleRecipes.php 6e2bf76fa8 1 hai 7 meses
DebugSeedMapping.php 6e2bf76fa8 1 hai 7 meses
DisabledBaseMigrateCommand.php a29322c005 feat(ucore): 增加 generate-apptree 命令 hai 7 meses
DisabledMigrateCommand.php a29322c005 feat(ucore): 增加 generate-apptree 命令 hai 7 meses
GenerateConfigDbCommand.php d9d492db93 refactor(configdb): 更新配置数据库备份文件 hai 6 meses
GenerateProtoRouteCommand.php 693477b517 feat(GenerateModelAnnotation): 支持自定义Casts类型 hai 7 meses
GetMenuById.php a29322c005 feat(ucore): 增加 generate-apptree 命令 hai 7 meses
InsertShopPurchaseLimitMenu.php 6e2bf76fa8 1 hai 7 meses
InsertTeamAdminMenu.php 693477b517 feat(GenerateModelAnnotation): 支持自定义Casts类型 hai 7 meses
README_ReproduceError.md 632ba4b5d9 新增错误复现命令:通过请求日志记录复现错误请求用于调试 hai 7 meses
ReproduceErrorCommand.php 6dd3e863db 优化推广统计方法性能:使用UrsUserRelationCache替代多次查询 hai 6 meses
TestCropPlantingBugFix.php 989f11ab66 修复农场模块重大bug:一块土地多次种植不会产生新作物 hai 6 meses
TestCropRemove.php 5f4e5c6f99 修复铲除作物没有记录作物事件日志的问题 hai 6 meses
TestCropSoftDelete.php 75a01f26a5 实现农场作物软删除功能并修复作物事件日志后台管理 hai 6 meses
TestHouseUpgradeCommand.php 77970c0912 修复房屋升级后土地同步问题:新土地现在能正确进入暂存区 hai 6 meses
TestReferralRegisterRewardCommand.php 144438c5d0 feat(urs-promotion): 新增推荐注册奖励功能 hai 6 meses
TestRewardDeductCollectorUserSeparation.php 9641d42ac9 实现奖励扣除收集系统用户区分功能 hai 6 meses
TestSizeRotatingLog.php 6e2bf76fa8 1 hai 7 meses
TestUrsReferralCreatedEventCommand.php e9f1c5cdf3 清理废弃的UrsReferralService::createReferral方法 hai 6 meses
TestUrsReferralCreatedListenerCommand.php 35173d8fe1 1 hai 6 meses
TestUrsTalentUpstream.php 40a34cf7d7 修复URS达人等级向上传播更新Bug hai 6 meses
TestUrsTeamStatsConsistencyCommand.php e851c7b9aa 修复URS团队等级更新逻辑一致性问题 hai 6 meses
TestWealthRank.php b4f4e9a128 1 hai 6 meses
UpdateAdminMenuEmoji.php 693477b517 feat(GenerateModelAnnotation): 支持自定义Casts类型 hai 7 meses
UpdateChestAdminMenu.php 6e2bf76fa8 1 hai 7 meses
VerifyFundCurrencyId.php bcbd4abfd0 Fund模块币种ID概念修复 hai 7 meses
VerifyFundDecimal.php bcbd4abfd0 Fund模块币种ID概念修复 hai 7 meses

README_ReproduceError.md

错误复现命令 (ReproduceErrorCommand)

概述

debug:reproduce-error 命令用于通过 sys_request_logs 表中的请求记录来复现错误请求,帮助开发者进行调试和问题排查。

功能特性

  • 支持通过 idrequest_unidrun_unid 查找请求记录
  • 自动提取请求记录中的 protobuf_jsontoken 信息
  • 参考 ProtoJsonRequestTest 的实现方式发起 HTTP 请求
  • 使用环境变量 UNITTEST_URL 作为目标地址
  • 详细的日志记录和错误处理
  • 支持自定义请求超时时间

命令语法

php artisan debug:reproduce-error <identifier> [options]

参数

  • identifier: 请求标识符,可以是以下任意一种:
    • 数据库记录的 id(数字)
    • request_unid(字符串)
    • run_unid(字符串)

选项

  • --type=TYPE: 指定标识符类型,可选值:

    • auto(默认):自动检测类型
    • id:按数据库 ID 查找
    • request_unid:按请求唯一标识符查找
    • run_unid:按运行唯一标识符查找
  • --timeout=SECONDS: 设置请求超时时间(秒),默认为 30 秒

使用示例

1. 通过数据库 ID 复现请求

php artisan debug:reproduce-error 68973973

2. 通过 request_unid 复现请求

php artisan debug:reproduce-error 6840202392627

3. 指定标识符类型

php artisan debug:reproduce-error 68973973 --type=id
php artisan debug:reproduce-error 6840202392627 --type=request_unid

4. 设置自定义超时时间

php artisan debug:reproduce-error 68973973 --timeout=60

输出示例

开始查找请求记录...
标识符: 68973973
类型: auto
找到请求记录:
  ID: 68973973
  Request UNID: 6840202392627
  Run UNID: 
  路径: gameapi
  方法: POST
  创建时间: 2025-06-04 18:29:55
提取到 token: f4b3c51a58...
目标地址: http://kku_laravel.local.gd/
开始发起请求...
请求完成,响应结果:
状态码: 200
响应头:
  Server: nginx/1.27.4
  Date: Wed, 04 Jun 2025 12:59:52 GMT
  Content-Type: application/json
  Transfer-Encoding: chunked
  Connection: keep-alive
  X-Powered-By: PHP/8.3.21
  Cache-Control: no-cache, private
  Vary: Origin
响应内容:
{"runUnid":"68404347a6a07","runMs":"6","code":"OK","callpath":"Shop-Query","lastData":[],"shopQuery":{"lastTimes":"1748943300"}}

环境配置

确保在 .env 文件中配置了正确的 UNITTEST_URL

UNITTEST_URL=http://kku_laravel.local.gd/

错误处理

命令会处理以下错误情况:

  1. 未找到请求记录:当指定的标识符在数据库中不存在时
  2. 缺少 protobuf_json 数据:当请求记录中没有必要的请求数据时
  3. 网络请求失败:当向目标服务器发起请求失败时
  4. JSON 解析错误:当解析 headers 或响应数据失败时

日志记录

命令会在 Laravel 日志中记录详细的执行信息:

  • 请求开始和完成的时间戳
  • 请求和响应的数据长度
  • 错误信息和堆栈跟踪

技术实现

核心组件

  1. RequestLog 模型:用于查询 sys_request_logs
  2. GuzzleHttp 客户端:用于发起 HTTP 请求
  3. JSON 解析:提取 headers 中的 token 信息
  4. 错误处理:完善的异常捕获和用户友好的错误提示

请求流程

  1. 根据标识符和类型查找请求记录
  2. 验证请求记录的完整性
  3. 从 headers 中提取 token
  4. 初始化 HTTP 客户端
  5. 发起 POST 请求到 /gameapi 端点
  6. 解析和展示响应结果

注意事项

  • 命令会禁用 SSL 验证以支持本地开发环境
  • Token 在输出时会被截断显示以保护敏感信息
  • 请求超时时间可以根据实际需要调整
  • 确保目标服务器能够正常处理复现的请求

相关文件

  • 命令文件:app/Console/Commands/ReproduceErrorCommand.php
  • 模型文件:UCore/Model/RequestLog.php
  • 测试参考:tests/Unit/ProtoJsonRequestTest.php