Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
423 commits
Select commit Hold shift + click to select a range
93b7749
fix(insight): 신뢰도 레이더 차트 9각형 + 헤더 라벨 정합
yezin013 May 3, 2026
2c8b901
Merge pull request #163 from Himidea-AI/feature/light-mode-migration
Knockcha May 3, 2026
6fae77b
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 3, 2026
49f9f05
feat(abm): plan/thought 통합 + ext_commuter LLM plan + 신규 매장 분포 + 시나리오 …
bat1120 May 3, 2026
c583223
Merge remote-tracking branch 'origin/dev' into IM3-alembic-user-lifec…
bat1120 May 3, 2026
5bb5fa0
fix(hub-card): merge resolution — loading prop type 추가
bat1120 May 3, 2026
6c7825e
Merge pull request #165 from Himidea-AI/IM3-alembic-user-lifecycle-ca…
bat1120 May 3, 2026
cefda0e
docs(spec): TCN 시나리오 시뮬레이터 S3 업그레이드 설계
soooojinn-prog May 3, 2026
5fe2e93
docs(plan): TCN 시나리오 시뮬레이터 S3 구현 플랜 (18 task)
soooojinn-prog May 3, 2026
549f1e4
feat(sensitivity): 슬라이더 재구성 — rent_1f/floating_pop 제거, cpi_index/opr_…
soooojinn-prog May 3, 2026
815e921
polish(sensitivity): docstring 예시 키 갱신 + trend_score 매핑 단언 추가
soooojinn-prog May 3, 2026
4762160
feat(sensitivity): perturb_and_predict 반환을 list[float] 4분기로 확장
soooojinn-prog May 3, 2026
876d822
feat(sensitivity): perturb_quarter_and_predict 반환 list[float] 4분기로 확장
soooojinn-prog May 3, 2026
e4ae26f
feat(sensitivity): run_batch 캐시 schema 분기별 list[float]로 확장
soooojinn-prog May 3, 2026
ba62856
fix(sensitivity): run_batch 캐시 schema 'baseline' 키 유지 + 사용 안 한 baseli…
soooojinn-prog May 3, 2026
e197d5f
feat(api/sensitivity): elasticity 응답을 분기별 list[float]로 확장
soooojinn-prog May 3, 2026
a8d4928
test(sensitivity): ETag 304 회귀 테스트 — schema 확장 후 동작 검증
soooojinn-prog May 3, 2026
32e6a0d
feat(tcn/model): autoregressive 지원 — output_size=1 모드 추가
soooojinn-prog May 3, 2026
3eb1b7b
feat(tcn/train): v3 학습 파이프라인 + 추론 경로
soooojinn-prog May 3, 2026
6b89587
feat(tcn/sensitivity): v3 호환 + baseline_per_store 캐시 추가
soooojinn-prog May 3, 2026
46880e6
feat(api/sensitivity): baseline_per_store/store_count 응답 노출
soooojinn-prog May 3, 2026
c412e05
chore(gitignore): 핸드오프 md + 개인 검증 산출물 ignore
soooojinn-prog May 3, 2026
59c8a8f
test(sensitivity): baseline_per_store/store_count 회귀 테스트
soooojinn-prog May 3, 2026
90328ff
polish(predict): customer_flow + emerging_district 사용자 친화 매핑
Knockcha May 3, 2026
14231d2
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
Knockcha May 3, 2026
3436737
chore: 시뮬 임시 JSON 8개 삭제 + .gitignore에 sim_*.json 추가
bongbong-90 May 3, 2026
1481b73
merge: dev 최신 통합 — scenario 주석 충돌 해결
bongbong-90 May 3, 2026
e715ebb
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
Knockcha May 3, 2026
19e2c8b
feat(scenario): TCN v3 4분기 시나리오 시뮬레이터 풀체인 (Master-Detail UX)
Knockcha May 3, 2026
0401602
polish(dashboard/maps): HQCommandCenter 재구조 + 지도 컴포넌트 시각 정합
Knockcha May 3, 2026
ccd097d
Merge pull request #166 from Himidea-AI/feature/light-mode-migration
Knockcha May 3, 2026
bd3465a
fix(z-index): 글로벌 header(z-50) 위로 drawer/widget 정렬
Knockcha May 3, 2026
e340f0b
Merge pull request #167 from Himidea-AI/feature/light-mode-migration
Knockcha May 3, 2026
516a607
fix(bep): 분기 단위 통일 + 4분기 hard cap 제거 + ML 실측 우선
soooojinn-prog May 3, 2026
55c3964
Merge sj_simul: BEP 분기 단위 통일 + 4분기 cap 제거 + ML 실측 우선
soooojinn-prog May 3, 2026
a23b208
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 4, 2026
2160c4b
fix(synthesis): BEP 단위 정합성 — TCN 키 오타 fix + 분기 단위 통일 (B2 핸드오프)
yezin013 May 4, 2026
9e5aba0
fix(main): _collect_all_competitor_locations 좌표 키 mismatch + 단계별 로깅 (…
yezin013 May 4, 2026
ff0172e
fix(sales_forecast): QuarterlyProjectionChart BEP 정확성 3건
Knockcha May 4, 2026
1722cd9
chore: ABM 5/4 시각 피드백 + RAG 정확도 작업 + verify scripts
bat1120 May 4, 2026
faafc1f
Merge pull request #168 from Himidea-AI/IM3-alembic-user-lifecycle-ca…
bat1120 May 4, 2026
cff564b
Merge pull request #164 from Himidea-AI/IM3-263-ai-summary-layout
yezin013 May 4, 2026
3c011d1
feat(customer_flow): 동별 카드 grid → 섹션별 4동 통합 차트 2개
Knockcha May 4, 2026
ebe50bd
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
Knockcha May 4, 2026
fa68d43
chore: 불필요 파일 정리 + auth/vector_db 개선 + dev merge 충돌 해결
bongbong-90 May 4, 2026
048f0b5
fix(closure-trend): 폐업률 단위 버그 — *100 중복 제거
yezin013 May 4, 2026
22c7da1
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 4, 2026
4c39dff
Merge pull request #169 from Himidea-AI/IM3-263-ai-summary-layout
yezin013 May 4, 2026
2a6800c
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
Knockcha May 4, 2026
ddeb659
chore: 불필요 벤치마크 테스트 스크립트 삭제
bongbong-90 May 4, 2026
2f95b4e
Merge branch 'bongbong2' into dev
bongbong-90 May 4, 2026
26a396c
Delete bench_stability_v2.json
bongbong-90 May 4, 2026
8943e0a
Delete bench_stability.json
bongbong-90 May 4, 2026
54104be
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
Knockcha May 4, 2026
19235dd
fix(synthesis): 종합 톤 — 법률 리스크 과부각 차단 + 다른 에이전트 우위 반영
yezin013 May 4, 2026
7bca40d
fix(bep): 패널 KPI 4분기 평균 + LLM/랭킹 fallback 제거 + chip 색 그래프 매칭
soooojinn-prog May 4, 2026
76a738c
Merge sj_simul: BEP 패널 KPI 4분기 평균 + chip 색 그래프 매칭
soooojinn-prog May 4, 2026
87438b9
IM3: brand_mapping_resolver canonical 정합성 + DB resolve 통합
bat1120 May 4, 2026
3367670
Merge pull request #170 from Himidea-AI/IM3-brand-mega-canonical-fix
bat1120 May 4, 2026
ac31536
feat(market-map): 추천 동 내 best 공실 spot 으로 핀 위치 변경
yezin013 May 4, 2026
1e22161
chore(district_ranking): vacancy spot 가중치 검증 로그 추가
yezin013 May 4, 2026
054dd0b
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 4, 2026
1fb80a8
fix(competitor_intel): 캐시 v2 → v3 — 카니발 0 회귀 차단
yezin013 May 4, 2026
5094540
fix(market-map): 마커 within 좌표계 — 핀 기준 haversine 재계산
yezin013 May 4, 2026
eb54b53
feat(cannibalization): 50% 캡 도달 시 ≥50% (최대치) 정직 표기
yezin013 May 4, 2026
3ef3b3e
feat(closure_risk): SHAP UI 등급화 + 한글 매핑 + v3 재학습 가중치
soooojinn-prog May 4, 2026
65bcc09
chore(gitignore): 디버깅 산출물·개인 플랜·가중치 백업 제외
soooojinn-prog May 4, 2026
0085553
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 4, 2026
e0fb65d
Merge pull request #172 from Himidea-AI/IM3-263-ai-summary-layout
yezin013 May 4, 2026
53434ef
fix(bep): 점포당 매출 분모 회귀 + sanity 가드
soooojinn-prog May 4, 2026
6211d87
feat(shap): TCN v3 정합 + 표시 개편(비율/방향/요약)
soooojinn-prog May 4, 2026
fc0a2c8
feat(charts): 매출 4분기 cap + 투자회수 동별 BEP 색상 정합
soooojinn-prog May 4, 2026
e15d99e
fix(legal): 법률리스크 분포 막대 색 fail — bg-{status}/80 alpha modifier → bg-{…
Knockcha May 4, 2026
1c67a06
feat: 영업구역 거리 입력 + 자사 매장 표시 + 1~4위 핀
yezin013 May 4, 2026
df6c248
feat(palette+agents): Deep Blue 4-tier categorical 색 + 9 페르소나 PNG 매핑
Knockcha May 4, 2026
4034d88
feat(scenario v2 + dashboard polish): 시나리오 재구조 + 동적 마포구 + IndicatorGr…
Knockcha May 4, 2026
c704dbc
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
Knockcha May 4, 2026
70eb9a1
feat(market-tab): HHI/다양성/포화도 카드 — 임계값 척도 + 출처 표기
yezin013 May 4, 2026
72557e2
fix(market-map): 자사 매장 점선 원 제거 + 공실 spot 1~4위 모두 반경원·라벨
yezin013 May 4, 2026
3af51dd
fix(threshold-bar): 마커가 막대 끝에서 잘리던 문제 — 마커를 별도 레이어로 분리
yezin013 May 4, 2026
1862db4
fix(market-map): 라벨 absolute 배치 — 1위 펄싱 핀 영역 경쟁점 가리던 회귀 해소
yezin013 May 4, 2026
4d18353
fix(dashboard): add missing rankSort.ts util (4034d88 follow-up)
Knockcha May 4, 2026
ed809cd
fix(dashboard): add missing rankSort.ts util (4034d88 follow-up)
Knockcha May 4, 2026
58e129a
Merge pull request #173 from Himidea-AI/hotfix/dashboard-rankSort-mis…
Knockcha May 4, 2026
089d3a0
feat(spot-score): 영업구역 침해 페널티 — territory 안 자사매장 ≥1 spot 후순위 강제
yezin013 May 4, 2026
7304650
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 4, 2026
129f7c8
fix(market-map): 반경원 fill 제거 — 1위 영역 경쟁점 마커 핑크 누적에 묻히던 회귀
yezin013 May 4, 2026
1d37481
fix(market-map): 1위 반경원 fill 0.05 복원 + bestVacancy NaN 가드
yezin013 May 4, 2026
778773b
chore(market-map): 진단 로그 임시 추가 — within=0 회귀 원인 잡기
yezin013 May 4, 2026
7a1c806
feat(spot-score): U자형 경쟁 점수 — 외진 zone 우선 패턴 차단
yezin013 May 4, 2026
bd1bdee
fix(map): 1위 spot 주변 경쟁점 마커 누락 — 검색 반경 500m → 1500m 확대
yezin013 May 4, 2026
60ac60a
feat(indicator-grid): winner 외 동도 8지표 모두 표시
yezin013 May 4, 2026
94debbb
chore(tcn): 구 TCN 가중치/스케일러 파일 제거
yezin013 May 4, 2026
98b9a0f
Merge pull request #174 from Himidea-AI/IM3-263-ai-summary-layout
yezin013 May 4, 2026
35c586a
polish(predict): emerging_district 카드 정돈 + customer_flow heatmap 동적 cell
Knockcha May 4, 2026
6b17420
fix(ui): 천 단위 콤마 표기 + 분석조건 drawer 글로벌 header 잘림 fix
Knockcha May 4, 2026
1cbb837
fix(charts+nav): BEP 4번째 동 점선 → solid + 헤더 limelight 빔 복원
Knockcha May 4, 2026
20a1d0d
feat(landing): ENGINE 메뉴 + EnginePage 신설 + LOGIN/LOGOUT 토글
Knockcha May 4, 2026
b2ba67d
Merge branch 'dev' into feature/light-mode-migration
Knockcha May 4, 2026
b1ebfa5
polish(agents): 에이전트 아이콘 박스 제거 — PNG 투명 배경 그대로 노출
yezin013 May 4, 2026
65ba4a1
polish(agents): AnalyzeAiSummaryTab synthesis 아이콘 박스 제거 (누락 fix)
yezin013 May 4, 2026
deb89db
fix(district-ranking): winner 외 동도 경쟁강도/폐업률/생존율 채워서 응답
yezin013 May 4, 2026
b8473fa
chore(gitignore): .env.txt 무시 추가
yezin013 May 4, 2026
2104a15
refactor(closure-risk): 1~4동 통일 카드 + 분석 상세 모달로 ML 용어 제거
soooojinn-prog May 4, 2026
fd11475
IM3: bundle multi-area uncommitted fixes (A1+A2+B1+C1+C2)
bat1120 May 4, 2026
f02d2f4
Merge pull request #176 from Himidea-AI/IM3-bundle-multi-area-fixes
bat1120 May 4, 2026
ebd4228
IM3: business_type_mapping 편의점 entry 제거 (시뮬 미사용)
bat1120 May 4, 2026
f63818c
Merge pull request #177 from Himidea-AI/IM3-business-mapping-drop-con…
bat1120 May 4, 2026
4391c9f
IM3: ftc_keywords DB 실측 정합 + 피자 정책 + 기타외식 분석
bat1120 May 4, 2026
62c7949
Merge pull request #178 from Himidea-AI/IM3-business-mapping-drop-con…
bat1120 May 4, 2026
43338b2
A1: DB 매핑 전수감사 + ORM 정합 (88테이블 doc 갱신 + zombie 정리 + master 추가)
bat1120 May 4, 2026
5183429
Merge pull request #179 from Himidea-AI/IM3-db-mapping-audit-erd-refresh
bat1120 May 4, 2026
742ed2a
A1+A2: 매핑 dict false positive 정정 + alembic phantom 복구 가이드
bat1120 May 4, 2026
fa002f8
Merge pull request #180 from Himidea-AI/IM3-mapping-conflicts-and-ale…
bat1120 May 4, 2026
f13c113
A1: alembic phantom 복구 + simulation_history 테이블 생성
bat1120 May 4, 2026
4297cd8
Merge pull request #181 from Himidea-AI/IM3-alembic-phantom-recovery
bat1120 May 4, 2026
cf04223
A1: simulation_history 미구현 기능 정리 (alembic 마이그레이션)
bat1120 May 4, 2026
ecf73e9
Merge pull request #182 from Himidea-AI/IM3-drop-simulation-history-c…
bat1120 May 4, 2026
f47996e
feat(emerging_district): per-quarter MSE 기반 분기 단위 consecutive 메트릭 + 재학습
soooojinn-prog May 4, 2026
40e71cf
feat(emerging_district): 5 tier fallback summary 사용자 친화 한국어 정비
soooojinn-prog May 4, 2026
c63b6be
feat(frontend/emerging): tier 헤더 배지 + summary 한 줄 + tier별 raw chip + …
soooojinn-prog May 4, 2026
131cb47
docs(emerging_district): UX 풀 정합 재설계 spec + 11 task plan
soooojinn-prog May 4, 2026
5ec6822
A1: NULL/orphan 전수감사 + master 메타 backfill (dong_mapping/industry_master)
bat1120 May 4, 2026
c7f3fb0
Merge pull request #183 from Himidea-AI/IM3-null-audit-and-master-bac…
bat1120 May 4, 2026
feb3b33
A1: 외부 API 로 NULL 컬럼 채우기 (subway/ttareungi/realtime_hotspots)
bat1120 May 4, 2026
76d4a35
Merge pull request #184 from Himidea-AI/IM3-api-backfill-subway-ttare…
bat1120 May 4, 2026
1ac6f41
feat(landing): EnginePage 인터랙티브 AgentRoster + UI/UX 고도화
Knockcha May 4, 2026
65a2d4f
polish(landing): AboutPage UI/UX 고도화 — EnginePage 톤 통일
Knockcha May 4, 2026
0e7580c
chore(font): JetBrains Mono 추가 — fontFamily.mono 최우선 적용
Knockcha May 4, 2026
b353c62
fix(nav): WelcomeWidget 직책 매핑 role 기반 강제
Knockcha May 4, 2026
d36b7d3
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
Knockcha May 4, 2026
d7c43fb
A1: 코드리뷰 fix + weather_daily snow 채움 + dead reference 정리
bat1120 May 4, 2026
edcc9d8
Merge pull request #185 from Himidea-AI/IM3-code-review-fixes-and-wea…
bat1120 May 4, 2026
6142f6e
feat: ABM 시뮬 UX 개선 + 가맹사업법 후보지 영업구역 평가 연계
bat1120 May 4, 2026
839c948
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 4, 2026
9f81395
Merge pull request #186 from Himidea-AI/feat/abm-legal-spot-evaluations
bat1120 May 4, 2026
ac48834
IM3: 경쟁업체 InfoWindow 카카오맵 link + 전화번호 노출
bat1120 May 4, 2026
4478c62
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 4, 2026
d6de292
feat(synthesis+map): 캐시 v11 + 공실 spot dedup + userBrand 별표 분기
yezin013 May 4, 2026
f53117a
feat(synthesis): confidence 동적 산출 — 0.85 하드코딩 회귀 차단
yezin013 May 4, 2026
721817d
IM3: 자사 매장 InfoWindow 도 카카오맵 link + 전화번호 추가
bat1120 May 4, 2026
97bdd5d
Merge pull request #187 from Himidea-AI/IM3-competitor-place-url
bat1120 May 4, 2026
37d7240
refactor(business-type): 5개 분산 dict → 통합 dict (business_type_mapping)…
yezin013 May 4, 2026
7998841
Revert "feat(synthesis): confidence 동적 산출 — 0.85 하드코딩 회귀 차단"
yezin013 May 4, 2026
9babf27
fix(synthesis): 캐시 v11 → v12 — 동적 confidence 롤백 후 캐시 무효화
yezin013 May 4, 2026
ac4310a
feat(evaluation): 7 LLM 에이전트 정확도 평가 framework 토대
yezin013 May 4, 2026
4612824
feat(evaluation): competitor_intel 평가 시범 실행 스크립트
yezin013 May 4, 2026
4d042d8
A1: corp 다업종 자동 brand resolve + 운영 외 업종 차단
bat1120 May 4, 2026
5921974
Merge pull request #188 from Himidea-AI/IM3-corp-brand-resolver
bat1120 May 4, 2026
bdbd575
A1: corp_brand_resolver JWT 자동 통합 (frontend biz_number 누락 시 토큰에서 추출)
bat1120 May 4, 2026
b157d70
fix(hq): 파이프라인 카드 brand 통일 + 시연용 mock notice 박스 제거
Knockcha May 4, 2026
12bd9c7
polish(login): 회원가입/초대코드 버튼을 Deep Blue 형제 톤으로 정돈
Knockcha May 4, 2026
334f984
polish(engine): 섹션 순서 swap + 색 정돈 + Hero metric 좌우 분할 + status bar 제거
Knockcha May 4, 2026
9006647
polish(analyze-market): 5 카드 form 통일 + 퐁당퐁당 룰 적용 (outer card / inner …
Knockcha May 4, 2026
f2cb10e
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
Knockcha May 4, 2026
78367b4
Revert "A1: corp_brand_resolver JWT 자동 통합 (frontend biz_number 누락 시 토…
bat1120 May 4, 2026
d8c48ac
Revert "Merge pull request #188 from Himidea-AI/IM3-corp-brand-resolver"
bat1120 May 4, 2026
6c1e626
polish(login): 회원가입/초대코드 버튼을 Deep Blue 형제 톤으로 정돈
Knockcha May 4, 2026
6b7dd5b
polish(engine): 섹션 순서 swap + 색 정돈 + Hero metric 좌우 분할 + status bar 제거
Knockcha May 4, 2026
44859df
fix(hq): 파이프라인 카드 brand 통일 + 시연용 mock notice 박스 제거
Knockcha May 4, 2026
26ec8c3
polish(analyze-market): 5 카드 form 통일 + 퐁당퐁당 룰 적용 (outer card / inner …
Knockcha May 4, 2026
4bca951
feat(abm): 시뮬 큐 + 대기화면 정보 + 마포 전역 wander + UI polish
bat1120 May 4, 2026
3805abf
Merge pull request #190 from Himidea-AI/IM3-abm-queue-ui
bat1120 May 4, 2026
307414d
fix(abm): 동 fallback + 퐁당퐁당 UI + 같은 spot 재클릭 시 시나리오 form
bat1120 May 4, 2026
bf3fb2f
Merge pull request #191 from Himidea-AI/IM3-abm-queue-ui
bat1120 May 4, 2026
92acba7
A1: DB ORM 무결성 + ABM 캐시 로그 동기화
bat1120 May 5, 2026
cf88f1a
polish(abm-tab): 시뮬 안내 + competitor 색 분기 + 지도 height 확대
bat1120 May 5, 2026
2bbe9db
Merge pull request #192 from Himidea-AI/feat/a1-db-integrity-fixes
bat1120 May 5, 2026
b716a56
Merge pull request #193 from Himidea-AI/feat/c1-abm-tab-polish
bat1120 May 5, 2026
6dbeffc
A1: industry_master ORM ForeignKey 배선 + InviteCode nullable 명시
bat1120 May 5, 2026
6cbfdcf
Merge pull request #194 from Himidea-AI/feat/a1-orm-cleanup-followup
bat1120 May 5, 2026
6e8bf8d
A1: brand_profile fuzzy 매칭 + paper brand 가드 (None * 100 폭발 차단)
bat1120 May 5, 2026
0a2f0cb
Merge pull request #195 from Himidea-AI/IM3-brand-profile-fuzzy-paper…
bat1120 May 5, 2026
025a0b1
chore: retrospective 갱신 + 공실 매물 색상 통일 (success → decor-cyan)
bat1120 May 5, 2026
67b418f
A1+ABM+Legal: 전수조사 발견 4 HIGH + 다수 MED fix (NULL/매핑/RAG/검증)
bat1120 May 5, 2026
b944b17
Merge pull request #196 from Himidea-AI/IM3-abm-legal-db-null-mapping…
bat1120 May 5, 2026
8c8302c
A1: dong_code 8자리 검증 강화 (validate helper + Pydantic validator)
bat1120 May 5, 2026
eb3e800
Merge pull request #197 from Himidea-AI/IM3-dong-code-validation
bat1120 May 5, 2026
9b352e9
A1: ETL 재적재 — ttareungi.dong_code 마포 + ecos.cycle 100% (KAKAO/ECOS 키 …
bat1120 May 5, 2026
cd79bf3
Merge pull request #198 from Himidea-AI/IM3-etl-refill-ttareungi-ecos
bat1120 May 5, 2026
5018c4f
feat(frontend/emerging): consecutive 분기 chip + 변화 1위 배지 + 게이지 우측 정수화
soooojinn-prog May 5, 2026
8c2c873
feat(evaluation): competitor_intel Redis 실측 스크립트
yezin013 May 5, 2026
c8b8f78
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 5, 2026
d4936a3
fix(frontend/closure_rate): 평균 라벨 = 그래프 4분기 산술평균으로 수정
soooojinn-prog May 5, 2026
163ecbc
feat(map): 자사 매장 별표 옵션A — 시뮬 업종과 자사 카테고리 일치 시만 표시
yezin013 May 5, 2026
33afb1a
feat(auth): superadmin role — 전체 가맹본부 simulation 데이터 조회 권한
bat1120 May 5, 2026
a219965
Merge remote-tracking branch 'origin/IM3-263-ai-summary-layout' into dev
bat1120 May 5, 2026
e04d80b
fix(synthesis): '리스크 및 대응' 섹션 법률 조항 인용 금지 (캐시 v12→v13)
yezin013 May 6, 2026
4d76ce4
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 6, 2026
2dc36bd
Merge pull request #199 from Himidea-AI/IM3-263-ai-summary-layout
yezin013 May 6, 2026
96d4ba8
fix(map): 공실 spot 1~4위 항상 4개 보장 — winner+top3 통합 후보
yezin013 May 6, 2026
66b874e
feat(corp): 사업자번호 기반 운영 업종 dropdown 자동 차단
bat1120 May 6, 2026
88dd964
refactor(predict-financial): 동별 폐업률 추이 섹션을 폐업위험도 위로 이동
soooojinn-prog May 6, 2026
81095bc
feat(scenario-sim): 시뮬레이터 UX 정비 — 헤더 문구·CPI 라벨 단축·chip 균등 1줄 배치
soooojinn-prog May 6, 2026
ba01036
feat(map): winner != spot 1위 동 안내 라벨 추가
yezin013 May 6, 2026
e9b65f7
feat(graph): PHASE 2 분석 target 을 spot 1위 동으로 변경 — winner 매물 0건 케이스 대응
yezin013 May 6, 2026
1920298
polish(predict): 매출요인·폐업위험도·조기감지 막대 동별 색 + 카드 동 이름 폰트 정돈
Knockcha May 6, 2026
c8e730d
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
Knockcha May 6, 2026
20f6fe3
fix(market): 주요 경쟁점·지도 마커 데이터 통합 + spot 1위 좌표 기준 거리
yezin013 May 6, 2026
0d32c8e
fix(market): 동 한눈에 공실률 + 안내 라벨 — analysisDong(spot 1위 동) 기준 + 큰 배너
yezin013 May 6, 2026
bd93a65
fix(format): formatKrw 음수 처리 — 부호 분리 + 절댓값 분기로 만/억 단위 변환
Knockcha May 6, 2026
2c5a310
fix(market): 시뮬마다 경쟁업체 변동 + 팝업 가려짐 + top5 지도 강조
yezin013 May 6, 2026
1a71fa9
docs(spec): emerging-district 탭 정보량 고도화 디자인 (2026-05-06)
Knockcha May 6, 2026
ff3cb64
docs(plan): emerging-district 정보량 고도화 implementation plan
Knockcha May 6, 2026
402a0ee
feat(emerging): EmergingResult 에 quarter_history + peer_distribution …
Knockcha May 6, 2026
2de86ff
feat(types): EmergingSignal 에 quarter_history + peer_distribution 동기화
Knockcha May 6, 2026
6dc95ba
feat(emerging): 8 분기 quarter_history 산출
Knockcha May 6, 2026
274e8c1
feat(emerging): 16동 peer_distribution 산출 (사분위 + rank)
Knockcha May 6, 2026
1847c0a
feat(emerging): PeerDistributionBar 신규 — 16동 분포 안 본 동 위치 mini bar
Knockcha May 6, 2026
39cf20c
feat(emerging): EmergingPeerComparisonChart 신규 — 16동 분포 안 4동 위치
Knockcha May 6, 2026
b600cec
refactor(emerging-card): 게이지·RawChip 제거 + sparkline · peer bar · summ…
Knockcha May 6, 2026
bd2b3df
feat(emerging-tab): layout 재구조 — 16동 비교 차트 + tier · 신호 분포 chip strip
Knockcha May 6, 2026
edb4e54
fix(market): top5 매장이 빨간 삼각형으로 안 그려지던 버그 — 번호 라벨 별도 overlay 로 분리
yezin013 May 6, 2026
ccf2775
fix(market): topCompetitors useMemo 누락으로 마커 무한 cleanup → 화면 미표시 회귀
yezin013 May 6, 2026
a023baa
polish(emerging): summary "이상도" → "평소 대비 변화" 라벨 통일 + peer 표기 명확화
Knockcha May 6, 2026
6a5c30c
feat(market): all_competitor_locations 수집 기준을 공실 spot 1위 좌표로 통일
yezin013 May 6, 2026
9a19a8b
feat(emerging-tab): 16동 dot plot → 4동 8분기 시계열 line chart 로 교체
Knockcha May 6, 2026
4e27f01
feat(market): 4 spot 모두 기준으로 경쟁점 내부/외부 분류 + 풀 합집합 수집
yezin013 May 6, 2026
7121753
fix(market): 풀 cap 200 → 1000 — spot 2,3,4 주변 매장이 spot1 거리순 정렬에 잘려 누락…
yezin013 May 6, 2026
6a7fc60
fix(market): _query_kakao_store_by_coord import 경로 오류 — spot 모드 silen…
yezin013 May 6, 2026
d04b31e
chore: PR 포함 자투리 변경 통합 commit
yezin013 May 6, 2026
ba03a5e
Merge pull request #204 from Himidea-AI/IM3-263-ai-summary-layout
yezin013 May 6, 2026
8a97105
feat(toast): dedupeKey 도입 — 재시도 연타 시 동일 토스트 stack 누적 회귀 방지
Knockcha May 6, 2026
f5ee308
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
Knockcha May 6, 2026
bac9202
fix(scenario): 동 드롭다운 첫 열기 시 5개 옵션 노출 회귀 — sessionStorage 잔존 자동 정리
Knockcha May 6, 2026
94fabb2
fix(closure-rate): 두 폐업률 패널 라벨/출처/툴팁 명확화 — 동+업종 8분기 vs 동 전체 4분기 혼동 방지
yezin013 May 6, 2026
5642849
chore: 대시보드/지도 UI 정비 + ABM persona pool + 회고/프레젠테이션
bat1120 May 6, 2026
26495a9
Merge pull request #206 from Himidea-AI/chore/dashboard-cleanup-and-w…
bat1120 May 6, 2026
527fb17
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 6, 2026
9bc303b
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
bat1120 May 7, 2026
7ed3bce
perf(emerging_ae): load_timeseries 캐시 공유 + startup 워밍 (-86%)
soooojinn-prog May 7, 2026
917def9
chore(wip): 다영역 누적 변경 통합 commit
soooojinn-prog May 7, 2026
c591890
Merge branch 'dev' of https://github.com/Himidea-AI/Final_Project int…
bat1120 May 7, 2026
48cfff9
feat(evaluation): 7 LLM 에이전트 정확도 v7 재설계 + 캐시 schema 보강
yezin013 May 7, 2026
71b2322
feat: 자사 brand 명시 선택 + ABM gating 복구 + UI polish
bat1120 May 7, 2026
a79b48b
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 7, 2026
cafa6ef
Merge pull request #207 from Himidea-AI/IM3-263-ai-summary-layout
yezin013 May 7, 2026
237720b
Merge remote-tracking branch 'origin/dev' into IM3-263-ai-summary-layout
yezin013 May 7, 2026
1e44539
fix(map): 자사 매장 별표 표시 — '기타' 카테고리 통과 + 크기 18px 축소
yezin013 May 7, 2026
5412d81
Merge pull request #208 from Himidea-AI/IM3-263-ai-summary-layout
yezin013 May 7, 2026
a63706e
feat(emerging): UI 데이터 흐름 복구 + 사용자 친화 라벨/색 통일
soooojinn-prog May 7, 2026
48c9c35
feat(customer-flow): 타겟 고객 미선택 시 안내 문구 추가
soooojinn-prog May 7, 2026
c03273e
feat: legal z-score 폐점률 + ABM peak_hours fix + 시뮬 폼 회귀 복구
bat1120 May 7, 2026
6c13a09
fix(corp): 프론트 업종 표기 → FTC indutyMlsfcNm alias 매핑
bat1120 May 7, 2026
f663099
docs+chore: README 정밀 audit 수정 + 누적 UI/legal/시뮬 변경분 통합
bat1120 May 7, 2026
c82834c
docs(readme): 팀원별 상세 기술 문서 link + 핵심 메트릭 정리
yezin013 May 7, 2026
1792136
docs(team): 팀원 6명 상세 기술 문서 추가
yezin013 May 7, 2026
cc5b850
docs(team-b2): TEAM_B2 ML 문서 전면 재작성 (실측 메트릭 기반)
soooojinn-prog May 8, 2026
4346cc9
feat: ABM 영구저장(simulation_abm) + PDF 빌더 정합성 + 시뮬 폼 정리
bat1120 May 10, 2026
0167bed
fix(frontend-test): 실패 5건 해소 — simulationStore/Radar/EmergingSignal
bat1120 May 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
478 changes: 478 additions & 0 deletions .audit/reverted_patches/4d042d8e_corp_brand_resolver_base.patch

Large diffs are not rendered by default.

260 changes: 260 additions & 0 deletions .audit/reverted_patches/bdbd5754_jwt_integration.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,260 @@
From bdbd575406179282a4a2a435c5b96fb5624e0ce2 Mon Sep 17 00:00:00 2001
From: bat1120 <bat1120@naver.com>
Date: Tue, 5 May 2026 00:49:54 +0900
Subject: [PATCH] =?UTF-8?q?A1:=20corp=5Fbrand=5Fresolver=20JWT=20=EC=9E=90?=
=?UTF-8?q?=EB=8F=99=20=ED=86=B5=ED=95=A9=20(frontend=20biz=5Fnumber=20?=
=?UTF-8?q?=EB=88=84=EB=9D=BD=20=EC=8B=9C=20=ED=86=A0=ED=81=B0=EC=97=90?=
=?UTF-8?q?=EC=84=9C=20=EC=B6=94=EC=B6=9C)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR #188 의 corp_brand_resolver 가 frontend 가 biz_number 명시 안 보내면
검증 skip 되는 회귀 fix. JWT 토큰에서 자동 추출.

추가:
- _resolve_user_biz_number(user) — JWT UserContext → users.biz_number 조회
* master role: user_id → users.id 매칭
* manager role: owner_id → users.id 매칭 (소속 owner)
- _validate_and_resolve_brand(input_data, current_user) 시그니처 확장
- biz_number 우선순위:
1. input_data.biz_number (frontend 명시)
2. JWT 토큰의 user.user_id 또는 owner_id → users.biz_number
3. 없으면 검증 skip (비회원/개인사업자 호환)

7 endpoint 시그니처에 Depends(get_optional_user) 추가:
- /analyze, /analyze/llm, /analyze/llm/async, /analyze/quick
- /predict, /predict/async, /simulate

import:
- from fastapi import Depends 추가
- from src.services.jwt_auth import UserContext, get_optional_user

기존 동작 유지:
- 비로그인 사용자 → optional auth, current_user=None → skip (기존과 동일)
- frontend biz_number 명시 → 토큰 무시 (frontend 우선)
- frontend biz_number 없음 + 로그인 → 토큰에서 자동 추출 (이번 fix)

DB 변경: 0

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
backend/src/main.py | 98 ++++++++++++++++++++++++++++++++++-----------
1 file changed, 75 insertions(+), 23 deletions(-)

diff --git a/backend/src/main.py b/backend/src/main.py
index e0a06478..15046217 100644
--- a/backend/src/main.py
+++ b/backend/src/main.py
@@ -47,7 +47,7 @@ import redis.asyncio as aioredis
# LangSmith 트레이싱: langchain import 전에 os.environ 주입 필수
# (langchain SDK는 import 시점에 LANGCHAIN_TRACING_V2를 읽으므로 순서가 중요)
from dotenv import load_dotenv
-from fastapi import FastAPI, HTTPException, Request, Response
+from fastapi import Depends, FastAPI, HTTPException, Request, Response
from fastapi.concurrency import run_in_threadpool
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
@@ -78,6 +78,7 @@ from src.schemas.simulation_input import SimulationInput
from src.services.auth import AuthService
from src.services.biz_mapper import BizMapper
from src.services.corp_brand_resolver import resolve_brand_for_industry
+from src.services.jwt_auth import UserContext, get_optional_user

from models.explainability.shap_analysis import explain_tcn_prediction
from models.explainability.simulation import (
@@ -226,28 +227,56 @@ def _pipeline_key(input_data: Any) -> str:
return f"{input_data.target_district}:{input_data.business_type}:{input_data.brand_name}:{rent}:{area}:{radius}:{pop_w}"


-def _validate_and_resolve_brand(input_data: SimulationInput) -> None:
+def _resolve_user_biz_number(user: UserContext | None) -> str | None:
+ """JWT user → users.biz_number 조회. master 는 본인, manager 는 owner 의 biz_number."""
+ if user is None:
+ return None
+ target_id = user.owner_id if user.role == "manager" else user.user_id
+ if not target_id:
+ return None
+ try:
+ import sqlalchemy as sa
+
+ engine = sa.create_engine(settings.postgres_url)
+ with engine.connect() as conn:
+ row = conn.execute(
+ sa.text("SELECT biz_number FROM users WHERE id = :id"),
+ {"id": target_id},
+ ).first()
+ return row._mapping["biz_number"] if row else None
+ except Exception as ex:
+ logger.warning(f"[brand_resolver] biz_number 조회 실패: {ex}")
+ return None
+
+
+def _validate_and_resolve_brand(
+ input_data: SimulationInput,
+ current_user: UserContext | None = None,
+) -> None:
"""biz_number 입력 시 corp 검증 + 다업종 corp 의 brand auto-resolve.

- 동작 (input_data.biz_number 가 입력됐을 때만):
+ biz_number 우선순위:
+ 1. ``input_data.biz_number`` (frontend 명시 입력)
+ 2. JWT ``current_user`` 토큰에서 자동 추출 (master.user_id 또는 manager.owner_id)
+ 3. 없으면 검증 skip (개인사업자 / 비회원 호환)
+
+ 동작:
1. business_type 이 사용자 corp 의 운영 업종인지 검증.
2. 운영 외 업종 → HTTPException(400) + 운영 가능 업종 list 응답.
3. 운영 내 업종 + corp 의 해당 업종 brand 가 다른 brand 면 brand_name override.
-
- biz_number 미입력 (개인사업자 / 비회원) → 검증 skip, 사용자 brand_name 그대로.
- FTC 미등록 corp → 검증 skip + 경고 로그.
"""
- if not input_data.biz_number:
+ biz_number = input_data.biz_number or _resolve_user_biz_number(current_user)
+ if not biz_number:
return

- result = resolve_brand_for_industry(input_data.biz_number, input_data.business_type)
+ result = resolve_brand_for_industry(biz_number, input_data.business_type)

if result.get("error") == "INDUSTRY_NOT_OPERATED":
raise HTTPException(status_code=400, detail=result)

if result.get("error") in {"USER_NOT_FOUND", "CORP_NOT_IN_FTC", "INVALID_COMPANY_NAME"}:
# 비회원 / FTC 미등록 → 검증 skip, 사용자 brand_name 그대로
- logger.warning(f"[brand_resolver] {result['error']} biz={input_data.biz_number} — fallback to input.brand_name")
+ logger.warning(f"[brand_resolver] {result['error']} biz={biz_number} — fallback to input.brand_name")
return

# 성공: brand_name override (사용자가 다른 brand 입력했어도 corp 정합 brand 로 교체)
@@ -963,14 +992,18 @@ async def get_status(job_id: str):


@app.post("/analyze")
-async def analyze_location(input_data: SimulationInput, response: Response):
+async def analyze_location(
+ input_data: SimulationInput,
+ response: Response,
+ current_user: UserContext | None = Depends(get_optional_user),
+):
"""[DEPRECATED] 풀파이프 상권 분석 — 전환 기간 동안만 유지.

IM3-259로 endpoint를 분리(/predict + /analyze/llm)했으므로 신규 호출은
그쪽으로 옮길 것. 이 endpoint는 기존 프론트/테스트 호환을 위해 유지하다가
충분히 검증되면 제거 예정.
"""
- _validate_and_resolve_brand(input_data)
+ _validate_and_resolve_brand(input_data, current_user)
from src.config.constants import MAPO_DISTRICTS

# IM3-259: deprecation 헤더 — 클라이언트가 /predict + /analyze/llm 으로 옮길 것을 알림
@@ -1021,12 +1054,15 @@ async def analyze_location(input_data: SimulationInput, response: Response):


@app.post("/analyze/llm")
-async def analyze_llm(input_data: SimulationInput):
+async def analyze_llm(
+ input_data: SimulationInput,
+ current_user: UserContext | None = Depends(get_optional_user),
+):
"""AI 분석 전용 endpoint — slow_graph 실행 (~80-140초).

/predict와 독립 병렬 호출 가능. winner는 ranking 단계에서 자체 결정.
"""
- _validate_and_resolve_brand(input_data)
+ _validate_and_resolve_brand(input_data, current_user)
from src.config.constants import MAPO_DISTRICTS
from src.schemas.simulation_output import AnalysisOutput

@@ -1094,9 +1130,12 @@ _SLOW_GRAPH_NODE_TOTAL = 4


@app.post("/analyze/llm/async")
-async def analyze_llm_async(input_data: SimulationInput) -> dict[str, Any]:
+async def analyze_llm_async(
+ input_data: SimulationInput,
+ current_user: UserContext | None = Depends(get_optional_user),
+) -> dict[str, Any]:
"""AI 분석 비동기 시작 — 즉시 job_id 반환. LangGraph 노드별 진행률 추적."""
- _validate_and_resolve_brand(input_data)
+ _validate_and_resolve_brand(input_data, current_user)
from src.config.constants import MAPO_DISTRICTS
from src.schemas.simulation_output import AnalysisOutput
from src.services.job_progress_store import (
@@ -1208,7 +1247,10 @@ async def analyze_llm_job_status(job_id: str) -> dict[str, Any]:


@app.post("/analyze/quick")
-async def analyze_quick(input_data: SimulationInput):
+async def analyze_quick(
+ input_data: SimulationInput,
+ current_user: UserContext | None = Depends(get_optional_user),
+):
"""
LLM 없는 경량 랭킹 엔드포인트 (district_ranking 에이전트만 실행).

@@ -1217,7 +1259,7 @@ async def analyze_quick(input_data: SimulationInput):

응답: { district_rankings, winner_district, top_3_candidates }
"""
- _validate_and_resolve_brand(input_data)
+ _validate_and_resolve_brand(input_data, current_user)
from src.agents.nodes.district_ranking import district_ranking_node
from src.agents.nodes.market_analyst import db_client

@@ -1692,7 +1734,10 @@ def _mock_simulation_response(target_district: str, request_id: str) -> dict:


@app.post("/predict")
-async def predict_districts(input_data: SimulationInput):
+async def predict_districts(
+ input_data: SimulationInput,
+ current_user: UserContext | None = Depends(get_optional_user),
+):
"""
선택 동 1~4개 ML 예측 전용 엔드포인트 (LangGraph 미사용)

@@ -1700,7 +1745,7 @@ async def predict_districts(input_data: SimulationInput):
- target_districts 전체에 대해 TCN/BEP/폐업률/폐업위험도/SHAP 병렬 실행
- 응답: 동별 예측 결과 리스트 (프론트 멀티라인 차트용)
"""
- _validate_and_resolve_brand(input_data)
+ _validate_and_resolve_brand(input_data, current_user)
from src.config.constants import MAPO_DISTRICTS

target_districts = getattr(input_data, "target_districts", None) or [input_data.target_district]
@@ -1762,9 +1807,12 @@ async def predict_districts(input_data: SimulationInput):
# 단계: 동별 _predict_single_district 가 끝날 때마다 progress = done/total.
# ---------------------------------------------------------------------------
@app.post("/predict/async")
-async def predict_districts_async(input_data: SimulationInput) -> dict[str, Any]:
+async def predict_districts_async(
+ input_data: SimulationInput,
+ current_user: UserContext | None = Depends(get_optional_user),
+) -> dict[str, Any]:
"""ML 예측 비동기 시작 — 즉시 job_id 반환. 진행률은 status endpoint 폴링."""
- _validate_and_resolve_brand(input_data)
+ _validate_and_resolve_brand(input_data, current_user)
from src.config.constants import MAPO_DISTRICTS
from src.services.job_progress_store import (
create_job,
@@ -1878,9 +1926,13 @@ async def predict_job_status(job_id: str) -> dict[str, Any]:


@app.post("/simulate", deprecated=True)
-async def run_simulation(input_data: SimulationInput, response: Response):
+async def run_simulation(
+ input_data: SimulationInput,
+ response: Response,
+ current_user: UserContext | None = Depends(get_optional_user),
+):
"""기본 시뮬레이션 엔드포인트"""
- _validate_and_resolve_brand(input_data)
+ _validate_and_resolve_brand(input_data, current_user)
response.headers["Deprecation"] = "true"
response.headers["Link"] = '</predict>; rel="successor-version", </analyze/llm>; rel="successor-version"'

--
2.53.0.windows.2

57 changes: 57 additions & 0 deletions .audit_post_session.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
### POST-SESSION DB 실측 (PR #178~#197 머지 후) ###

=== alembic head ===
91b66e68ec18

=== 테이블 + row counts (top 30) ===
('living_population_grid', 10538127)
('bus_boarding_daily', 3710508)
('seoul_ttareungi_usage_daily', 985653)
('living_population', 961071)
('seoul_adstrd_stor', 849552)
('district_sales_seoul', 475334)
('sgis_population', 224517)
('seoul_subway_passenger_daily', 199340)
('golmok_commercial', 178840)
('jeonse_monthly_rent', 168342)
('sgis_business', 137356)
('seoul_district_stores', 100587)
('seoul_training_dataset', 87938)
('seoul_district_sales', 87938)
('kakao_store_menu', 81037)
('seoul_signgu_stor', 69704)
('seoul_signgu_selng', 43043)
('ftc_brand_franchise', 34708)
('naver_trend_monthly', 33985)
('store_info', 30488)
('sgis_household', 25550)
('golmok_stores', 15800)
('seoul_resident_pop_quarterly', 13508)
('seoul_adstrd_flpop', 11900)
('seoul_golmok_rent', 11900)
('seoul_adstrd_change_ix', 11900)
('mart_brand_territory', 11849)
('langchain_pg_embedding', 10255)
('seoul_population_quarterly', 10176)
('small_store_rent_q', 10020)

=== 100% NULL 컬럼 재측정 (master 메타 backfill 후) ===
district_sales_seoul: 100% NULL = ['raw_json']
dong_mapping: 100% NULL = ['trdar_codes']
ecos_timeseries: 100% NULL = ['item_name2', 'cycle']
invite_codes: 100% NULL = ['expires_at']
kakao_store_hours: 100% NULL = ['mon_hours', 'tue_hours', 'wed_hours', 'thu_hours', 'fri_hours', 'sat_hours', 'sun_hours']
living_population: 100% NULL = ['male_70_74', 'female_70_74']
mart_brand_territory: 100% NULL = ['extraction_confidence']
master_ttareungi_station: 100% NULL = ['dong_code', 'opened_at']
molit_nrg_trade: 100% NULL = ['realty_type']
rent_cost: 100% NULL = ['transaction_date', 'price', 'floor_area', 'floor']
seoul_dong_master: 100% NULL = ['comment']

=== orphan FK ===
✓ orphan 0

=== ORM ↔ DB 정합 ===
ORM: 77, DB: 87
ORM only (zombie): []
DB only (raw SQL): ['alembic_version', 'langchain_pg_collection', 'langchain_pg_embedding', 'living_population_grid', 'mapo_schools', 'password_reset_tokens', 'seoul_district_sales_imputed_v4', 'seoul_district_sales_imputed_v4_detail', 'seoul_resident_pop_quarterly', 'user_usage']
Loading
Loading