개발 일일 요약
1. 작업 분석
| 카테고리 | 비중 | |
|---|
| 프론트엔드 UI 구현 및 TTS 고도화 | 40% | ████░░░░░░ |
| 데이터 품질 개선 및 검색 시스템 | 35% | ███░░░░░░░ |
| 기획 및 아키텍처 설계 | 25% | ██░░░░░░░░ |
2. 집중 영역 / 시간 소모 포인트
생산적 작업
- 데이터 보강 (v3): 61개 팁의
action 필드를 평균 30자에서 149자로 5배 보강하고, situation 필드를 사용자 공감형 짧은 문장으로 재작성함.
- 검색 로직 고도화: 로마자 표기 검색 실패 문제를 해결하기 위해 쿼리 인텐트 분류(
info, roman, tip) 로직을 API에 추가함.
- TripFeed 및 목업 데이터 구현: ‘입국 전 준비’ 및 ‘일정/시간대’ 기반의 맥락형 피드 전략에 따라 목업 일정(
mock_itinerary.json)과 TripFeed.jsx를 개발함.
- AWS Polly TTS 통합: 기존 Web Speech API의 한계를 극복하기 위해 AWS Polly(Neural Voice)로 업그레이드하고, 전역 호출 가능한
TTSModal로 모듈화함.
- 데이터 구조 확장: 현지인에게 물어볼 수 있는 표현을 담은
phrases 필드를 데이터에 추가하고 UI에 연동함.
삽질/시간 소모 포인트
- Python 로그 버퍼링:
tail -f 로그가 실시간으로 출력되지 않아 진행 상황 파악이 지연됨.
- 문장 잘림 현상 디버깅:
reasoning_content 파싱 시 문장이 중간에 잘리는 문제를 해결하기 위해 끝맺음 체크 로직을 구현해야 했음.
- 페이지/컴포넌트 혼동: 사용자가 ‘AI 검색(SmartSearch)’ 탭과 ‘꿀팁 AI(PipelineFeed)’ 탭을 혼동하여 변경 사항을 제대로 확인하지 못하는 상황이 반복됨.
- Web Speech API 비동기 이슈: Chrome 브라우저에서 음성 로딩이 비동기로 처리되어 기본 음성이 출력되는 문제를
setTimeout과 이벤트 리스너로 우회 해결함.
3. 타임라인
| 시간 | 대화 상대 | 주요 작업 내용 |
|---|
| 00:02 | ⌨️ | tail -f로 로그 모니터링 시작. |
| 00:23 | 🦦 | 진행 상황 공유 (30/61개 완료), Python 버퍼링 이슈 언급. |
| 01:43 | 🦦 | 데이터 보강 완료 및 Qdrant 재인덱싱 완료. |
| 01:44 | 🦦 | UI 테스트 요청 및 상황지문 공감도 문제 피드백 수용. |
| 01:45 | 🦦 | fix_situation.py 스크립트 생성 및 실행 시작. |
| 02:09 | ⌨️ | 로그 확인 후 문장 잘림 현상 리포트. |
| 02:10 | 🦦 | 잘린 문장 감지 로직 추가 후 스크립트 재시작. |
| 09:28 | 🦦 | 택시 정보 구식 문제 지적 및 중복 팁 식별 작업 진행. |
| 09:31 | 🦦 | 중복 해결을 위한 아키텍처(Canonical Topic 등) 논의. |
| 09:52 | 🦦 | API 테스트 결과 분석 (로마자 쿼리 실패, 인텐트 불일치 등). |
| 09:53 | 🦦 | api.py의 run_chunk_based 함수에 인텐트 분류 로직 추가. |
| 10:00 | 🦦 | 개선된 로직으로 API 테스트 재진행 및 결과 확인. |
| 14:13 | ⌨️ | 레거시 TTS 코드(b.js, b.html) 분석 요청. |
| 14:14 | 🦦 | 레거시 코드 분석 결과 공유 및 Web Speech API 활용 제안. |
| 14:15 | 🦦 | Chrome 비동기 버그 수정 패턴(setTimeout 등) 공유. |
| 14:22 | ⌨️ | 변경 사항이 안 보인다는 피드백 (SmartSearch 탭에서 확인). |
| 14:23 | 🦦 | SmartSearch가 아닌 꿀팁 AI(PipelineFeed) 탭 확인 안내. |
| 14:25 | 🦦 | 사용자 피드백 재확인 및 올바른 탭 안내. |
| 14:31 | 🦦 | 꿀팁 AI 전략 재정립 (검색과 피드 역할 구분). |
| 14:45 | 🦦 | ‘입국 전 모먼트’ 및 ‘시나리오 기반 일정’ 방향 기획 구체화. |
| 16:17 | 🦦 | TripFeed.jsx 및 목업 데이터 생성 완료. |
| 17:02 | 🦦 | AWS Polly 사용 결정 및 FastAPI 연동 완료. |
| 17:25 | 🦦 | TTSModal 컴포넌트 모듈화 및 전역 상태 관리 구현. |
| 17:43 | 🦦 | 팁 데이터에 phrases 필드 추가 및 상세 페이지 UI 연동 완료. |
4. 해결한 문제와 인사이트
데이터 품질 및 검색
- 문제: 팁 내용이 짧고 설명적이며, 로마자 검색이 되지 않음.
- 해결: GLM을 활용해 데이터를 보강하고, 쿼리 인텐트 분류 로직을 추가하여 로마자 검색과 정보성 질문을 처리함.
- 인사이트: 멀티링구얼 환경에서는 쿼리 전처리가 필수적이며, 데이터 품질 향상을 위해서는 수동 리뷰와 자동화 파이프라인을 병행해야 함.
TTS 시스템
- 문제: 브라우저 기본 TTS의 품질 저하 및 비동기 로딩 버그, API 키 노출 리스크.
- 해결: Web Speech API의 비동기 이슈를 이벤트 리스너로 임시 해결한 후, 장기적으로 AWS Polly(Neural Voice)로 전환하고
TTSModal로 모듈화하여 품질과 재사용성을 확보함.
- 인사이트: MVP 단계에서는 내장 API를 활용하되, 품질이 중요한 서비스에는 전문 API(SaaS)를 도입하는 것이 바람직하며, 컴포넌트 설계 시 확장성을 고려해야 함.
서비스 기획
- 문제: 맥락 없는 무작위 피드로 인한 사용자 참여 저하.
- 해결: ‘입국 전’ 모먼트와 ‘일정/시간대’라는 맥락을 부여하여 사용자가 읽을 이유를 제공하는
TripFeed를 기획하고 구현함.
- 인사이트: 복잡한 알고리즘보다 명확한 시나리오와 목업 데이터를 통한 사용자 경험 검증이 초기에는 효과적임.
5. 코드 변경 요약 (비직접 생성)
enrich_tips.py: 61개의 팁 데이터를 GLM API를 통해 action, why, fail_condition 필드를 보강하도록 배치 처리 로직 수정.
fix_situation.py: reasoning_content를 파싱할 때 문장 끝맺음(때, 요, 야, 다 등)을 체크하여 잘린 문장을 필터링하고 로그를 기록하도록 로직 개선.
api.py의 run_chunk_based 함수: 쿼리 인텐트를 분류(classify_query)하여 로마자 표기 변환 및 검색 경로를 분기하도록 로직 추가.
PhraseCard.jsx: Chrome 브라우저의 비동기 음성 로딩 문제를 해결하기 위해 onvoiceschanged 이벤트 리스너와 setTimeout(100) 딜레이 로직 추가.
TripFeed.jsx: 목업 일정 데이터(mock_itinerary.json)를 기반으로 시간대별 팁 카드를 렌더링하는 컴포넌트 신규 생성.
TTSModal 컴포넌트: 전역에서 TTS 기능을 호출할 수 있도록 모듈화하여 App 레벨에서 상태를 관리하도록 구조 변경.
- FastAPI
/tts 엔드포인트: 기존 Web Speech API 방식에서 AWS Polly(Neural Voice)를 호출하여 오디오를 반환하도록 백엔드 로직 수정.
Supported by ai-log-sync & GLM-4.7