优信拍月初对账
用于高性能处理优信拍业务保证金月初对账前的任务触发工作,并在任务完成后执行指定 SQL 查询。
本技能默认只负责触发前置任务、记录执行结果、反馈异常;不默认替代后续人工核对或财务口径确认。
适用场景
当用户有以下意图时使用本技能:
- - 执行优信拍月初对账
- 推送某月保证金数据
- 跑优信拍保证金对账前置任务
- 检查优信拍对账依赖任务是否已触发
前置条件
- - 已存在可复用的登录态
- 可以访问星河任务页 https://dp.58corp.com/data-develop/task-list
- 可以访问 SQL 页面 https://dp.58corp.com/data-query?docids=530490
- 当前目标是触发任务,而不是直接输出最终财务对账结论
- 可以访问本地工程 /Users/a58/Desktop/code/yxpoms_web
如果登录失效、页面无法打开、没有权限访问,立即停止并汇报,不要自行猜测下一步。
任务列表
下面 5 个任务互不依赖,可并行处理:
- 1. rawauctionguafundaccountdetailalld
- rawauctionauctionguafundbillallh
- rawauctionguaranteewithdrawapplyalld
- odsauctionrefundorderalld
- rawauctionpaymentorder2alld
执行原则
- - 必须先完成本地单测前置步骤,再进入页面任务步骤
- 上月时间区间只计算一次,后续步骤复用同一组时间变量
- 搜索框优先使用 placeholder=搜索任务名 对应的 input
- 搜索出结果后,先定位包含当前任务名的结果行,后续所有查找都只在当前结果行内完成
- 开启状态优先使用 开启 判断
- 运行按钮优先使用当前结果行内的 span.iconzanting2.iconfont
- 确认按钮优先使用 button.ant-btn.ant-btn-primary,并校验按钮文本包含确定
- 除搜索框外,不要在整个页面范围内重复查找开启运行确定
- 每个任务都要单独搜索,不要假设上一次搜索结果仍然有效
- 如果同一个任务搜索结果中有多个开启/可运行的实例,需要逐个触发,直到当前搜索结果中的可运行实例全部处理完成
- 每完成一个任务,都要记录结果,避免最后无法说明哪些已执行、哪些失败
- 5 个任务没有先后依赖;仅在支持独立会话时并行,否则自动降级为串行
- 不要因为某个任务先完成就提前结束;只有 任务列表 中 5 个任务都被检查并记录状态后,才允许结束本技能
- 页面任务全部完成后,必须继续执行 SQL 步骤:修改时间条件并点击运行
- 步骤5必须在前面所有步骤完成后额外等待 10 分钟才能触发
高性能策略
- - 本技能目标是快速触发任务,不是等待任务实际执行完成
- 每个任务只做一次搜索输入,不要反复清空、反复全页分析
- 搜索后只等待结果区变化,不做长时间固定等待
- 点击运行后只等待确认弹窗出现,不重新扫描任务列表
- 点击确定后只确认弹窗关闭或按钮状态变化,不等待任务跑完
- 并行场景下,单任务执行单元只关注自己任务的全量实例;不要等待其他任务完成
- 记录结果时使用最简表格或简短状态,不在执行过程中生成长段说明
本地前置步骤(必须先完成)
在执行页面任务前,先执行下面流程:
- 1. 计算并保存统一时间变量:
- monthStart = 上个月第一天 00:00:00
- monthEnd = 上个月最后一天 23:59:59
- 2. 检查配置文件 /Users/a58/Desktop/code/yxpomsweb/src/test/resources/config/scf.config 中 yxpbuyerservice 的 host,并记录原值到 originalBuyerServiceHost
- 如果 host 不是 10.192.12.236,先修改为 10.192.12.236
- 打开 /Users/a58/Desktop/code/yxpomsweb/src/test/java/com/bj58/che/yxp/oms/web/remote/GuaranteeFeeRemoteServiceTest.java
- 在 testFindUnmatchedBillIds 中,将两个时间参数改为 monthStart 和 monthEnd 对应值
- 只执行 testFindUnmatchedBillIds 这个单测函数
- 单测成功后,进入等待步骤;单测失败则停止整个流程并汇报
固定选择器顺序
按下面顺序查找元素,前一个成功就不要继续尝试更慢的方式:
- 1. 搜索框:input[placeholder=搜索任务名]
- 结果行:包含当前任务名文本的结果行
- 开启状态:当前结果行内的 span.ant-switch-inner
- 运行按钮:当前结果行内的 span.iconzanting2.iconfont
- 确认按钮:button.ant-btn.ant-btn-primary
- 只有在上述方式失败时,才退回到基于按钮文案或页面语义的兜底判断
执行状态提示规范
在关键阶段必须输出状态提示,让使用者可见当前进度。至少包含:
- 1. 当前步骤编号与名称
- 当前状态(开始/执行中/等待中/等待结束/完成/中断)
- 下一个动作
提示要求:
- - 进入每个步骤时,先提示开始执行步骤X
- 遇到等待步骤时,必须提示开始等待与等待剩余时间
- 等待结束后,必须提示等待结束,继续执行下一步骤
- 发生中断时,必须提示中断原因 + 当前步骤 + 建议下一步
执行清单
开始执行前,先在内部维护下面这份进度清单,并在每处理完一个任务后立即更新:
markdown
任务执行清单
- - [ ] rawauctionguafundaccountdetailalld
- [ ] rawauctionauctionguafundbillallh
- [ ] rawauctionguaranteewithdrawapplyalld
- [ ] odsauctionrefundorderalld
- [ ] rawauctionpaymentorder2alld
勾选规则:
- - 只要当前任务已经完成搜索、检查、触发或确认无法触发、记录结果这一整套动作,才能勾选
- 勾选不等于成功触发,也可以表示已检查但失败,且已记录原因
- 如果清单里还有未勾选项,不要结束,不要汇总,不要告诉用户已完成
执行流程
步骤0:执行本地单测前置步骤
按 本地前置步骤(必须先完成) 小节逐项执行。
步骤1:等待 5 分钟
- - 步骤0成功结束后,立即开始计时 5 分钟
- 5 分钟未到,不得进入后续页面任务步骤
- 如果等待阶段出现环境异常,停止流程并汇报
状态提示模板:
- - 开始等待:[步骤1] 已开始等待5分钟(单测后冷却期),当前状态:等待中
- 等待中:[步骤1] 等待中,剩余 X 分 Y 秒,完成后将进入步骤2
- 等待结束:[步骤1] 等待结束,当前状态:完成,继续执行步骤2
步骤2:进入任务页
- - 复用现有登录态打开星河任务页
- 确认页面已正常加载,且可以看到任务搜索区域
- 优先确认 input[placeholder=搜索任务名] 存在;存在即视为页面可操作
步骤3:并行处理 5 个任务(可降级串行)
- 1. 先判断是否可创建独立会话:
- 可创建独立会话:并行执行 5 个任务
- 不可创建独立会话:改为串行逐个执行 5 个任务
- 2. 并行模式下,为 任务列表 中每个任务启动独立执行单元;串行模式下单线程逐个处理
- 每个执行单元仅处理自己的任务名,避免互相覆盖搜索条件
- 在各自单元中执行:搜索任务名 -> 定位匹配行 -> 判断开启 -> 点击运行 -> 弹窗点确定
- 每个执行单元持续处理本任务的全部可运行实例,直到本任务完成
- 每个执行单元完成后立刻记录结果并更新 任务执行清单
- 等待全部 5 个任务处理结束后,再统一汇总结果
步骤3.1:单任务最短路径
每个任务都