fix: 품목관리 wait_for_table → wait_for_element (테이블 없는 카드 UI 페이지)

This commit is contained in:
김보곤
2026-02-14 11:11:23 +09:00
parent 1ec579a22b
commit 1ecbf88aa8

View File

@@ -1,7 +1,7 @@
{
"id": "workflow-inventory-cycle",
"name": "비즈니스 워크플로우: 품목→입고→재고→출고 흐름",
"version": "1.0.0",
"version": "1.1.0",
"category": "workflow",
"auth": {
"role": "admin"
@@ -23,15 +23,16 @@
},
{
"id": 2,
"name": "[생산 > 품목관리] wait_for_table",
"action": "wait_for_table",
"timeout": 20000
"name": "[생산 > 품목관리] 페이지 로드 확인",
"action": "wait_for_element",
"selector": "text=품목기준관리",
"timeout": 10000
},
{
"id": 3,
"name": "[생산 > 품목관리] CAPTURE_ITEM",
"action": "evaluate",
"script": "(async()=>{const w=ms=>new Promise(r=>setTimeout(r,ms));const R={phase:'CAPTURE_ITEM'};await w(1500);const rows=Array.from(document.querySelectorAll('table tbody tr')).filter(r=>r.offsetParent!==null);R.rowCount=rows.length;if(rows.length===0){R.warn='테이블에 데이터 없음';R.ok=true;return JSON.stringify(R);}const cells=rows[0].querySelectorAll('td');let val='';const indices=[1,2,3];for(const i of indices){ const t=cells[i]?.innerText?.trim(); if(t&&t.length>=2&&t.length<=40&&!/^[\\d,.]+$/.test(t)&&!/^\\d{4}[-/]/.test(t)){val=t;break;}}R.itemName=val;if(!val){R.warn='itemName 추출 실패';R.ok=true;return JSON.stringify(R);}if(!window.__WORKFLOW_CTX__)window.__WORKFLOW_CTX__={};window.__WORKFLOW_CTX__.itemName=val;R.ok=true;R.info='처: '+val;return JSON.stringify(R);})()",
"script": "(async()=>{const w=ms=>new Promise(r=>setTimeout(r,ms));const R={phase:'CAPTURE_ITEM'};await w(1500);const cards=Array.from(document.querySelectorAll('div')).filter(d=>{const t=d.innerText||'';return t.includes('등록')&&(t.includes('CS')||t.includes('RM')||t.includes('SM')||t.includes('PT')||t.includes('FG'))&&t.length<100;});R.cardCount=cards.length;if(cards.length===0){R.warn='페이지 카드 없음';R.ok=true;return JSON.stringify(R);}const first=cards[0];const lines=first.innerText.trim().split('\\n');const name=lines[0]?.trim()||'';R.itemName=name;if(!window.__WORKFLOW_CTX__)window.__WORKFLOW_CTX__={};window.__WORKFLOW_CTX__.itemName=name;R.ok=true;R.info='처: '+name+' (카드 '+cards.length+'개)';return JSON.stringify(R);})()",
"phase": "CAPTURE_ITEM"
},
{