joungmin 446969b862 note STT: OpenRouter 경로 오버랩 청크 분할 + 퍼지 디덥 병합
대용량 오디오가 OpenRouter(Gemini) 단일 요청 한도(~20MB)를 초과해 502로
실패하고, 깨진 Gemma fallback(ollama runner crash)으로 넘어가 전체 실패하던
문제 수정.

- 공통 청크 분할기 transcribeChunked(전략 패턴)로 OpenRouter/Gemma 통일
- CHUNK_SECONDS=180s, OVERLAP_SECONDS=10s 오버랩 분할(경계 단어 손실 방지)
- mergeWithOverlapDedup: 인접 청크 토큰 위치정렬 80% 일치로 중복 제거,
  미검출 시 줄바꿈 안전 연결(누락 방지)
- 청크 실패는 기록·로그 후 [변환 실패한 구간 번호] 명시, 전부 실패 시 예외
- transcribeAsync의 Gemma fallback도 단발→transcribeWithGemma(청크) 사용

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 05:36:40 +00:00

SUNDOL

Smart Unified Natural Dog-Operated Layer

Personal Knowledge House · AI Assistant · Productivity Hub

Features

  • Knowledge Ingestion — YouTube, blog, news, raw text 자동 수집 및 처리
  • Semantic Search — Oracle 23ai VECTOR 기반 의미 검색
  • AI Chat (RAG) — 지식 기반 대화, 출처 인용
  • Study Cards (SRS) — SM-2 간격 반복 학습 카드
  • Todos — 작업/하위작업 관리
  • Habit Tracker — 습관 추적, 스트릭 관리

Tech Stack

Layer Technology
Backend Spring Boot 3, Java 21
Frontend Next.js 14, TypeScript, Tailwind CSS
Database Oracle 23ai (VECTOR support)
AI OCI Generative AI (Cohere / Llama)
Auth Google SSO + JWT
Cache Redis

Getting Started

# 1. 환경변수 설정
cp .env.sample .env
# .env 파일에 실제 값 입력

# 2. Docker Compose로 실행
docker-compose up -d

# 3. 개별 실행 (Backend)
cd sundol-backend
mvn spring-boot:run

# 4. 개별 실행 (Frontend)
cd sundol-frontend
npm install && npm run dev

Project Structure

sundol/
├── sundol-backend/      # Spring Boot 3
├── sundol-frontend/     # Next.js 14
├── db/migration/        # Flyway SQL scripts
├── docs/                # Specifications
├── docker-compose.yml
├── .env.sample          # Environment variable template
└── README.md

자세한 스펙은 docs/SUNDOL_SPEC.md 참조.

Description
SUNDOL - Smart Unified Natural Dog-Operated Layer
Readme 672 KiB
Languages
Java 50.7%
TypeScript 31.7%
JavaScript 13.4%
PLSQL 1.8%
Python 1.4%
Other 0.9%