Commit Graph

74 Commits

Author SHA1 Message Date
root dcde90a498 debug: 增强自审批检测日志,排查为什么没有生效 2026-02-28 14:35:08 +08:00
root 08d588acce debug: 添加自审批检查日志 2026-02-28 14:33:35 +08:00
root 6eed14933a feat: 自审批时发送文本消息而不是卡片消息
- FeishuNotificationService: 检测自审批场景,发送纯文本消息
- ApprovalService: 传递 applicant_id 参数
- 添加 sendTextNotification 和 sendText 方法
- 保留自审批自动通过逻辑(前端调用场景)
2026-02-28 14:22:40 +08:00
root 1b0be5918d fix: 防止自审批并优化飞书响应
- 添加自审批检查(申请人不能审批自己的申请)
- 使用 response() 函数替代 new Response() 确保飞书回调正确
2026-02-28 14:19:58 +08:00
root 95e150b65f fix: 使用正确的Webman Request方法获取协议
- 使用 request()->header('x-forwarded-proto') 替代 isSecure()
- 支持反向代理环境
2026-02-28 14:15:57 +08:00
root ea10bdb138 fix: 修复request()->scheme()方法不存在的问题
- ApprovalService.getDetailUrl: 改用 request()->isSecure()
- AuthController.qrcodeLogin: 改用 request()->isSecure()
2026-02-28 14:12:59 +08:00
root 0aa5b3abef fix: 添加飞书卡片回调调试日志,追踪200671错误 2026-02-28 14:10:31 +08:00
root 342f3128bf fix: 修复飞书卡片回调JSON编码问题,解决200671错误
- 添加 JSON_UNESCAPED_UNICODE 防止中文被转义
- 添加 JSON_UNESCAPED_SLASHES 防止斜杠被转义
- Content-Type 添加 charset=utf-8
2026-02-28 14:04:55 +08:00
root 4667590feb fix: 修复飞书免登功能,添加 H5 JSSDK 和 appId 自动获取
后端改动:
- 新增 /api/v1/auth/feishu-config 接口,根据 company 参数返回对应 appId

前端改动:
- 添加飞书 H5 JSSDK (h5-js-sdk-1.5.19.js)
- 修改登录页免登逻辑:先从后端获取 appId,再调用 tt.requestAuthCode
- 新增飞书环境检测测试页面 (/feishu-env-test)
- 移除测试页面的自动轮询逻辑

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 08:58:51 +08:00
root 40234a1d90 fix: 使用数据库中的 mobile_callback_url 作为回调地址
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 22:14:18 +08:00
root 103da81a5c fix: 移除硬编码的开发环境域名
- 使用动态域名配置(从 request 或 config 读取)
- 添加 FEISHU_BASE_URL 环境变量支持
- 修复回调地址为当前站点域名

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 22:12:46 +08:00
root 40fbba9f61 feat: 添加最新的数据库导出文件
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 19:17:43 +08:00
root c1e54d9457 chore: 移除已迁移的旧文件 2026-02-27 18:01:32 +08:00
root 1004aea725 feat: 审批功能优化和拒绝原因弹窗
后端改动:
- ApprovalService: 添加调试日志,简化详情页 URL 生成逻辑
- BusinessTripService: 优化出差审批详情展示

前端改动:
- approval/detail: 审批详情页优化,支持查看完整审批流程
- approval/reject: 新增拒绝原因弹窗组件
- business-trip/detail: 出差详情页增强,展示审批状态和操作

功能特性:
- 审批详情页显示完整审批流程和记录
- 拒绝操作支持填写拒绝原因
- 出差申请详情页优化展示

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 17:57:56 +08:00
root b1ca2c58b7 feat: 飞书登录支持多租户和用户工号管理
后端改动:
- FeishuService: 从飞书用户信息获取 tenant_key 和手机号
- FeishuService: 新增 user_sn 表工号分配机制
- FeishuService: 优先使用 enterprise_email,支持手机号
- AuthController: 飞书免登支持 company 参数

前端改动:
- FeishuAutoLogin: 支持多租户 company 参数
- login/index: 支持 redirect 参数和已登录检测
- QRCodeLogin: 支持多租户参数传递
- router: 新增路由守卫和参数处理
- api.ts: 优化飞书登录 API 调用

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 17:57:49 +08:00
root b1895be50d feat: 优化飞书审批通知卡片,改用卡片回调机制
主要改动:
- 去掉卡片中的备注输入框和表单元素
- 改为三个按钮(通过、拒绝、查看详情)横向排列在一行
- 通过/拒绝按钮使用卡片回调(value)而不是跳转 URL
- 新增 FeishuCardController 处理飞书卡片回调
- 添加提示文字告知用户如需备注可去详情页操作

技术细节:
- 按钮点击触发 card.action.trigger 事件
- 后端通过 FeishuCardController 处理回调
- 支持 url_verification 和 card.callback 两种事件类型
- 查看详情 URL 添加公司参数支持多租户

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 17:53:10 +08:00
root 09a7220e76 feat: 实现无感快速审批操作
问题:
- 用户点击飞书消息按钮需要跳转到web界面
- 需要登录才能操作,体验不流畅

解决方案:
1. 创建快速审批页面 (quick-action.tsx)
2. 用户点击按钮后自动执行审批操作
3. 操作成功后自动关闭页面或返回
4. 全流程无需用户手动跳转

工作流程:
1. 用户在飞书中点击"通过"/"拒绝"按钮
2. 打开快速审批页面
3. 自动执行审批操作(如果已登录)
4. 显示操作成功/失败
5. 自动关闭页面(飞书客户端)或返回列表

优势:
- 一步完成审批,无需跳转
- 已登录用户无感操作
- 未登录用户会引导登录后返回

相关文件:
- frontend/src/pages/approval/quick-action.tsx (新建)
- frontend/src/router/index.tsx
- backend/app/service/FeishuNotificationService.php

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 19:30:12 +08:00
root 68e0c261d8 feat: 完善业务审批消息链路
修改内容:
1. TestController - 添加 real 参数支持发送真实业务通知
2. BusinessTripService.sendApprovalNotification() - 传递 order_id

业务流程:
1. 用户创建申请 → 审批人收到带按钮的通知
2. 点击"通过"/"拒绝"按钮 → 跳转到审批详情页
3. 自动弹出确认框 → 完成审批
4. 通知下一节点审批人/申请人

按钮链接:
- 通过/拒绝:/approval/detail/{order_id}?action=approve|reject
- 查看详情:/business-trip/detail/{business_id}

测试命令:
- 测试消息: /api/v1/test/notification?user_id=1&order_id=64
- 真实业务: /api/v1/test/notification?user_id=1&order_id=64&real=1

相关文件:
- backend/app/controller/TestController.php
- backend/app/service/BusinessTripService.php

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 19:10:51 +08:00
root 7ee92d68fe fix: 修复系统通知卡片 Markdown 渲染问题
问题:
- buildSystemCard 使用 plain_text 格式
- 内容中包含 Markdown 语法 **加粗** 无法渲染
- 显示为 **申请人**:陈兰 而不是 加粗的申请人

修复:
- 将 text.tag 从 plain_text 改为 lark_md
- 现在可以正确渲染 Markdown 格式

相关文件:
- backend/app/service/FeishuNotificationService.php

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 19:00:32 +08:00
root df0d592ee4 feat: 飞书审批消息添加操作按钮
功能:
1. 审批通知卡片添加"通过"和"拒绝"按钮
2. 点击按钮跳转到审批详情页,自动弹出审批确认框
3. 保留"查看详情"按钮

实现:
- FeishuNotificationService.buildApprovalCard() - 添加审批操作按钮
- ApprovalService.notifyNextApprovers() - 传递 order_id 参数
- approval/detail.tsx - 处理 URL 中的 action 参数

按钮样式:
- 通过按钮:绿色 (primary)
- 拒绝按钮:红色 (danger)
- 查看详情:默认样式

相关文件:
- backend/app/service/FeishuNotificationService.php
- backend/app/service/ApprovalService.php
- frontend/src/pages/approval/detail.tsx

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:57:59 +08:00
root 32d19d56ee fix: 修复审批消息推送问题
问题1:BusinessTripService 数据格式兼容性
- 后端期望对象数组 [{id:1, name:'...'}],前端传纯 ID 数组 [1,2,3]
- 修复:兼容两种格式,自动提取 id

问题2:ApprovalService 没有消息推送
- 添加 FeishuNotificationService 集成
- approve() 方法:节点完成后通知下一节点审批人,流程完成后通知申请人
- reject() 方法:审批拒绝时通知申请人

问题3:修复重复类定义导致的语法错误

