Skip to content

feat(abm): 시뮬 큐 + 대기화면 정보 + 마포 전역 wander + UI polish#190

Merged
bat1120 merged 5 commits into
devfrom
IM3-abm-queue-ui
May 4, 2026
Merged

feat(abm): 시뮬 큐 + 대기화면 정보 + 마포 전역 wander + UI polish#190
bat1120 merged 5 commits into
devfrom
IM3-abm-queue-ui

Conversation

@bat1120

@bat1120 bat1120 commented May 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • ABM single-job → sequential queue (pendingQueue + enqueueAbm + auto-process). 진행 중 spot1 두고 spot2 시뮬 enqueue 가능.
  • 대기화면 정보 보강: SpotInfoCard (주소/지하철/매물수/동 통계/경쟁업체/brand fit), PersonaPreviewStream (카테고리별 샘플 페르소나 6초 rotate).
  • 마포 전역 wander: 시뮬 진행 중 agents 가 마포 polygon bbox 안 random pixel 로 끊임없이 분산 (한 동 cluster 회피).
  • UI polish: InfoTooltip 좌측 잘림 fix (left-1/2 → left-0), Hub 카드 description "100명 → 5,000명 에이전트", 시나리오 form 좌측 패널 하단 stretch + 실행 버튼 sticky bottom.
  • legal.py: cache v8→v9 + 운영 카테고리 5종 risks 제거 (15→10, fallback caution 부풀림 방지).
  • corp_brand_resolver INDUSTRY_NOT_OPERATED 차단 로직 일체 제외 (dev 의 revert d8c48ac / 78367b4 와 정합).

Test plan

  • ABM 페이지 진입 → spot 클릭 → 시나리오 form 표시
  • 시뮬 실행 → 우하단 queue 패널 "실행 중" 표시
  • 지도로 돌아가기 → 다른 spot 클릭 → 시나리오 form 표시 (queue 추가 가능)
  • 시뮬 진행 중 agents 가 마포 전역 분산 (한 동 cluster 안 됨)
  • 첫 시뮬 완료 → 두 번째 시뮬 자동 시작
  • queue 완료 항목 클릭 → 결과 view (active sim 보존)
  • InfoTooltip ! 호버 → 우측 펼침 (좌측 잘림 X)
  • 새로고침 후 pendingQueue / 진행 중 sim 복원

🤖 Generated with Claude Code

Knockcha and others added 5 commits May 5, 2026 02:58
- 회원가입 hover fill: Vibrant Purple #b35cff (chart-4) → Indigo #4f46e5
- 초대코드 항상 fill: Teal Green #00ba7a (success) → Sky Blue #3b82f6
- 로그인(brand primary Deep Blue #002CD1)은 그대로 유지
- 세 액션이 같은 Blue family 안에서 명도순으로 갈라짐 (Deep Blue → Indigo → Sky Blue)
- 색동저고리 톤(보라/초록/파랑 mix)에서 brand family 단일계로 회수

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 섹션 순서: § 01 Multi-Agent ↔ § 02 ML Models 자리 바꿈 — ML 이 먼저 무대로 (정량 예측 레이어가 상위)
- AgentRoster 색 swap: Synthesis = brand Deep Blue #002CD1 (최상위 통합 판단), Market = Vivid Orange #f97316 (light bg 가독성 + Amber/Legal 와 hue 분리)
- Hero metric 4 박스: 세로 stack → 좌(label + sub) / 우(큰 숫자값) 좌우 분할
- Hero metric strip + ML 6 카드 outer 모두 cool gray (bg-secondary) 통일
- 페이지 상단 'System Online · 9/9 agents · build · last sync' status bar 제거 — 글로벌 header 바로 아래 Hero 직진입
- 데이터 출처 chip 한글 표기는 sans(Pretendard) 유지 — JetBrains Mono 와 한글 글자폭 mismatch 회피

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- PipelineKanbanView: useAuth().brand?.brand_name || user?.company_name || '본사' 로 11 카드 brand 일괄 override
  (주)앤하우스 같은 본사 계정에서 김밥천국/저가커피 같은 외부 브랜드가 워크스페이스에 노출되던 위화감 차단
- '시연용 mock 파이프라인' notice 박스 (Pipeline 페이지 상단) 삭제
- '시연용 mock 데이터' notice 박스 (Settings 페이지 상단) 삭제
- B2B 운영 톤 정돈 — backend 연동 후 동/업종/매출 mock 도 자연스럽게 실데이터로 대체될 자리

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…secondary)

