Commit Graph

12 Commits

Author SHA1 Message Date
bfba87288f docs: 2~4단계 구현 계획 — 세 탭 모두 받아쓰기 후 댓글 매칭
세 탭이 결국 같은 흐름이 되므로 서버 조립 로직을 recommend.cuts_from_state() 하나로
모으고 화면은 이미 통합된 renderCutPanel() 을 재사용한다. 탭마다 다른 건
편집안을 어디서 얻느냐뿐이다.

가장 위험한 지점은 좌표계 둘(원본 시각=매칭, 압축 타임라인=자막·배치·장수)을
섞는 것이라 계획 전반에 명시했다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 10:25:19 +09:00
6df1930d06 docs: 1단계 구현 계획 — 파이프라인 분할 + 추천 엔진 준비 + 렌더러 통합
겉보기 동작이 하나도 안 바뀌는 구조 변경이라, 분할 전 이벤트 스트림을 파일로 떠 두고
분할 후와 문자 그대로 비교하는 방식으로 회귀를 검증한다(Task 4·5).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:55:31 +09:00
ef78702ca9 docs: 스펙 전면 개정 — 모든 탭이 받아쓰기 후 댓글 매칭
추천 근거를 Whisper 받아쓰기 하나로 통일한다. 지금은 자동·붙여넣기 탭이
LLM이 쓴 JSON 자막을, 구간 탭은 분:초만 본다.

자동 탭은 3단계로 나눈다 — 검토 화면의 ✕ 제외 버튼 때문이다. 받아쓰기를 먼저
돌리면 버릴 하이라이트까지 다운로드·받아쓰기하게 되므로, 제외를 먼저 고르게 한다.

파이프라인 두 개(process_paste, process_bg_template)를 모두 analyze/draft 로
쪼개야 해서 구현을 4단계로 끊는다. 1단계는 겉보기 변화 없이 회귀 검증만.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:35:13 +09:00
2d37d42893 docs: 스펙 범위를 구간 탭 + 붙여넣기 탭으로 확장
댓글 매칭이 일어나는 모든 곳에 같은 추천·배치를 적용한다. 붙여넣기 탭은
자막이 JSON 안에 있어 파이프라인·추천 엔진을 안 건드리고 화면만 붙이면 되므로
같은 스펙에 담는다. 카드 패널 렌더러가 세 갈래로 갈라지는 걸 막기 위해
renderCutPanel 하나로 모으는 것도 포함.

파일 탭은 제외 — 로컬 파일이라 원본 영상 시각을 몰라 분:초 매칭이 불가하다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:19:22 +09:00
4abf41ebcb docs: 구간 탭 2단계 분할 + 구간별 댓글 추천 스펙
받아쓰기가 빌드 중간에 있어 카드 고를 때 자막이 없다. 파이프라인을 쪼개
받아쓰기 다음에 고르게 하면 자막 품질·장수 정확도·중복 작업이 한 번에 풀린다.
다운로드 캐시가 없어 '매칭 때 받아쓰기, 빌드 때 캐시' 방식은 시간이 두 배가 된다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:08:29 +09:00
20a7c0c0a2 feat: 댓글 선택 화면에 검색(필터) 추가
카드가 수백~수천 장이라 원하는 댓글을 눈으로 찾기 어려웠다. 패널마다 검색창을
두고 모든 카드 섹션이 자기 전체 목록에서 필터링한다 — '더보기'로 안 펼친 카드도
검색되면 나온다.

캡처 누락 방지: 빌드/캡처는 wrapOf() 로 DOM에서 카드를 찾고 없으면 조용히
건너뛴다. 검색으로 선택 카드가 DOM에서 빠질 수 있으므로 buildAll 과
ytCC.capture 시작 시 clearSearch() 로 강제 해제한다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:05:41 +09:00
93fa0a3a21 docs: 스펙 §4.4 를 수정 후 실제 배치 방식에 맞게 갱신
무음 제거 시 카드 '시간'을 _remap_caps 로 옮긴다고 적혀 있었으나, 그러면
cards_fixed(3초 고정)가 압축되며 깨진다. 실제로는 _remap_placements 로
컷 '구간'을 먼저 옮기고 그 안에서 나눈다. 장수 캡과 버림 로그도 명시.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 15:06:30 +09:00
c39b72518f 컷별 카드 장수 공식을 floor로 통일 — round와 어긋나 카드가 조용히 버려지던 문제 수정
recommend.quotas_for()는 round, pipeline._cards_by_cut()의 컷당 장수 상한은 floor를
써서 둘이 어긋났다. 5초 컷처럼 round가 floor보다 큰 쪽으로 갈리는 컷은 UI가 카드
2장을 고르게 하고도 빌드 단계에서 상한(1장)에 걸려 뒤 1장이 로그 없이 버려졌다.
사용자 결정에 따라 floor로 통일(카드 한 장이 항상 3초 이상 — 기존
_load_comment_cards 규칙과 동일)하고, 무음 제거로 컷이 압축돼 여전히 카드가
버려지는 경우(이건 불가피)를 컷별 배치 로그에 표시해 더 이상 조용히 사라지지
않게 했다. 관련 설계/계획 문서의 공식·테스트 기대값도 floor 기준으로 맞췄다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 15:05:14 +09:00
754692a343 문서 3개를 실제 동작에 맞게 고침
계획서: "ci 가 undefined 면 마지막 컷 뒤에 붙는다, 배치상 문제 없다"는 근거가 틀렸다.
_cards_by_cut 은 컷 뒤가 아니라 컷 안에서 균등 분할한다 — 마지막 컷에 몰리면 번쩍인다.
왜  를 컷 안으로 흡수했는지로 다시 썼고 Step 3/4 코드도 실제 구현으로 맞췄다.

ARCHITECTURE.md: "카드도 자막과 같은 _remap_caps() 로 재매핑" → 실제로는
_remap_placements() 로 컷 구간을 옮기고 그 안에서 나눈다(무음 제거 뒤에 계산).
3초 하한 규칙도 명시.

SETUP.md: "컷 섹션이 안 보이고  하나만 뜬다 | Gemini 한도 초과" 는 나오지 않는 증상이다
— 한도를 넘겨도 컷 섹션은 그대로 뜨고 🤖 배지만 사라진다. 또 경고는 "검토 화면 상단"이
아니라 로그 영역(alog)으로 나간다. 두 행을 실제 증상 4행으로 다시 썼다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 14:16:45 +09:00
88768020bf docs: 계획서 Task 4 예시 except 튜플의 예외 누출 수정
리뷰에서 잡힌 구멍이 계획서 참고 코드에도 그대로 있었다. str.format 의
ValueError 와 .decode 의 UnicodeDecodeError(= ValueError 서브클래스)가
빠져 있어, 그대로 옮기면 "어떤 실패에도 예외 없음" 계약이 깨진다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 12:05:05 +09:00
2d12bd0fac docs: 계획의 Global Constraints 를 git 초기화 반영해 갱신
git 저장소가 아니라 커밋 단계가 없다고 적혀 있었으나, 저장소를 만들었으므로
태스크마다 커밋하도록 바꾼다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 11:36:40 +09:00
bf1b387d6d chore: git 저장소 초기화 (기존 코드 스냅샷)
컷별 댓글 추천 작업을 태스크 단위로 되돌릴 수 있게 버전관리를 시작한다.
.gitignore 로 영상·캐시(.downloads 2.7G, .comments 72M, .media 28M)와
비밀키(.gemini_key)를 제외했다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 11:36:05 +09:00