youxinpai-reconciliation
# 优信拍月初对账
用于高性能处理优信拍业务保证金月初对账前的任务触发工作,并在任务完成后执行指定 SQL 查询。
本技能默认只负责触发前置任务、记录执行结果、反馈异常;不默认替代后续人工核对或财务口径确认。
## 适用场景
当用户有以下意图时使用本技能:
- 执行优信拍月初对账
- 推送某月保证金数据
- 跑优信拍保证金对账前置任务
- 检查优信拍对账依赖任务是否已触发
## 前置条件
- 已存在可复用的登录态
- 可以访问星河任务页 `https://dp.58corp.com/data-develop/task-list`
- 可以访问 SQL 页面 `https://dp.58corp.com/data-query?doc_ids=530490`
- 当前目标是触发任务,而不是直接输出最终财务对账结论
- 可以访问本地工程 `/Users/a58/Desktop/code/yxp_oms_web`
如果登录失效、页面无法打开、没有权限访问,立即停止并汇报,不要自行猜测下一步。
## 任务列表
下面 5 个任务互不依赖,可并行处理:
1. `raw_auction_guafundaccountdetail_all_d`
2. `raw_auction_auctionguafundbill_all_h`
3. `raw_auction_guarantee_withdraw_apply_all_d`
4. `ods_auction_refund_order_all_d`
5. `raw_auction_payment_order2_all_d`
## 执行原则
- 必须先完成本地单测前置步骤,再进入页面任务步骤
- 上月时间区间只计算一次,后续步骤复用同一组时间变量
- 搜索框优先使用 `placeholder="搜索任务名"` 对应的 input
- 搜索出结果后,先定位“包含当前任务名的结果行”,后续所有查找都只在当前结果行内完成
- 开启状态优先使用 `<span class="ant-switch-inner">开启</span>` 判断
- 运行按钮优先使用当前结果行内的 `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/yxp_oms_web/src/test/resources/config/scf.config` 中 `yxpbuyerservice` 的 `host`,并记录原值到 `originalBuyerServiceHost`
3. 如果 `host` 不是 `10.192.12.236`,先修改为 `10.192.12.236`
4. 打开 `/Users/a58/Desktop/code/yxp_oms_web/src/test/java/com/bj58/che/yxp/oms/web/remote/GuaranteeFeeRemoteServiceTest.java`
5. 在 `testFindUnmatchedBillIds` 中,将两个时间参数改为 `monthStart` 和 `monthEnd` 对应值
6. 只执行 `testFindUnmatchedBillIds` 这个单测函数
7. 单测成功后,进入等待步骤;单测失败则停止整个流程并汇报
## 固定选择器顺序
按下面顺序查找元素,前一个成功就不要继续尝试更慢的方式:
1. 搜索框:`input[placeholder="搜索任务名"]`
2. 结果行:包含当前任务名文本的结果行
3. 开启状态:当前结果行内的 `span.ant-switch-inner`
4. 运行按钮:当前结果行内的 `span.iconzanting2.iconfont`
5. 确认按钮:`button.ant-btn.ant-btn-primary`
6. 只有在上述方式失败时,才退回到基于按钮文案或页面语义的兜底判断
## 执行状态提示规范
在关键阶段必须输出状态提示,让使用者可见当前进度。至少包含:
1. 当前步骤编号与名称
2. 当前状态(开始/执行中/等待中/等待结束/完成/中断)
3. 下一个动作
提示要求:
- 进入每个步骤时,先提示“开始执行步骤X”
- 遇到等待步骤时,必须提示“开始等待”与“等待剩余时间”
- 等待结束后,必须提示“等待结束,继续执行下一步骤”
- 发生中断时,必须提示“中断原因 + 当前步骤 + 建议下一步”
## 执行清单
开始执行前,先在内部维护下面这份进度清单,并在每处理完一个任务后立即更新:
```markdown
任务执行清单
- [ ] raw_auction_guafundaccountdetail_all_d
- [ ] raw_auction_auctionguafundbill_all_h
- [ ] raw_auction_guarantee_withdraw_apply_all_d
- [ ] ods_auction_refund_order_all_d
- [ ] raw_auction_payment_order2_all_d
```
勾选规则:
- 只要当前任务已经完成“搜索、检查、触发或确认无法触发、记录结果”这一整套动作,才能勾选
- “勾选”不等于“成功触发”,也可以表示“已检查但失败,且已记录原因”
- 如果清单里还有未勾选项,不要结束,不要汇总,不要告诉用户“已完成”
## 执行流程
### 步骤0:执行本地单测前置步骤
按 `本地前置步骤(必须先完成)` 小节逐项执行。
### 步骤1:等待 5 分钟
- 步骤0成功结束后,立即开始计时 5 分钟
- 5 分钟未到,不得进入后续页面任务步骤
- 如果等待阶段出现环境异常,停止流程并汇报
状态提示模板:
- 开始等待:`[步骤1] 已开始等待5分钟(单测后冷却期),当前状态:等待中`
- 等待中:`[步骤1] 等待中,剩余 X 分 Y 秒,完成后将进入步骤2`
- 等待结束:`[步骤1] 等待结束,当前状态:完成,继续执行步骤2`
### 步骤2:进入任务页
- 复用现有登录态打开星河任务页
- 确认页面已正常加载,且可以看到任务搜索区域
- 优先确认 `input[placeholder="搜索任务名"]` 存在;存在即视为页面可操作
### 步骤3:并行处理 5 个任务(可降级串行)
1. 先判断是否可创建独立会话:
- 可创建独立会话:并行执行 5 个任务
- 不可创建独立会话:改为串行逐个执行 5 个任务
2. 并行模式下,为 `任务列表` 中每个任务启动独立执行单元;串行模式下单线程逐个处理
3. 每个执行单元仅处理自己的任务名,避免互相覆盖搜索条件
4. 在各自单元中执行:搜索任务名 -> 定位匹配行 -> 判断“开启” -> 点击“运行” -> 弹窗点“确定”
5. 每个执行单元持续处理本任务的全部可运行实例,直到本任务完成
6. 每个执行单元完成后立刻记录结果并更新 `任务执行清单`
7. 等待全部 5 个任务处理结束后,再统一汇总结果
### 步骤3.1:单任务最短路径
每个任务都遵循下面的最短路径,不要额外扩展步骤:
1. 搜索任务名
2. 找到对应结果行
3. 判断是否“开启”
4. 点击“运行”
5. 点击“确定”
6. 记录结果
7. 进入下一个实例;当前任务完成后结束该单元
禁止出现以下低效行为:
- 将 5 个任务强制串行排队执行
- 搜索一次后反复全页查找按钮
- 每点击一次都重新理解整个页面结构
- 点击“确定”后长时间等待任务跑完
- 在全部任务未完成前提前汇总
### 步骤4:处理异常
出现以下情况时,停止当前任务并明确汇报:
- 本地配置修改失败
- 单测执行失败
- 步骤1等待未完成就进入后续步骤
- 步骤5触发前 10 分钟等待未完成就执行 SQL
- 并行执行环境不可用但未降级为串行
- 搜索不到任务
- 页面没有可操作的“运行”入口
- 点击后没有出现确认弹窗
- 弹窗确认失败
- SQL 页面不可访问
- SQL 执行失败
- 页面报错、权限异常、登录失效
异常处理规则:
- 如果步骤0的配置检查/修改或单测失败,停止整个流程,不进入步骤1之后的页面任务
- 步骤1的 5 分钟等待未完成前,禁止开始步骤2和步骤3
- 前面步骤完成后未满足额外 10 分钟等待,禁止触发步骤5
- 并行能力不可用时必须降级串行,不得直接跳过任务
- 如果是“当前任务级别”的异常,记录原因并结束该任务单元,其他并行任务继续执行
- 如果 SQL 步骤失败,停止流程并汇报,不输出“执行完成”
- 如果是“页面整体不可继续操作”的异常,例如登录失效、页面崩溃、权限缺失,则停止整个流程并汇报
- 不要在异常状态下自行跳过并假设成功
- 如果只是 class 选择器短暂失效,先在当前结果行内用文本语义做一次兜底,不要立刻回退到全页面扫描
### 步骤5:执行 SQL 并运行
在步骤0-步骤3全部完成后,先额外等待 10 分钟,再执行以下流程:
1. 打开 `https://dp.58corp.com/data-query?doc_ids=530490`
2. 定位 SQL 编辑器(包含 `t1.BillCreateTime` 和 `t3.pay_time` 的查询语句)
3. 将 SQL 里 `t1.BillCreateTime` 和 `t3.pay_time` 的时间范围统一改为 `monthStart` 和 `monthEnd`
4. 校验两处时间都已替换完成,再点击“运行”
5. 等待 SQL 执行结果状态返回(成功/完成),并确认无报错提示
6. 记录 SQL 执行结果(成功/失败、失败原因)
执行限制:
- 不得只改其中一个字段,`t1.BillCreateTime` 与 `t3.pay_time` 必须同时改
- 10 分钟等待未完成前,不得进入本步骤
- SQL 未修改完成前,不得点击“运行”
- 如果 SQL 页面不可访问或运行失败,停止流程并汇报
状态提示模板:
- 开始等待:`[步骤5] 已开始等待10分钟(SQL触发前冷却期),当前状态:等待中`
- 等待中:`[步骤5] 等待中,剩余 X 分 Y 秒,完成后将修改SQL并运行`
- 等待结束:`[步骤5] 等待结束,当前状态:执行中,开始修改 t1.BillCreateTime 与 t3.pay_time`
- SQL运行成功:`[步骤5] SQL已运行成功,当前状态:完成,继续执行步骤6`
### 步骤6:恢复本地配置(如有改动)
1. 检查 `originalBuyerServiceHost` 与当前 `yxpbuyerservice.host` 是否一致
2. 如果步骤0中修改过 host,则将 `yxpbuyerservice.host` 恢复为 `originalBuyerServiceHost`
3. 记录恢复结果(成功/失败);恢复失败需要明确汇报并提示人工处理
## 结果记录要求
执行过程中,至少记录以下信息:
- 本地配置检查结果(`yxpbuyerservice.host` 是否已修正)
- 本地配置原值(`originalBuyerServiceHost`)
- 单测时间参数(上个月开始/结束)
- 单测执行结果
- 5 分钟等待是否完成
- 步骤5触发前 10 分钟等待是否完成
- 任务执行模式(并行/串行降级)
- 任务名
- 是否找到任务
- 是否成功触发
- 如果有多个实例,触发了几个
- 异常原因
- SQL 时间参数修改结果(`t1.BillCreateTime`、`t3.pay_time`)
- SQL 运行结果
- 本地配置恢复结果
建议按下面格式维护结果表:
```markdown
任务结果表
| 任务名 | 是否找到 | 是否触发 | 触发实例数 | 备注 |
| --- | --- | --- | --- | --- |
| raw_auction_guafundaccountdetail_all_d | 是 | 是 | 2 | 全部已触发 |
| raw_auction_auctionguafundbill_all_h | 是 | 否 | 0 | 无可运行实例 |
```
## 完成判定
只有同时满足以下条件,才可以输出“执行完成”:
1. 步骤0已完成(配置检查/修正 + 单测执行成功)
2. 步骤1已完成(等待 5 分钟)
3. `任务执行清单` 中 5 个任务都已勾选
4. `任务结果表` 中 5 个任务都有对应记录
5. 已明确区分哪些任务“成功触发”、哪些任务“检查完成但未触发”
6. 步骤5触发前额外等待 10 分钟已完成
7. 步骤5已完成(SQL 时间已更新并点击运行成功)
8. 步骤6已完成(配置已恢复或确认无需恢复)
如果不满足以上条件,只能输出“执行中断”或“部分完成”,不能输出“已完成”。
## 输出格式
完成后按下面格式输出结果:
```markdown
优信拍月初对账前置任务执行结果
- 执行页面:星河任务页
- 已成功触发:
- 任务A
- 任务B
- 未成功触发:
- 任务C:原因
- 需要人工关注:
- 是否存在权限/登录/页面异常
- 是否可以继续进入下一步对账
```
## 注意事项
- 本技能的目标是“触发并汇报”,不是“静默执行”
- 本地单测前置步骤属于强门槛,未完成前不得进入页面任务步骤
- 如果页面元素与预期不一致,应先在当前结果行范围内做兜底判断,不要立刻扩大到全页面
- 如果用户明确要求继续产出对账结果,先完成本技能中的任务触发,再进入后续数据核对流程
- 整个执行过程中,优先级始终是:固定选择器 > 当前结果行局部查找 > 文案兜底 > 全页面语义分析
- 所有页面任务完成后,必须执行 SQL 修改与运行步骤,不得省略
- 默认优先并行;并行条件不满足时必须串行降级,不得跳过任务
- 若步骤0中修改过本地配置,流程结束必须恢复原值
标签
skill
ai