相关文件:
- backend/app/service/BusinessTripService.php
- backend/app/service/ApprovalService.php

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:53:56 +08:00
root e904d5cd97 fix: 修复 ApprovalService 使用 form_data.approvers
问题:ApprovalService 还在使用 approval_node.approvers 字段
解决:改用 form_data.approvers 作为运行时审批人数据

修改内容:
1. approve() - 添加跳过 notify 节点逻辑
2. isNodeCompleted() - 从 form_data 获取审批人
3. getPendingOrderIds() - 从 form_data 获取审批人

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:42:30 +08:00
root ea7f0f8820 feat: 添加"抄送我的"审批列表选项
后端修改:
- ApprovalService::getList 添加 'cc' 类型查询
- 从 form_data.cc_users 中查找包含当前用户的订单
- 兼容两种数据格式:[{id:29}] 或 [29]

前端修改:
- 添加"抄送我的"标签页
- 更新类型定义支持 'cc' 类型
- approvalListParams 类型添加 'cc' 选项

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:33:53 +08:00
root 61d1c70ba8 fix: 完善审批流程错误处理和调试日志
主要修改:
1. 添加完整的 try-catch 错误处理
2. 添加 Transaction 开始/成功日志
3. 添加保存前后的状态日志
4. 捕获并记录任何异常

测试验证:
- 审批流程正常执行
- 状态正确更新为 approved
- 跳过 notify 节点直接完成
- "我已审批"列表正确返回数据

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:23:02 +08:00
root 8b37d6313e fix: 完善审批流程调试日志
添加详细的调试日志来追踪审批流程:
1. approve() 方法开始时的参数日志
2. 节点类型和完成状态的日志
3. 下一节点查询和跳过逻辑的日志

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:19:51 +08:00
root f36fc69b8d fix: 修复审批流程完成后状态更新问题
主要修改:
1. 修复下一节点查询逻辑,使用 order > currentOrder 替代 order > 0
2. 在 submit 和 approve 方法中跳过 notify 节点直接完成流程
3. 添加详细的调试日志
4. 兼容两种数据格式:[1,2,3] 或 [{id:1},{id:2},{id:3}]

修复问题:
- 审批完成后流程移到 notify 节点而不是完成
- business_trip status 没有更新为 approved
- "我已审批"列表为空

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:14:49 +08:00
root cc3c599c90 fix: 使用 form_data 存储运行时审批人,不修改 approval_node 模板
主要修改:
1. submit() 方法不再修改 approval_node 表,节点仅作为流程模板
2. getList() 的 pending 查询从 form_data.approvers 获取审批人列表
3. approve() 方法从 form_data.approvers 检查用户是否有权限
4. 兼容两种数据格式:[1,2,3] 或 [{id:1},{id:2},{id:3}]

修复问题:
- 之前每次提交申请都会修改 approval_node 表的 approvers 字段
- 这导致流程模板被污染,不同的申请共享同一个节点配置

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:01:40 +08:00
root 5095f556c8 fix: 修复单人审批完成后的流程流转逻辑
问题:
1. 审批完成后直接移动到下一节点,没有检查节点类型
2. 抄送节点应该跳过并完成流程,而不是进入抄送节点
3. 审批完成后的申请应该进入"审批完成"状态

修复:
- 检查节点完成条件:单人审批/或签一人通过即完成
- 检查下一节点类型:抄送节点则跳过并完成
- 没有后续节点则完成流程

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 17:39:59 +08:00
root dc763d874a fix: 修复待审批列表查询逻辑
- 检查用户是否在当前节点的审批人列表中
- 排除已经审批过的申请
- 同时修复数据库节点7的审批人配置

问题:待审批列表没有验证用户是否为当前节点审批人

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 17:34:56 +08:00
root a1176b1042 fix: 移除硬编码,使用数据库配置审批流程
- 数据库已配置审批节点:陈兰 (id=27)
- 数据库已配置抄送节点:陈标 (id=29)
- 移除硬编码的 getDefaultApproversFromConfig() 方法
- 代码从数据库读取配置

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 17:30:25 +08:00
root a6e4a7fbc4 feat: 设置默认审批人为陈兰,抄送人为陈标
- 当没有配置审批流程时返回默认值
- 新增 getDefaultApproversFromConfig() 方法
- 默认审批人:陈兰 (id=27)
- 默认抄送人:陈标 (id=29)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 17:24:45 +08:00
root c1016c740d feat: 接入飞书消息通知到出差审批功能
- 提交申请后通知审批人和抄送人
- 审批通过/拒绝后通知申请人
- 取消申请后通知审批人和抄送人
- 新增 sendApprovalNotification() 方法
- 新增 sendApprovalResultNotification() 方法
- 新增 sendCancelNotification() 方法

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 17:16:23 +08:00
root a88944b5e1 refactor: 删除 users 表中未使用的字段
- 删除 report_to(上级ID)字段
- 删除 position(职位)字段
- 更新 User 模型移除相关关联和类型转换
- 更新 BusinessTripService 移除 position 返回

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 16:56:51 +08:00
root fdbe2e837a refactor: 删除 users 表中的冗余飞书字段
- 删除 feishu_user_id, feishu_open_id, tenant_key 字段
- JWT token 改用 feishu_app_id 代替 feishu_user_id
- 删除废弃的 FeishuService::sendApprovalMessage() 方法
- 更新 User 模型移除废弃字段和 scope 方法

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 16:33:58 +08:00
root 0489da5e40 refactor: 重构多飞书应用绑定架构和数据库清理
- 新增 user_feishu_apps 表支持用户绑定多个飞书应用
- users 表添加唯一约束(公司内邮箱/手机唯一)
- 迁移现有飞书数据到 user_feishu_apps 表
- 清理冗余表(users_bak, user_feishu_binding)
- 废弃 users 表中的 feishu_user_id/feishu_open_id/tenant_key 字段
- 更新 FeishuNotificationService 使用新的数据获取方式
- User 模型新增 getFeishuUserId() 等便捷方法

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 16:27:33 +08:00
root 04947ae52d fix: 修复飞书通知模块API路径和卡片格式
- 修改API路径为 /open-apis/im/v1/messages (message/v4已废弃)
- 添加卡片config配置
- 修复content格式(直接传卡片对象,不需要包裹)
- 添加测试接口 /api/v1/test/notification

测试结果: 成功发送通知到李佳博(feishu_user_id: 481g947d)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:27:54 +08:00
root 2e5f570b40 feat: 完善鉴权和密码功能,添加飞书通知模块
- 完善Token过期/不存在时跳转登录重新认证
- 实现正常的账号密码登录验证(邮箱/手机号+密码)
- 用户初始化密码设为工号(sn)
- 添加修改密码功能(API+前端页面)
- 修复扫码登录后跳转问题(zustand persist格式)
- 创建飞书通知服务 FeishuNotificationService
- 设置页面添加修改密码入口

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:19:37 +08:00
root 457b1d75f0 fix: 返回完全空白的响应页面
正常飞书APP内扫码流程:
1. 用户扫码确认授权
2. 飞书APP直接返回主界面(不会打开任何页面)
3. 电脑端通过轮询检测登录成功并自动跳转

redirect_uri 是OAuth协议要求的配置,但飞书APP内扫码时不会真正访问此URL。
只有在浏览器扫码时才会真正跳转,此时返回空白页面。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 11:10:51 +08:00
root ad6984d22a fix: 扫码登录成功后返回空页面并自动关闭
手机端扫码成功后直接关闭并返回飞书,不显示任何页面内容。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 11:08:10 +08:00
root fd364be4b6 fix: 扫码登录成功后返回简单页面,不重定向
移动端扫码完成后显示登录成功页面,用户可直接关闭,
不再重定向到前端页面。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 11:04:31 +08:00
root cd1499cd0f fix: 修正飞书登录回调重定向方法
使用 Webman 全局 redirect() 函数,而不是 Response::redirect()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 11:02:41 +08:00
root a1b395b147 fix: 移除 HttpClient 中的 curl_close() 调用
PHP 8.0+ 中 curl 资源会自动关闭,curl_close() 已被弃用。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 10:45:22 +08:00
root 6899bad529 refactor: 重构飞书授权代码,提取公共工具类
1. 创建 app/util/HttpClient.php
   - 公共 HTTP 请求类
   - httpGet() 和 httpPost() 方法
   - 支持自定义 headers 和 timeout
   - 统一错误处理和日志

2. 创建 app/util/FeishuUtil.php
   - 飞书授权工具类,可被其他业务模块复用
   - getAppAccessToken() - 获取应用访问令牌(带缓存)
   - getUserAccessToken() - 获取用户访问令牌
   - getUserInfo() - 获取用户信息
   - getCompleteUserInfo() - 一步获取完整用户信息
   - clearTokenCache() - 清除 token 缓存

3. 重构 app/service/FeishuService.php
   - 使用新的工具类
   - 移除重复的 HTTP 请求方法
   - 保持向后兼容

飞书授权流程:
1. app_access_token (应用级令牌)
2. user_access_token (用户级令牌,需要 app_access_token)
3. 用户信息 (需要 user_access_token)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 10:43:29 +08:00
root b1d58ece61 fix: 使用飞书官方 passport 授权端点
后端修改:
- 授权 URL 从 open-apis 改为 passport.feishu.cn
- 使用 passport 端点获取 user_access_token
- 添加 httpGet 方法

前端修改:
- 使用官方 tt.requestAuthCode() API(飞书内免登)
- 保留轮询方式实现扫码登录

参考文档: https://open.feishu.cn/document/sso/web-application-sso/qr-sdk-documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 10:20:48 +08:00
root 6357e5dbdc fix: 修复飞书扫码登录 404 问题
1. 后端路由修正
   - 将 /login/qrcode/{id} 移出 /api/v1 路由组
   - 修正路由参数获取方式,使用参数注入而非 getRouteParam()

2. OpenResty 配置
   - 添加 /login/qrcode/ 路径代理到后端

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 10:06:27 +08:00
root df07b16c7a feat: 实现多端飞书登录功能
1. 飞书客户端内:静默自动登录
   - 检测飞书环境 (userAgent + ttjsBridge)
   - 调用 ttjsBridge.getAuthCode() 获取授权码
   - 自动登录到后台

2. 飞书客户端外:扫码登录
   - 后端新增三个接口:
     * POST /api/v1/auth/qrcode-login - 生成登录会话和二维码
     * GET /api/v1/auth/qrcode-login/status - 轮询登录状态
     * GET /login/qrcode/{id} - 飞书授权回调
   - 前端新增 QRCodeLogin 组件:
     * 使用 qrcode.react 生成二维码
     * 每 2 秒轮询登录状态
     * 状态:loading → pending → scanning → success/expired

3. 数据库表:feishu_login_session
   - 存储 session_id, auth_url, status, user_id
   - 状态:pending, scanning, success, expired
   - 2 分钟过期机制

4. 其他优化
   - 移除审批详情页的 header
   - 更新 PROJECT_ISSUES.md 文档

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 09:58:19 +08:00
root 8110b1e5e6 feat: 发起人自动审批通过功能
- 当发起人在审批人列表中时,提交时自动创建审批通过记录
- 根据节点类型判断是否完成:
  - 单人审批(approver):发起人审批后节点完成
  - 或签(or_approve):发起人审批后节点完成
  - 会签(and_approve):需要所有审批人审批才完成
- 节点完成后自动移动到下一节点或完成审批
- 更新 PROJECT_ISSUES.md 记录问题和解决方案

业务逻辑说明:
- 如果发起人选择自己作为唯一审批人,提交后申请直接完成
- 如果有其他审批人,需要其他审批人继续审批

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 09:44:44 +08:00
root ba41b340fc fix: 修复审批列表首次加载不显示和发起人审批人问题
- 移除 loadingRef,解决 React 18 StrictMode 下请求阻塞问题
- 提交申请时根据选择的审批人动态创建/更新审批节点
- 修改申请提交后跳转到审批列表而非出差列表
- 更新 PROJECT_ISSUES.md 记录所有问题和解决方案

修复问题:
1. 首次进入审批列表"我发起的"不显示数据
2. 发起人也是审批人时"待我审批"不显示
3. 申请提交后跳转到错误的页面

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 09:35:26 +08:00
root b7919910f1 docs: 整理项目问题文档,修复审批列表数据混乱
- 新增 PROJECT_ISSUES.md 统一管理所有问题和解决方案
- 精简 CLAUDE.md,移除重复的问题记录部分
- 修复审批列表数据混乱问题(React 18 StrictMode + 状态管理)
- 修复首次加载不显示数据问题(requestIdRef 清理时机)
- 修复页码初始值错误(hasMore 默认值)
- 修复后端响应序列化问题(Eloquent 模型转数组)
- 添加审批人和抄送人重复校验
- 修复双 header 问题
- 调整申请页面 padding-bottom

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 09:12:21 +08:00
root ab62b9839e fix: 清理旧的测试数据,添加调试日志
- 删除所有旧的测试订单(id <= 14)
- 前端添加调试日志,查看请求参数和响应数据
- 后端添加日志,记录接收到的请求参数

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 00:09:36 +08:00