- 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>
50 lines
2.3 KiB
Markdown
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를 덮어쓰게 만들지 않는다.
|