daily report
Daily Work Report: 2026-01-16
Beauty Insight Editor
Daily Work Report: 2026-01-16
Subject: Forecast Engine 고도화를 위한 전략적 숨 고르기 (Strategic Pause for Forecast Engine Refinement)
1. Executive Summary (요약)
- Forecast Implementation Attempt: Prophet 모델과 Google Trends 선행지표를 결합한 수요 예측 엔진 구현을 시도했으나, 데이터 정합성 문제로 잠정 중단 및 고도화(Refinement) 모드로 전환했습니다.
- Performance & UX Priority: 실시간 예측 연산으로 인한 페이지 로딩 지연(10초+)을 제거하기 위해 예측 기능을 비활성화하고 'Instant Load' 환경을 구축했습니다.
- Coming Soon Overlay: 사용자 경험을 해치지 않으면서 기대감을 줄 수 있도록, 차트 영역에 "AI 분석 엔진 고도화 중 (Coming Soon)" 오버레이를 적용했습니다.
- Backend Robustness: 향후 재가동을 대비해 Pytrends 429 에러 방지 및 'Export-Correlated Mock Data' 생성 로직을 백엔드에 심어두었습니다.
2. Technical Implementation (구현 상세)
Backend (FastAPI/Python)
- Smart Mock with Business Logic (
src/forecasting/trends.py):- 기존 랜덤 워크(Random Walk) 방식의 Mock 데이터가 비즈니스 현실과 동떨어진 결과(예: 이유 없는 급락)를 초래함.
- 이를 해결하기 위해 실제 수출 실적(Export Value)의 추세를 30% 반영하는
Correlated Mock로직을 구현하여 데이터 정합성을 높임.
- Model Regularization (
src/forecasting/engine.py):- Google Trends, 환율 등 외부 변수(Regressors) 간의 다중공선성(Multicollinearity)을 방지하기 위해
prior_scale=0.05의 강력한 규제(Regularization)를 적용.
- Google Trends, 환율 등 외부 변수(Regressors) 간의 다중공선성(Multicollinearity)을 방지하기 위해
- Stability Engineering:
- Google Trends API(Pytrends)의
429 Too Many Requests에러를 회피하기 위해Random Sleep (10~20s)및 타임스탬프 기반 캐싱(Caching) 전략 도입.
- Google Trends API(Pytrends)의
Frontend (Next.js/TypeScript)
- UI/UX Refinement (
TrendsChart.tsx):- 불완전한 예측 데이터를 노출하는 대신, Coming Soon 오버레이를 적용하여 "서비스 점검 중"이 아닌 "기능 고도화 중"이라는 긍정적 메시지 전달.
- Framer Motion을 도입하여 부드러운 Fade-in 효과와 Pulse Animation(반짝임)으로 고급스러운 느낌 강조.
- Performance Optimization (
indicators.ts):fetchForecastAPI 호출을 주석 처리하여, 대시보드 진입 속도를 약 10초 → 0.5초로 획기적으로 단축.
3. Troubleshooting Log (문제 해결 로그)
Issue 1: Mock Data Mismatch (Business Logic)
- [증상] Google Trends API 차단 시 생성되는 Mock 데이터가 실제 수출 호황기에도 '하락세'를 그려, 예측 모델이 "미래 급락"을 예고하는 심각한 왜곡 발생.
- [원인] Mock 데이터 생성 로직이 단순히 '과거 평균 유지' 또는 '랜덤 변동'에 의존했기 때문. 경제학적 관점에서 실제 수출(Export)과 선행 지표(Trends)는 양의 상관관계를 가져야 함.
- [해결]
trends.py에서 Mock 데이터 생성 시(0.7 * Base) + (0.3 * Normalized_Export_Trend)공식을 적용. 데이터가 없을 때도 **"수출이 잘 되면 트렌드도 좋았을 것이다"**라는 합리적 가정을 주입.
Issue 2: Non-China Forecast Spikes
- [증상] Non-China(비중국) 지역 예측치가 특정 시점에 3배 이상 급등하는 이상치(Outlier) 발생.
- [원인] China 예측치(차감 항목)가 Mock 데이터의 영향으로 과도하게 낮아지면서, 상대적으로 Non-China 잔여량이 폭증한 계산상의 착시.
- [해결]
- Frontend 차트 리렌더링 시
Dynamic Cap(과거 최고치의 1.5배) 적용. - Mock Data의 기본 레벨(Level)을 80 → 50으로 하향 조정하여 변동성 축소.
- Frontend 차트 리렌더링 시
Issue 3: Backend Startup Error
- [증상]
trends.py수정 후 서버 재시작 시NameError: name 'List' is not defined발생. - [원인] Type Hinting 사용 시
from typing import List구문 누락. - [해결] 누락된 Import 구문 추가하여 정상 구동 확인.
4. Key Learnings & Decisions (배운 점 및 의사결정)
- Strategic Retreat for Quality:
- 기술적으로 동작한다고 해서 비즈니스적으로 유의미한 것은 아닙니다. 억지로 예측 값을 보여주는 것보다, **"현재 더 완벽한 모델을 준비 중이다"**라고 솔직하게 커뮤니케이션하는 것이 사용자 신뢰(Trust)를 유지하는 데 더 유리하다는 판단을 내렸습니다.
- Data Integrity over Availability:
- 데이터가 없을 때 무작정 채워넣기(Imputation)보다는, **도메인 지식(경제학적 상관관계)**을 활용해 합리적인 가상의 데이터를 생성하는 것이 AI 모델의 환각(Hallucination)을 줄이는 핵심임을 재확인했습니다.
Beauty Insight Editor
Sharing insights on K-Beauty trends and data-driven export strategies. We help brands expand globally with the power of AI.