Skip to content

release: dev → main (bond/market-event/company analysis 스킬 + CLI version/update/analytics + 수정) - #707

Merged
vkehfdl1 merged 40 commits into
mainfrom
dev
Oct 8, 2026
Merged

vkehfdl1 merged 40 commits into
mainfrom
dev

Conversation

@vkehfdl1

@vkehfdl1 vkehfdl1 commented Oct 8, 2026

Copy link
Copy Markdown
Member

목적

dev에 머지된 신규 스킬과 수정 사항을 main으로 릴리스합니다.

신규 스킬 (minor)

CLI (@nomadamas/k-skill)

수정

Changesets

.changeset/*.md 포함 — 머지 후 Version Packages PR 생성.

검증

릴리스 전 신규/변경 스킬 manual QA 수행 (결과는 코멘트 참조).

vkehfdl1 and others added 30 commits September 20, 2026 00:04
Use the public k-skill analytics Project API Key as the CLI default so
usage events are captured without extra env setup. POSTHOG_API_KEY and
KSKILL_ANALYTICS_DISABLED still override or disable collection.
feat(k-skill-cli): add PostHog usage analytics
기업분석 스킬: 공개 공시 기반 6개 섹션 채팅 분석
a.mjson was never set by args(), so '--market both --json' printed the
chat text instead of dualSummary JSON and the mutual-exclusion guards
were dead. Read a.json instead and add two CLI regression checks
(kr+json rejection, dual replay json parse), now 143 harness checks.
…nd-analysis

feat: 한·미 국채시장 분석 스킬 추가
한국 채권 종목 조회·비교 스킬 추가
KOBUS 응답은 실제 fnSatsChc('...') 호출과 HTML 주석 프로토타입
fnSatsChc(deprTime,...)을 함께 담는다. 파서가 원본 전체를 대상으로
정규식을 돌려 주석 템플릿까지 운행편으로 만들었고, 그 결과 편수가
2배가 되고 raw_args=[]·departure_time=null 항목이 생겨 선점 단계에서
IndexError가 났다.

주석/템플릿을 먼저 제거하고, 여는 따옴표가 있는 실제 호출만 매칭하며,
필수 인자 수(14) 미만은 버린다. --select-index 범위 검증도 추가한다.
로그인 POST가 403을 반환해도 helper는 예약 페이지로 이동한 뒤
#srchSido가 있다고 가정했다. 로그인 실패 시 그 페이지에는 로그인 폼이
남아 있어 page.evaluate의 null.options가 처리되지 않은 Playwright
TypeError로 터졌다.

제출 후 로그인 폼 잔존 여부로 실패를 판별해 자격증명 확인, CAPTCHA
수동 처리, --refresh-session 재시도를 안내하는 SystemExit으로 종료한다.
예약 페이지의 #srchSido·#srchInstt 존재도 조회 전에 검증하고, CSRF
토큰 부재 메시지에도 재시도 안내를 붙인다.
apis.data.go.kr·kosis.kr 같은 상위가 TCP timeout이면 라우트가 불투명한
500 proxy_error + "fetch failed"만 돌려줘 원인을 구분할 수 없었다.

upstream-errors.js의 classifyUpstreamFailure로 DNS/connect 실패를
503 upstream_unreachable, connect/response timeout을 504 upstream_timeout
으로 매핑하고, setErrorHandler가 upstream.cause와 upstream.route를 함께
응답한다. gpu01 이관 문서에 상위 연결 트리아지 절차를 추가한다.
…-schedules

fix(express-bus-booking): KOBUS 주석 템플릿을 운행편에서 제외 (#698)
vkehfdl1 and others added 10 commits October 6, 2026 18:15
fix(foresttrip-vacancy): 로그인 실패를 안내 오류로 처리 (#699)
…lassification

fix(k-skill-proxy): 상위 연결 실패를 503/504로 구분 (#700)
수주나비 조언 검토(DUNAqFB9Q, E66x89rHr) 중 타당한 항목을 반영한다:

- /v1/g2b/sanctioned-supplier 응답에 lookup_status(active_sanctions_found /
  no_active_sanctions / lookup_failed)를 추가하고, 실패 경로(프록시 키 없음,
  fetcher 예외 포함)에서도 lookup_failed를 남겨 조회 실패와 제재 없음을 구분한다.
- 성공 응답에 upstream JSON 원문(upstream_response), 실제 upstream 확인시각
  (coverage.checked_at / source.checked_at), 고정 source.query를 보존한다.
- CLI helper가 구조화된 실패 payload를 그대로 stderr에 전달하도록 한다.
- g2b-order-plan-search에 검색 후보와 참가자격 검토를 구분하는 Workflow 4를
  추가한다. 지역/면허·업종/실적/등록·인증 4항목을 공고 원문·URL·차수·기준일과
  대조하고, 근거가 없으면 확인 필요로 남긴다. 정정공고 시 최종 원문 기준
  재확인을 요구한다.
- biz-health-check에 상태 정상·제재 0건이 공고별 참가자격 판정이 아님을 명시하고,
  lookup_failed/no_active_sanctions/unavailable을 구분해 전달한다.
- 검색 노출·사업자 상태 정상·제재 0건만으로 참가 가능을 답하지 않도록
  관련 스킬 문서와 프록시 응답 계약을 정리한다.

TDD: server.test.js에 성공/0건/실패 3경로 lookup_status·upstream_response
회귀 테스트를 먼저 추가해 red를 확인한 뒤 구현했고, CLI helper에도 실패
payload 전달 회귀 테스트를 추가했다. CLI 스냅샷과 번들 에셋을 갱신했다.

검증: npm run ci 통과(회사분석 python 테스트 1회 네트워크 플레이크 후 재실행
통과), 로컬 프록시 기반 CLI 수동 QA로 성공/0건/실패 3경로 확인.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
k-skills-list.md is the source of truth for the browsable skill list.
scripts/generate-skill-list.js rebuilds k-skills-list.html from it and
exits non-zero when a skill directory with a skill.json is absent from
the markdown, so the list cannot silently drift as skills are added.

The generated html and pdf stay out of the repo; the script prints the
Chrome print-to-pdf command instead of shelling out to a mac-only path.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
k-skills-list.html이 저장소에 커밋되어 있지 않아 기존 스크립트는
작성자 로컬 파일이 있는 환경에서만 동작했다(ENOENT). HTML 템플릿을
스크립트에 내장해 md만으로 누구나 페이지를 재생성하도록 수정하고,
생성물 k-skills-list.html/.pdf를 .gitignore에 추가했다.

- 누락 가드(md ↔ skill.json 디렉토리 대조, exit 1)는 그대로 유지
- 검색 필터/카테고리 아이콘/개수 표시 기능 유지, 브라우저 QA 완료
feat(g2b): 제재 조회를 감사 가능하게 만들고 참가자격 판단 경계를 명시
@vkehfdl1

vkehfdl1 commented Oct 8, 2026

Copy link
Copy Markdown
Member Author

Manual QA 결과 (dev @ 82a0f36)

대상 방법 결과
company-analysis 실 SEC/Nasdaq/Naver/DART 수집 → snapshot → evidence.js, 변조·식별자 누락·로그인벽 등 negative PASS (SEC User-Agent에 연락처 없음: low, 비차단)
government-bond-analysis 실 ECOS/UST로 dual/preset/trend/replay/tamper/news/schedule, harness 143 checks PASS
korean-bond-search 실 SEIBro 상세 페이지 기반 CSV/CP949/HTML/JSON, 실패 모드 3건 발견 → 수정(선후순위 구분 헤더, options CB/EB/BW 누락, 상세 유형 한글화) + 회귀 테스트
market-event-impact 실 Fed/Treasury 일정·시계열, 해석불가/미래 이벤트 failure PASS (BOK는 browser_required 문서화 경로)
express-bus-booking #698 실 KOBUS 조회: 파서 24편 == 실제 24편 (구 regex 48), --select-index 범위 오류 PASS
foresttrip-vacancy #699 더미 계정 1회 로그인 → 안내 SystemExit PASS
g2b #705 lookup_failed / 활성 제재 / 0건 구분 (이 호스트는 data.go.kr 차단 → 로컬 proxy+mock) PASS (실 success 경로는 환경상 미관측)
k-skill-proxy #700 실 서버 + 장애 주입: 503 upstream_unreachable / 504 upstream_timeout PASS (kstartup·lh-notice 등 로컬 catch 라우트는 기존 502 유지)
CLI version/update --check/analytics PostHog opt-out·로컬 리스너 검증 PASS
generate-skill-list fresh worktree 131 skills PASS

npm run ci exit 0.

@vkehfdl1
vkehfdl1 merged commit e7bbb29 into main Oct 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants