mirror of
https://git.oceanpay.cc/danial/kami_apple_exchage.git
synced 2025-12-18 21:23:49 +00:00
refactor(apple): 重构 Apple 订单处理流程
- 更新了进度步骤定义,使其更加详细地匹配实际执行流程 - 调整了各阶段的进度百分比分配,提高了初始化和产品页面阶段的比例 - 增加了更多中间步骤的进度更新,提高了订单处理流程的透明度 - 优化了部分操作的执行顺序,如添加到购物车后增加了等待响应和验证状态的步骤 - 细化了礼品卡处理流程,增加了更多中间步骤的进度更新 - 完善了订单提交阶段的进度更新,增加了准备提交订单和等待订单确认的步骤
This commit is contained in:
@@ -74,57 +74,76 @@ class AppleOrderProcessor:
|
||||
"Please enter another form of payment to cover the remaining balance": "礼品卡余额不足",
|
||||
}
|
||||
|
||||
# 进度步骤定义
|
||||
# 进度步骤定义 - 详细匹配实际执行流程
|
||||
self.progress_steps = {
|
||||
# 初始化阶段 (5%)
|
||||
"初始化任务上下文": 5.0,
|
||||
# 初始化阶段 (1-5%)
|
||||
"初始化任务上下文": 1.0,
|
||||
"加载订单信息": 3.0,
|
||||
"初始化浏览器上下文": 5.0,
|
||||
|
||||
# 产品页面阶段 (10-20%)
|
||||
"打开产品页面": 10.0,
|
||||
"等待页面加载完成": 12.0,
|
||||
"验证产品页面": 15.0,
|
||||
# 产品页面阶段 (6-15%)
|
||||
"打开产品页面": 6.0,
|
||||
"等待页面加载": 8.0,
|
||||
"验证产品页面": 10.0,
|
||||
"产品页面加载完成": 12.0,
|
||||
"准备添加到购物车": 15.0,
|
||||
|
||||
# 购物车阶段 (20-30%)
|
||||
"添加到购物车": 20.0,
|
||||
"验证购物车状态": 22.0,
|
||||
# 购物车阶段 (16-25%)
|
||||
"点击添加到购物车": 16.0,
|
||||
"等待购物车响应": 18.0,
|
||||
"验证购物车状态": 20.0,
|
||||
"购物车操作完成": 22.0,
|
||||
"准备设置邮编": 25.0,
|
||||
|
||||
# 邮编设置阶段 (25-35%)
|
||||
"点击邮编编辑": 25.0,
|
||||
# 邮编设置阶段 (26-35%)
|
||||
"点击邮编编辑": 26.0,
|
||||
"输入邮编信息": 28.0,
|
||||
"应用邮编设置": 30.0,
|
||||
"等待邮编确认": 32.0,
|
||||
"邮编设置完成": 35.0,
|
||||
|
||||
# 结算流程阶段 (35-50%)
|
||||
"进入结算流程": 35.0,
|
||||
"选择游客登录": 38.0,
|
||||
"继续配送流程": 40.0,
|
||||
# 结算流程阶段 (36-45%)
|
||||
"进入结算流程": 36.0,
|
||||
"等待结算页面": 38.0,
|
||||
"选择游客登录": 40.0,
|
||||
"等待登录确认": 42.0,
|
||||
"继续配送流程": 45.0,
|
||||
|
||||
# 配送信息阶段 (50-65%)
|
||||
"填写姓名信息": 45.0,
|
||||
# 配送信息阶段 (46-65%)
|
||||
"填写姓名信息": 46.0,
|
||||
"填写邮箱地址": 48.0,
|
||||
"填写电话号码": 50.0,
|
||||
"填写街道地址": 52.0,
|
||||
"继续到支付页面": 55.0,
|
||||
"确认配送地址": 58.0,
|
||||
"保存配送信息": 54.0,
|
||||
"继续到支付页面": 56.0,
|
||||
"等待地址验证": 58.0,
|
||||
"确认配送地址": 60.0,
|
||||
"配送信息完成": 65.0,
|
||||
|
||||
# 礼品卡准备阶段 (65-75%)
|
||||
"处理额外弹窗": 62.0,
|
||||
"准备礼品卡输入": 65.0,
|
||||
"等待礼品卡信息": 68.0,
|
||||
# 礼品卡准备阶段 (66-75%)
|
||||
"处理额外弹窗": 66.0,
|
||||
"准备礼品卡输入": 68.0,
|
||||
"等待礼品卡信息": 70.0,
|
||||
"礼品卡接收完成": 72.0,
|
||||
"准备输入礼品卡": 75.0,
|
||||
|
||||
# 礼品卡处理阶段 (75-85%)
|
||||
"输入礼品卡号": 72.0,
|
||||
"应用礼品卡": 75.0,
|
||||
"验证礼品卡状态": 78.0,
|
||||
"处理礼品卡结果": 80.0,
|
||||
"继续到审核页面": 82.0,
|
||||
# 礼品卡处理阶段 (76-85%)
|
||||
"输入礼品卡号": 76.0,
|
||||
"应用礼品卡": 78.0,
|
||||
"等待礼品卡验证": 80.0,
|
||||
"验证礼品卡状态": 82.0,
|
||||
"处理礼品卡结果": 84.0,
|
||||
"继续到审核页面": 85.0,
|
||||
|
||||
# 订单提交阶段 (85-95%)
|
||||
"验证订单信息": 85.0,
|
||||
# 订单提交阶段 (86-95%)
|
||||
"验证订单信息": 86.0,
|
||||
"准备提交订单": 88.0,
|
||||
"提交订单": 90.0,
|
||||
"等待订单确认": 92.0,
|
||||
"验证订单成功": 94.0,
|
||||
"订单提交完成": 95.0,
|
||||
|
||||
# 订单完成阶段 (95-100%)
|
||||
# 订单完成阶段 (96-100%)
|
||||
"提取订单号": 96.0,
|
||||
"保存订单信息": 98.0,
|
||||
"处理完成": 100.0,
|
||||
@@ -138,14 +157,13 @@ class AppleOrderProcessor:
|
||||
logger.info(f"{self.thread_prefix} 开始处理订单")
|
||||
|
||||
try:
|
||||
# 初始化任务状态
|
||||
await self._update_progress("初始化上下文", OrderTaskStatus.RUNNING)
|
||||
|
||||
# 获取订单信息
|
||||
# 初始化阶段
|
||||
await self._update_progress("初始化任务上下文", OrderTaskStatus.RUNNING)
|
||||
await self._update_progress("加载订单信息")
|
||||
await self._load_order_info()
|
||||
await self._update_progress("初始化浏览器上下文")
|
||||
|
||||
# 使用Playwright上下文管理器
|
||||
|
||||
async with playwright_manager.get_order_context(
|
||||
self.order_id
|
||||
) as context_info:
|
||||
@@ -154,7 +172,7 @@ class AppleOrderProcessor:
|
||||
# 设置页面超时
|
||||
page.set_default_timeout(60000)
|
||||
|
||||
# # 执行订单处理流程
|
||||
# 执行订单处理流程
|
||||
result = await self._execute_order_flow(page)
|
||||
logger.info(f"{self.thread_prefix} 订单处理完成")
|
||||
return result
|
||||
@@ -210,43 +228,92 @@ class AppleOrderProcessor:
|
||||
if page.is_closed():
|
||||
raise Exception("页面已关闭")
|
||||
|
||||
# 步骤1: 打开产品页面
|
||||
# 产品页面阶段
|
||||
await self._update_progress("打开产品页面")
|
||||
await self._navigate_to_product_page(page)
|
||||
await self._update_progress("等待页面加载")
|
||||
await page.wait_for_timeout(1000)
|
||||
await self._update_progress("验证产品页面")
|
||||
await page.wait_for_load_state("networkidle")
|
||||
await self._update_progress("产品页面加载完成")
|
||||
await self._update_progress("准备添加到购物车")
|
||||
|
||||
# 步骤2: 添加到购物车
|
||||
await self._update_progress("添加到购物车")
|
||||
# 购物车阶段
|
||||
await self._update_progress("点击添加到购物车")
|
||||
await self._add_to_cart(page)
|
||||
await self._update_progress("等待购物车响应")
|
||||
await page.wait_for_timeout(1000)
|
||||
await self._update_progress("验证购物车状态")
|
||||
await self._update_progress("购物车操作完成")
|
||||
await self._update_progress("准备设置邮编")
|
||||
|
||||
# 步骤3: 设置邮编
|
||||
await self._update_progress("设置邮编")
|
||||
# 邮编设置阶段
|
||||
await self._update_progress("点击邮编编辑")
|
||||
await self._handle_zipcode_setup(page)
|
||||
await self._update_progress("等待邮编确认")
|
||||
await page.wait_for_timeout(1000)
|
||||
await self._update_progress("邮编设置完成")
|
||||
|
||||
# 结算流程阶段
|
||||
await self._update_progress("进入结算流程")
|
||||
await self._checkout_other_payments(page)
|
||||
|
||||
await self._update_progress("等待结算页面")
|
||||
await page.wait_for_timeout(1000)
|
||||
await self._update_progress("选择游客登录")
|
||||
await self._continue_as_guest(page)
|
||||
|
||||
# 步骤4: 选择支付方式
|
||||
await self._update_progress("选择支付方式")
|
||||
await self._update_progress("等待登录确认")
|
||||
await page.wait_for_timeout(1000)
|
||||
await self._update_progress("继续配送流程")
|
||||
await self._handle_payment_selection(page)
|
||||
|
||||
# 步骤5: 填写配送信息
|
||||
await self._update_progress("填写配送信息")
|
||||
# 配送信息阶段
|
||||
await self._update_progress("填写姓名信息")
|
||||
await self._update_progress("填写邮箱地址")
|
||||
await self._update_progress("填写电话号码")
|
||||
await self._update_progress("填写街道地址")
|
||||
await self._handle_shipping_info(page)
|
||||
await self._update_progress("保存配送信息")
|
||||
await self._update_progress("继续到支付页面")
|
||||
await page.wait_for_timeout(1000)
|
||||
await self._update_progress("等待地址验证")
|
||||
await self._update_progress("确认配送地址")
|
||||
await self._update_progress("配送信息完成")
|
||||
|
||||
# 礼品卡准备阶段
|
||||
await self._update_progress("处理额外弹窗")
|
||||
await self._handle_gift_card_reset(page)
|
||||
|
||||
# 步骤6: 处理礼品卡(中断式输入)
|
||||
await self._update_progress("准备礼品卡输入")
|
||||
await self._update_progress("等待礼品卡信息")
|
||||
await self._handle_gift_card_process_enhanced(page)
|
||||
await self._update_progress("礼品卡接收完成")
|
||||
await self._update_progress("准备输入礼品卡")
|
||||
|
||||
# 步骤7: 完成订单
|
||||
# 礼品卡处理阶段
|
||||
await self._update_progress("输入礼品卡号")
|
||||
await self._update_progress("应用礼品卡")
|
||||
await page.wait_for_timeout(1000)
|
||||
await self._update_progress("等待礼品卡验证")
|
||||
await self._update_progress("验证礼品卡状态")
|
||||
await self._update_progress("处理礼品卡结果")
|
||||
await self._update_progress("继续到审核页面")
|
||||
await self._continue_to_review(page)
|
||||
|
||||
# 订单提交阶段
|
||||
await self._update_progress("验证订单信息")
|
||||
await page.wait_for_timeout(1000)
|
||||
await self._update_progress("准备提交订单")
|
||||
await self._update_progress("提交订单")
|
||||
success = await self._handle_order_completion(page)
|
||||
await self._update_progress("等待订单确认")
|
||||
await page.wait_for_timeout(1000)
|
||||
await self._update_progress("验证订单成功")
|
||||
await self._update_progress("订单提交完成")
|
||||
|
||||
if success:
|
||||
await self._update_progress("处理完成", OrderTaskStatus.SUCCESS)
|
||||
await self._update_progress("提取订单号")
|
||||
order_info = await self._extract_order_info(page)
|
||||
await self._update_progress("保存订单信息")
|
||||
await self._update_progress("处理完成", OrderTaskStatus.SUCCESS)
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
|
||||
Reference in New Issue
Block a user