5 카드 outer wrapper 를 '상권 지리 정보' 와 동일 form 으로 통일:
- 8대 핵심 상권 지표 / 동별 랭킹 / 에이전트 분석 요약 / 유동인구 × 매출 상관 / 차별화 포지셔닝
- bg-card border rounded-[40px] p-6 + h3 italic + Icon size 20 + sub 설명 + 우측 badge 영역

퐁당퐁당 룰 정합 (outer 흰색 ↔ inner 쿨그레이, 의미 색은 텍스트/아이콘에만):
- DifferentiationCard 자체 outer/header 제거 → MarketTab wrapper 가 헤더 제공, bare content 만 렌더
- DifferentiationCard 기회/리스크: bg-success/5·bg-danger/5 → bg-secondary (의미 색은 text-success/text-danger 만)
- IndustryClosureTrendCard outer/inner 모두 bg-card/40 (퐁당 안 됨) → outer=card / inner KPI=secondary
- CannibalizationDistanceChart outer: bg-secondary → bg-card (같은 row 톤 통일)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ABM 시뮬을 single-job → sequential queue 로 확장 + 대기 시간 정보 보강 +
지도 시각화 분산 fix + InfoTooltip 위치 fix + Hub 카드 카운트 정정.

abmStore (queue infrastructure):
- pendingQueue + enqueueAbm/cancelPending/clearPending/_processNextInQueue
  active 종료 시 자동 pop → 순차 실행
- displayResult/displayFocusSpot 채널 분리 — loadHistory 가 active sim 의
  status/result 덮어쓰지 않게 (history view 안전)
- partialize 확장: pendingQueue 보존 (새로고침 후 큐 유지)

AbmQueuePanel (신규): 우하단 화이트 패널, 실행/대기/완료 list 표시.
완료 클릭 → loadHistory 로 결과 view (active sim 보존).

SpotInfoCard (신규): 선택 spot 컨텍스트 카드 (주소·지하철·매물수·동 통계·
경쟁업체·brand fit). horizontal layout = 지도 아래 4-column.

PersonaPreviewStream (신규) + personaSampleDialogs.ts: 시뮬 진행 중
카테고리별 샘플 페르소나 대화 6초 rotate (cafe/restaurant/pub/convenience/
default × 8개). "샘플" 명시.

AbmPersonaMap:
- storeNodes 분기 변경: abmResult 없으면 spots-all (마포 16동 × 5)
  → 시뮬 전 + 진행 중 agents 마포 전역 분산
- wander mode: agents 가 도착 후 마포 polygon bbox (Kakao projection
  hard-coded fallback) random pixel 로 끊임없이 wander → 한 동 cluster 회피
- isRunningCurrentSpot: 시뮬 진행 중 다른 spot 클릭 시 progress 숨기고
  시나리오 form 표시 (queue 추가 가능)
- 우하단 grid 분할: abmResult 시 metric 4-card + queue panel,
  없을 시 queue panel 풀폭
- min-h-0 추가 → bottom row content 가 map 영역 침범 방지

AbmTab:
- enqueueAbm 사용 (startAbm 직접 호출 제거)
- handleAgentMapSpotClick/handleAbmSpotClick: cancelAbm 제거 +
  dismissResult/clearDisplayResult (status=done/error 일 때만)
- handleClearResult: cancelAbm 제거 — 진행 중 sim background 유지
- dongStats prop 전달 (floating_pop, closure_rate)

InfoTooltip: left-1/2 -translate-x-1/2 → left-0 — 좁은 좌측 패널에서
좌측 잘림 방지 (우측 펼침)

DashboardHub: ABM 카드 description "100명 → 5,000명 에이전트"

legal.py: cache_key v8 → v9 + risks 15→10 (운영 카테고리 5종 제거 —
fallback caution 부풀림 방지, frontend 카운트 동기화)

DB 변경: 0
신규 endpoint: 0

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bat1120 bat1120 merged commit 3805abf into dev May 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants