fix(listings): ToolsTab 제출·disclaimer 테스트 추가 + 수집 완료 폴링
최종 리뷰 반영: (1) ToolsTab 제출→중첩객체·disclaimer 렌더 경로 테스트 2건 추가(최고위험 미검증 경로), (2) handleCollect의 고정 3초 타임아웃을 collected_at 변경 기반 폴링(최대 60s)으로 교체 — 진행 중을 완료로 오표시 하지 않도록. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
This commit is contained in:
@@ -68,13 +68,30 @@ const ListingsTab = () => {
|
||||
|
||||
const handleCollect = async () => {
|
||||
setCollecting(true);
|
||||
setError('');
|
||||
const prevAt = collectStatus?.collected_at ?? null;
|
||||
try {
|
||||
await collectListings();
|
||||
setTimeout(() => { loadStatus(); load(); setCollecting(false); }, 3000);
|
||||
} catch (e) {
|
||||
setError(e?.message ?? String(e));
|
||||
setCollecting(false);
|
||||
return;
|
||||
}
|
||||
let tries = 0;
|
||||
const poll = async () => {
|
||||
tries += 1;
|
||||
let st = null;
|
||||
try { st = await getListingsCollectStatus(); } catch { /* noop */ }
|
||||
if (st) setCollectStatus(st);
|
||||
const done = st && (st.collected_at !== prevAt || st.error);
|
||||
if (done || tries >= 12) {
|
||||
setCollecting(false);
|
||||
load();
|
||||
return;
|
||||
}
|
||||
window.setTimeout(poll, 5000);
|
||||
};
|
||||
window.setTimeout(poll, 5000);
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user