DOCS/skills/260325_integration_test_result.md
happybell80 886bd42ae3 docs: 신규 스킬 7개 SKILL.md + 원칙 문서 중복 제거 + 구현 결과 문서
- session-logs, blogwatcher, summarize, whisper, gitea, himalaya, skill-creator SKILL.md
- SKILL.md 인덱스 업데이트 (16개 스킬)
- 311/314/315 상위 SSOT 중복 제거 + 링크 수정
- Phase 1-3 결과 + 테스트 결과 + evaluation 트러블슈팅

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 01:23:15 +09:00

50 lines
2.3 KiB
Markdown

---
date: 2026-03-25
subject: 신규 스킬 통합 테스트 결과
writer: 24-claude (총괄)
testers: 24-Cursor(session-logs), 24-Codex(summarize), 24-Gemini(RSS), 23-Cursor(gitea)
---
# 신규 스킬 통합 테스트 결과
## 테스트 요약
| 스킬 | 상태 | 응답 시간 | 비고 |
|------|------|----------|------|
| **session-logs** | **정상** | ~20ms | 한글 q 파라미터 URL 인코딩 필요 |
| **blogwatcher (RSS)** | **정상** | 테스트 중 | feedparser 동작 확인 |
| **summarize (text)** | **정상** | ~1.5s | LLM 호출 포함 |
| **summarize (url)** | 수정 후 정상 | - | 컨테이너→호스트 IP 문제 해결 |
| **whisper** | **설정 완료** | - | OPENAI_API_KEY compose override 문제 해결 |
| **gitea** | **인증 대기** | ~6.6ms | GITEA_TOKEN 미설정 → 400 정상 에러 반환 |
## 발견된 이슈 및 해결
### 이슈 1: 컨테이너→호스트 통신 (summarize, whisper, gitea)
- **원인**: Docker 브리지 네트워크에서 `localhost:8001` = 컨테이너 자신
- **해결**: `.env``LLM_GATEWAY_URL=http://192.168.0.106:8001/api/llm/generate` 설정
- **근본 원인**: compose `environment``${VAR:-default}` 패턴이 env_file보다 우선
### 이슈 2: OPENAI_API_KEY 빈 값 덮어쓰기 (whisper)
- **원인**: compose `environment: OPENAI_API_KEY=${OPENAI_API_KEY}` → 호스트에 env 없으면 빈 값
- **해결**: compose environment에서 해당 줄 제거, secrets.env에서 직접 주입
### 이슈 3: GITEA_TOKEN 미설정
- **상태**: 의도된 동작 (400 에러 정상 반환)
- **해결**: secrets.env에 GITEA_TOKEN 추가 필요
## 성능
| 스킬 | 응답 시간 | 병목 |
|------|----------|------|
| session-logs | 20ms | DB 쿼리 (빠름) |
| summarize (text) | 1.5s | LLM 호출 |
| gitea | 6.6ms | HTTP 프록시 (빠름) |
## SSOT 교훈
compose `environment``${VAR:-default}` 패턴은 `env_file`보다 우선 적용되어 SSOT 원칙을 위반할 수 있음.
**원칙 추가 권장**: compose `environment`에 env_file과 겹치는 변수를 `${VAR:-default}` 형태로 두지 않는다.
이 원칙은 이미 `infrastructure-ssot-principle.md §7`에 있음:
> 공용 env_file을 읽는 compose는 같은 키를 environment: KEY=${KEY}로 다시 선언해 로컬 .env placeholder가 runtime.env·secrets.env를 덮어쓰게 만들지 않는다.