103.8 KB · 수정 2026-10-14 00:31
목차

talklog 아카이브 — 검토·폐기된 수집 경로 이력 (2026-06-11)

전용 앱(접근성 화면 스크랩) 방향 확정 전까지의 탐색 이력. 원문 보존(요약 아님). 현재 방향은 handoff.md·design.md.

✅ 26.9.20 · talklog · LIVE STT 정리본 주기 25초 → 60초(1분 간격) — [페페] 토큰 결정

✅ 26.9.17 · talklog · 03:0x~03:3x KST — [페페] 「정리본 생성 실패 rc=3221225794 · 원인 파악·시스템 보완 · 화자분리 옵션 버튼 · 시스템 로딩 표시」 → [코디] 4건 전부 완료

① 사고 — 무엇이 날아갔나

② 원인 3겹 — 겉이 아니라 안쪽이 진짜였다(규칙 = rules.md 🆕 26.9.17 일곱 줄)

  1. 프로세스 기동 실패 — 정리본이 claude.cmd(=cmd.exe 한 겹)를 불렀고 그 cmd.exe 가 0xC0000142 로 기동 실패. 이벤트로그 System/Id 26 에 09:59:01·10:02:26·10:05:51·10:20:49 네 건. 같은 오류가 9/10·9/11·9/15 에 codex-command-runner-*.exe 로도 수십 건 = 이 PC 공통 증상(AppInit_DLLs·AppCertDlls·IFEO·Verifier 전부 비었고 자원고갈 이벤트도 없다 → 주입 DLL 아님).
  2. 🔴80분을 삼킨 진짜 범인 = 윈도우 stdin 파이프 — CPython 윈도우 _communicate 는 _stdin_write 를 timeout 자리보다 먼저 무제한 blocking 으로 한다. 40KB 전사 + 모달 앞에 선 자식 → 10:20:49~11:40:08(80분) 정지. 팝업 간격 205초(=timeout 180 + NOTES_SEC 25)가 결정적 단서였다. 우리는 이 80분을 처음에 「화자분리가 느린 것」으로 오진했다 — 화자분리는 12초였다(그 오진 상태로 1차 구현을 했고, Fable 계획 에이전트가 잡아냈다).
  3. 실패가 성공을 덮었다 — 오류 문구를 «본문»으로 돌려줘 호출부가 notes_md 에 썼다 → 중간 정리본까지 전손. 로그·알림·재생성 수단 전부 없었다.

③ 고친 것 — C:\dev\talklog\live\live_server.py

④ 화자분리 on/off — 녹음 시작 직전에 한 번(녹음 시작시 결정 요구 그대로)

⑤ 시스템 로딩·정상작동 표시

⑥ 검증

⑦ 남은 것


2026-09-16 이관 — HANDOFF NOW 8000자 캡 (원문 그대로)

✅ 26.9.11(금) 17:1x KST — 라이브 전사(talklog live) 폰 접속 복구 → 새 링크 https://100.108.234.45:8445/

페페 「8444 모바일 접속 안 됨(보안 연결 페이지) + 화면 끄면 계속 녹음되나」. 원인 = 재부팅으로 서버 꺼짐 + 8444 를 photoapp 의 tailscale serve 가 tailnet IP 에서 선점(폰은 tailscaled 로 가서 TLS 실패). 처방 = 포트 8445 + 재기동. 검증 = tailnet IP 200 · 페페 S25 가 17:13 KST 에 실제 접속 200. ⚠자동기동 없음(재부팅하면 wscript C:\dev\talklog\live\start_live_hidden.vbs) · photoapp 백엔드 8812 도 꺼져 502(미조치). 🔴화면 끄면 녹음 멈춤(실측 노트20) = 끈 뒤 약 60초 후 0, 켜면 이어지지만 그 사이 소리 유실 → 화면 켜둔 채 사용. 끄고도 녹음 = 네이티브 앱(⏳페페 판단). ⏳18:2x 후속 = LIVE STT 2차 착수(그릴링 4묶음 확정 · 포트 게이트 A 완료 · B 목업 완료 · 앱 C 대기) — 이어받기 인계문 = projects/talklog/relay-2026-09-11-livestt-v2.md(✅19:05 ruleguard 탐지기 port-unregistered 연결 완료 — 26.9.12 00:07 KST 부터 차단 · ✅20:1x B 웹 완료 = 카드 목록·이어 녹음·합치기·부제 잠금·테라코타, talklog b7b92eb+8c0854d, 테스트 전부 통과·tailnet 200 · ✅20:5x 환청·AI 편향 수정 2db27de · ⏳C 앱 = 새 세션 인계 projects/talklog/relay-2026-09-11-livestt-c-app.md(S25 연결됨 · 인증서 = tailscale serve 정식) · ⏳페페 = 폰·노트북 실기 육안). 🆕21:2x C 서버 완료 = /ingest(장부 fsync 후 ACK · 재시작 복구) talklog 122f2e6 · _test_ingest 24/24 · 운영 8445 재기동 · 새 주소 https://poin-mini.tailc5d3c1.ts.net:8446/(정식 인증서 · wss 통과) · ✅22:0x 앱 v0.2 S25 설치(C:\dev\talklog\livestt-app · talklog 92f44a7 · 66.1초 녹음 = 서버 66.1초) · ✅22:2x v0.3 = 상단 타이틀 상태바 가림 수정(edge-to-edge 끔) — [페페] 실기 확인 「가려지는 부분 없음」 · ⏳페페 = 수용 시험(화면 끈 채 30분+ · 비행기모드 5분 · 전화) → 상세 projects/talklog/handoff.md 맨 위. 계획 = http://100.108.234.45:8799/livestt-v2-plan.html · 포트 장부 = C:\dev\tools\portgate\PORTS.md. 상세 = projects/talklog/handoff.md 맨 위 · 함정 = projects/talklog/rules.md 🆕 맨 위.

폐기된 수집 방안 비교 (탐색 이력)

방안 정책 자동화 폐기 사유
① 공식 내보내기 + 폴더감시 안전 수집만 수동(방당 ~30초) 자동화 아님(수동 트리거). 단 처리부는 채택·재사용
②' VM 카톡PC + UI 자동화 회색(매크로) 전자동 카톡 PC 동시로그인 1대 제한 → 페페 PC 강제 로그아웃, 주간 상시 충돌
② Android 알림 리스너 회색(서버 미접촉) 전자동 내 발화 누락(수신 위주)·푸시끈방/장문잘림 유실 → 양방향 요건 미달
③ 카카오워크/채널 전환 공식 전자동 거래처가 옮겨와야 함 → 외부 단톡 부적합
④ 카톡 내장 카나나 요약 공식 — 인앱 한정·외부 반출 불가
⑤ 부계정 + VM 회색(매크로) 전자동 단톡만(1:1 불가)·실회선 필요·거래처 양해. 1:1 포함 요건에 미달
톡드라이브 채팅방 저장소 안전 반자동 전체 통째만 저장(부분 불가) + 톡클라우드 300GB 미디어 용량 한계 → 정기 수집 부적합
모바일 미러링(보조폰) 회색 전자동 카톡 모바일도 1대 원칙 → 주력폰과 충돌

외부 AI 도구 평가 (도입 안 함)

핵심 제약 (방향 결정의 근거)

정책 조사 사실 (2026-06-11)

로그인 운영 사실

2026-07-24 이관 — 루트 HANDOFF NOW 완료건 (원문 그대로)

완료(2026-08-03) — 수집기 진단+업데이트 (HANDOFF에서 원문 cut, 2026-08-05)

2026-08-08 — 통화 재수집 차단(fail-closed) + 코디 cmd 창 전수조사 ✅

🆕talklog 통화 재수집 차단 + 코디 cmd 창 전수조사 [코디] 26.8.8 ✅둘 다 완료·실측 검증. ①S25가 과거 통화 586건을 재업로드한 원인 = 증분 조회 fail-open — /calls-have를 못 받으면 빈 맵 = 전부 신규로 진행하는 코드였다(S25를 미니PC에 유선연결한 직후 서버 미도달). 🔴로그가 정상처럼 보인 이유 = 업로드 실패를 catch {}로 삼켜 night_audio uploaded=586 **skipped=0 실패 0**이었는데, 실은 알파벳 앞쪽 506건은 업로드조차 못 하고 24건이 PC에서 통째로 누락돼 있었다(파일 mtime 프리픽스 패턴으로 특정). 수정 = fail-closed(조회 실패 시 수집 중단·예외로 텔레메트리에 남김) + failed 카운터 + 서버 /upload-audio가 같은 이름+크기면 안 쓴다(앱 재설치·타 클라이언트까지 커버). APK v0.29 빌드·S25 설치(adb, 미니PC USB) + 서버 재기동. 검증 = 트리거 2회 → uploaded 25 / skipped 1069 / failed 0(누락분 회수) → uploaded 0 / skipped 1094 / failed 0(완전 멱등). ②cmd 창 = pipeline_worker.py가 부르는 claude.cmd가 범인(50ms 폴링 감시기로 현행범 확보). 🔑부모에 건 CREATE_NO_WINDOW는 손자에게 안 간다 — talklog_server(pythonw)→워커(pythonw)→claude.cmd. 전수조사 = 예약작업 41·HKCU/HKLM Run·시작프로그램·vbs 창스타일·C:\dev 전 .py(콘솔앱 spawn 40건) → 실제 위험은 pythonw 계열 3건(pipeline_worker.py·ytmine.py·게이트웨이 runner.py)로 좁혀 import nowin 삽입, 나머지는 숨김 vbs(콘솔 상속)라 무해 확인. A/B 실측(Start-Process, 리다이렉션 없이) = 대조군 창 뜸 / 실험군 0. ⏳남은 것 = 오피스PC 동일 점검(C:\dev 사본이 따로라 이 수정이 안 간다). → projects/talklog/rules.md · rules/tooling.md

2026-08-09 — C드라이브·dev 정리 + Autodesk Access 누수 차단 ✅

🧹 루트 HANDOFF NOW 이관 (2026-08-19 대청소 — pncad 외 전량, 페페 지시)

루트 HANDOFF.md를 pncad 만 남기고 비웠다. 아래는 그때 옮겨온 원문(문구 무변경).

🧹 루트 HANDOFF 이관 (2026-09-07) — 원문 그대로

✅ 26.9.4 21:5x KST — 모임 녹취 4파일 종합 정리 페이지 — http://100.108.234.45:8799/meetup-20260904-nakseong.html

페페 「오늘 모임 정리파일 텍스트 4개 텔레그램으로 보냈어, 중간에 끊겨서 분산됐다. 종합해서 정리해줘. html 로」. 🔑실은 4개가 아니라 세션 2개였다 — 텔레그램 도착분 5개 중 해시 동일 1건, 전사 길이 대조로 앞선 짧은 판 1건이 걷혔다 (세션1 전사 13,339자 / 세션2 9,059자 · 세션2는 회의록 판이 둘이라 문구가 다른 두 판을 다 반영). 회의록만 이어붙이는 안은 버렸다 — 각 판은 자기 조각만 커버해 세션 경계가 빈다 → 전사 원문을 다시 읽어 종합. 산출 = C:\dev\devplan\meetup-20260904-nakseong.html(87.7KB · 세션1 사내 AI 시스템 시연 11절 · 세션2 AI격차·낙성사업·도구운용 7절 · 참석자 논의 4절 · 결정 13 · 액션 12 · 전사 전문 2건 접이식) · 빌더 _mk_meetup_20260904.py · 원본 사본 devplan\media\meetup-20260904\. 착수 전 web-designer 상담(상시 지시) 처방대로 = Bootstrap 미적용(읽기 문서엔 과설계) · 본문 780px · 스티키 목차 200px · 세션 구분 색+라벨 병기 · 전사 4문장 단락. 🔴선례 lecture-20260627-claude-code.html 은 13px 하한 위반 6곳 + hex 재선언이라 복붙 금지(규칙 확정 전 유물). 검증 = check_font.py/check_theme.py FAIL 0 · build_hub.py --selftest 11항목 OK · Playwright 실측(목차 sticky 60px·본문 780px·깨진 앵커 0·폰 412px 헤더 겹침 해소) · 허브 3개소 = 📌최근 등록·작업 보드 26.9.4(금) 행 노출 · 🕒최근 작업 진행 맨 위 · 🗂️미생성 세션 = 해당 없음(카드 있음). 부수 = 매니페스트 교착 해소 — 남이 두고 간 고아(ai-study/session-2026-09-04-dev-portfolio.md) 때문에 등록이 서로 롤백돼 둘을 직접 append 후 validate_manifest 1회로 통과(313건). 규칙 = projects/devplan/rules.md 🆕 맨 위 2줄.

✅같은 날 22:2x 추가 지시 = 화자분리 재작성(신동승 · 조영탁 대표(케이라운지) · 목기찬(대학 행정직)). 🔴녹음 파일은 없다 — live_server.py 는 lecture-*.md 만 쓰고 ws PCM 은 전사 후 버린다(오디오 원본 미보존). 미니PC·노트20(USB)·텔레그램 수신함 전부 그 시간대 오디오 0건 · S25 는 무선디버깅 꺼짐(포트스캔 결과 adb 거부)이라 확인 불가 → pyannote 화자분리 실행 불가 → ⏳페페가 폰 녹음을 텔레그램으로 보내면 stt 경로로 진짜 분리로 교체한다. 대신 내용 기반 추정 화자분리로 재작성 = 63턴(세션0 1·세션1 28·세션2 34), 확신 낮은 10턴은 이름 뒤 ?, 화면 재생음 2구간은 「(영상·나레이션 소리)」. 방식 = 앵커 방식(턴 시작 문자열만 표에 적고 스크립트가 원문을 자른다 → 원문 재타이핑 0 · 앵커 0회·2회면 빌드 FAIL). 🔑부수확 2건 = ①data/lectures/ 를 날짜로 훑어 페페가 안 보낸 19:16 세션(501자 = 모임 도입부, 조영탁 대표 결재·계약 화면 시연)을 찾아 세션 0으로 편입 ②그 도입부와 이어 보니 기존 정리본의 「세팅→판매→지분 남기고 빠짐」이 신동승이 아니라 조영탁 대표 것이었다 — 오배정 교정. 규칙 = projects/talklog/rules.md 🆕 맨 위 2줄(오디오 미보존 · 전사 파일은 보낸 것만 보지 말고 data/lectures/ 를 날짜로 훑을 것). 📮카톡 발송 완료(페페 지시) — 노트20 → 「신동승」 방, phone.py sendlong 2버블 1,247자(요약 + 링크 + 화자분리 상태 안내). 📎HTML 파일도 카톡 발송(추가 지시) — phone.py sendfile 로 단일 파일본 106,042B 첨부(폰 /sdcard/Download/ 크기 대조 일치, 70.5초). 단일 파일본 = 빌더 standalone() 신설(theme.css 인라인 + qahelper 제거) — 첨부만 보내면 /assets/* 가 안 붙어 맨몸 HTML 이 된다. 규칙 = projects/devplan/rules.md 🆕 맨 위. ⏳목소리 기준 화자분리는 파이프라인이 이미 있다(tools/stt/stt.py → gpubox 집PC 4070 → WhisperX+pyannote) — 막힌 건 오직 오디오 원본이다. 선택지 = ①폰 녹음을 텔레그램으로 → stt 로 교체 ②앞으로를 위해 live_server.py 가 WAV 도 남기게(≈10줄, 16k 모노 115MB/시간) — 페페 지시 대기.

✅ 26.9.4 19:0x KST — 실시간 전사·회의록 페이지(talklog live) 복구 — 폰 링크 https://100.108.234.45:8444/

페페 「실시간 전사 정리 페이지 복구해줘, 테일스케일로 접속한다」. 서버는 꺼져 있었고 옛 포트 8443·8793 을 남이 다 잡고 있었다 (8443 = tailscaled Funnel → 127.0.0.1:8815 · 8793 = tools\furniture-voice\server.py) → 8444 로 옮겨 기동. 방화벽은 포트가 아니라 프로그램 단위 허용(python39.exe) 이라 포트 변경만으로 폰 도달은 그대로다. 기동 = wscript C:\dev\talklog\live\start_live_hidden.vbs(창 0 · 로그 C:\dev\talklog\live\_live.log). 🔴함정 = 한글 주석이 든 .bat 을 UTF-8 로 저장하면 cmd(cp949)가 조용히 깨뜨린다('CE'은(는) …) → bat 주석은 ASCII 로 재작성, start /b prog > log 2>&1 도 안 먹어 start /b cmd /c "…" 로 감쌌다. 검증 = GET https://100.108.234.45:8444/ 200(자체서명, SAN 에 100.108.234.45 · 만료 2027-06) · rehearse.py 로 실제 ws 스트리밍 E2E → 전사 「아빠가 올라오래」 + 저장 C:\dev\talklog\data\lectures\lecture-20260904-190011.md · 회의록 쪽 claude -p(opus, 구독 OAuth) 단독 호출도 정상 산출. 규칙 = projects/talklog/rules.md 🆕 맨 위.

2026-10-14 이관 — HANDOFF NOW 20000자 캡 (원문 그대로)

(기록) 26.9.30 · S25 야간수집 OFF 대기 — ADB 연결 시 자동

✅ 26.9.22 · talklog · 폰 앱도 같이 고친다(상시) — livestt-app v0.4 = 일시정지를 앱이 안다

✅ 26.9.22 · talklog · LIVE STT 녹음화면 폰 본문 확보 — 액션바 1행 + 「⋯ 더보기」 시트

✅ 26.9.21 · talklog · LIVE STT 토큰 다이어트 — [페페] 3단 구성 결정 → 구현·배포 완료

✅ 26.9.19 · LIVE STT 일시정지/재개 + 공개 링크를 폰에서도

✅ 26.9.19 · LIVE STT 회의 참석자용 공개 링크 + 화자 이름 필터 + 토큰 소비량

✅ 26.9.17 · talklog · LIVE STT 정리본 사고 규명·복구 + 화자분리 스위치 + 시스템 상태 표시

✅ 2026-09-15(화) 05:0x KST — [페페] 「LIVE STT 가 미니PC 재부팅으로 죽었다 · 재부팅 스케줄러 + 상시 오픈」 → [코디] 자동기동 완료

✅ 2026-09-14(일) 11:3x~11:45 KST — [페페] 「노트20에 LIVE STT 설치」 → [코디] 설치·실기검증 완료

✅ 2026-09-12(토) 16:2x KST — [코디] 노트북 인터넷 끊김 중 LIVE STT 웹 세션 자동복구 실증(유실 0)

페페 「노트북 인터넷이 끊겼었다. 라이브 STT 중단 — 현재 화면에서 다시 녹음 진행시켜줘」 → 점검해 보니 이미 스스로 이어붙어 녹음 중이었다. 조치 없이 확인만. - 항목 = lecture-20260912-092654(제목 「26.9.12(토) 09:26」 · 부제 「AI 바이브코딩 스터디 실습 하루」) · 세션 3c4eb8cb · 클라이언트 = 노트북 poin-lap 100.122.253.61 Chrome 153. - 끊긴 구간 = 16:11:40 → 16:20:43 KST(약 9분). 서버는 세션을 600초 살려두고 기다렸고(SESSIONS[sid]), 브라우저가 붙자마자 쌓아둔 오디오를 208초·198초·127초 덩어리로 몰아 올렸다(whisper 로그의 긴 duration 이 그 증거). - 유실 판정 = 0 — wav 25,036초 vs 세션 시작(09:26:54)부터의 벽시계 24,966초 → 오히려 +70초(백로그 재전송 겹침). 항목 json gaps = []. - 실시간 복귀 확인 = wav 실측 10초에 10초분 유입 · whisper 청크가 2~8초짜리로 돌아옴(백로그 따라잡음) · tailscale ping poin-lap 4ms. - ⚠끊김 총 103회(하루 누적) — 25~30초짜리 짧은 재접속이 대부분이라 소리는 안 잃었지만, 9분짜리 장기 끊김도 백로그가 버텼다는 게 이번 실측의 새 사실(26.9.9 안전망 설계가 실전에서 통했다). 사람이 할 일 = 아무것도 없다. 새로고침·새 녹음 금지(새 항목이 생겨 갈라진다).

✅ 2026-09-11(금) 17:1x KST — [코디] 라이브 전사 폰 접속 불가 복구 — 새 링크 https://100.108.234.45:8445/

페페 「https://100.108.234.45:8444/ 모바일 접속 안 된다. 보안 연결 페이지 뜨고 접속 안 됨. 폰 화면 껐을 때도 계속 녹음되나」.

✅ 2026-09-09(수) KST — 라이브 회의 전사에 음향 화자분리 + 끊김 복구 (devplan 등록 완료)

페페 「실시간 stt 회의 정리 프로그램 devplan 에 올리고 화자분리 사운드에서부터 할 수 있는 기능 추가. 문맥으로 분리 안 하고 목소리로 분리한다. 그리고 중간에 휴대폰을 끄면 녹음이 중단되는 경우가 있는 것 같다. 이 부분도 보완」.

⏳페페 몫 3건 = ①실제 회의 1건으로 폰 실기 확인(끊김 배너·복구 진동·화자 라벨 가독성) ②폰 Chrome 배터리 「제한 없음」 + 절전 예외(화면 꺼짐 생존율을 올리는 건 코드가 아니라 이쪽이다) ③회의 녹음이 생기면 TALK_SPK_THRESH 재측정(지금 값은 전화 대역 기준).

⚠보장하지 않는 것 = 「화면 끄고 장시간」은 웹으로 보장 못 한다(코덱스 확인 — 확실히 하려면 네이티브 AudioRecord + 마이크 포그라운드 서비스). 이번 작업은 끊겨도 안 잃게 하는 안전망이지 안 끊기게 하는 보장이 아니다. 네이티브는 안 만들었다.

규칙·함정 = projects/talklog/rules.md 🆕 맨 위 4건. 매뉴얼 = C:\dev\talklog\live\README_LIVE.md.

📜 26.6.18~7.24 인용 블록 — 원래 handoff 의 26.9.9 절 아래에 붙어 있던 상태 기록 (원문 그대로)

🔎 카톡 collector 해결방안 조사 완료(2026-07-23, 워크플로 25에이전트 2회전·6축 조사+적대검증). 페페 질문 = "ADB 끊김·잠금화면일 때 카톡 수집 가능한 방법". - 결론: "ADB 끊김 + PIN 잠금" 동시 상황에서 카톡 UI를 읽어 텍스트를 뽑는 방법은 없다(Android 보안모델 — 잠금화면 위엔 어떤 앱 UI도 렌더되지 않음 = AccessibilityService 구조적 불가. 코드 버그 아님). 대신 잠금과 무관한 경로 3개를 조합한다. - 🔴중요 정정(적대검증서 반증): 현 kakao-listener(note20)는 알림을 logcat으로 emit만 한다 — KListener.java에 HTTP 업로드·로컬 영속화 코드 0건, 매니페스트에 INTERNET 권한도 없음. 즉 "알림리스너 = ADB 없이도 수집된다"는 캡처 단계까지만 참이고, PC 도달은 여전히 adb logcat에 의존. ADB 무관 완성하려면 HTTP 직송 개조(INTERNET 권한+로컬 큐+재시도) 신규 개발 필요. - 생존 옵션: ①PC 카톡 풀스캔(collect_full.py, 폰·ADB 완전 무관·967방 전체이력, 이미 실증) ②PC 증분(collect_all.py 컷오프+스케줄) ③알림리스너 HTTP 직송 개조 ④S25(페페 본계정)에 리스너 설치(1:1 업무대화까지 커버) ⑤장문 전문읽기(readlong, ADB 필요·저빈도) ⑥USB 상시연결 주전략화 ⑦PC 워치독+텔레그램 경보 ⑧라우터 AP격리 해제/전용 AP 추가 ⑨Note20을 업무 단톡방 초대(그룹방만). - 탈락(반증): 잠금 뒤 AccessibilityService 읽기(OS 차단) · DevicePolicyManager PIN 우회(비-owner SecurityException, 공장초기화 필요) · Tailscale+mDNS 무선ADB 자동복구(Tailscale은 tun P2P라 멀티캐스트 미전달 — 공식 이슈 확정, 재부팅마다 포트 랜덤이라 사람이 화면 봐야 하는 순환의존) · logcat 백로그 소급덤프로 야간 갭 회수(Note20 링버퍼 실측 1시간52분에 wrap) · 자가부팅 재무장 APK(Google TV 전용 검증) · 삼성 "16일 딥슬립" 수치(공식문서 근거 없음=허구). - 기존 모바일앱 야간 스윕 = 신뢰도 사실상 0: 텔레메트리 실측 sweep_done 12/12 rooms=0(100% 실패), night_kakao_launch=1건뿐인데 err=0 → 예외가 아니라 getLaunchIntentForPackage가 조용히 null(AndroidManifest에 <queries> 선언 0건, targetSdk 34 = Android11+ 패키지 가시성 필터링 대상)이 유력 원인. 단 통화녹음 수집(MediaStore)은 같은 야간 실행에서 정상 동작(오디오 5~830건) = 잠금 무관 경로임이 원시 데이터로 확인. - 권고 조합 = 상시(PC 풀스캔 주1회) + 실시간 보완(알림리스너 HTTP 직송, S25 설치) + 백필(장문 readlong, ADB 붙어 있을 때). 착수는 페페 지시 대기. - 페페 확인 필요: 카톡 "알림에 메시지 내용 표시" ON 여부(꺼지면 알림 경로 전멸) · PC 야간 상시로그인·언락 수용 여부(잠긴 PC에서 GUI 자동화 성공 여부 이 PC 미실측) · 오피스 공유기 관리자 접근권(AP격리 해제 가능하면 무선ADB 정상화). - ⚠조사 에이전트가 "text_full 원본 967개 소실 원인 불명"이라 보고했으나 실제 원인은 같은 날 페페 지시로 코디가 삭제한 것(위 🧹 항목). 재수집하려면 text_full/_state.json 먼저 삭제.

♻️ 위 "되돌릴 수 없음"은 통화 음성에 한해 사실이 아니었음 — 831개 중 829개 자동 재수집 확인(2026-07-24 코디 실측): 현 data/calls/ m4a 855개(mtime 전부 07-24)를 _purged_2026-07-23.tsv와 파일명 정규화 대조 → 삭제분 829개가 동일 파일명으로 복귀(미복귀 2·신규 26). 원인 = 폰이 원본 보관(통화녹음 MediaStore 경로, 잠금 무관 수집) → PC에서 지워도 다음 수집 때 그대로 재업로드. 즉 PC 삭제는 반영구 삭제가 아니다(카톡 text_full은 _state.json resume 때문에 스킵되어 미복귀 — 통화와 다름). ⚠매니페스트 대조 시 경로 구분자가 C:/dev/talklog/data\calls\…로 혼합돼 있어 basename split이 실패함 → (번호,날짜,시각) 정규화 키로 비교할 것(단순 basename 비교하면 교집합 0이라는 오판이 난다 — 실제로 1회 발생). 전사본은 애초에 삭제 대상 아님: calls/transcripts_medium 857개 .txt 보존(파일명에 발화자 이름 포함). .segments.json은 통화엔 없음(전체 5개=강의·미팅용).

🎯 worklog-triage 매핑 실측(2026-07-24): 목업 129건 중 122건(95%)이 원본 음성+전사본 모두 존재(48통). 미보유 7건=5통(전사본도 없음). raw 문장 → 전사본 역매핑 작동 확인(피앤알 07-22 6건 중 4건 정확 매칭, 2건은 요약 변형으로 문자열 불일치). ⚠판단단위 교정: worklog reg는 통화 시각이 아니라 파이프라인 적재 배치 시각 — 목업이 1그룹 6건으로 본 것이 실제로는 5통의 개별 통화였다. 진짜 통화 단위 = 음성 파일 1개. ("129항목→48통"은 배치 기준이라 부정확.) 정확도 병목 = STT 자체(실측 오인식: 천심·피피언·여섯 호텔·권치하시면서). 개선 순서 = ①전사 전문을 통화단위로 매핑(비용0) ②Claude 후교정(도메인 사전, 재전사 불필요) ③재전사(transcribe_meeting.py WPROMPT 재사용, CPU 부담·large-v3는 환청 이력 → 최후수단).

🧹 원본 정리(2026-07-23 페페 지시, 되돌릴 수 없음): 전사 완료 음성 원본 + 마이닝 완료 카톡 원본 텍스트 1,911개 1,395MB 삭제 — data/ 1.8G→405M. 내역 = 통화 m4a 831(1002MB, 조건=transcripts_medium/<파일>.txt 존재 AND _pipeline_state.json loaded:true=PFS worklog 적재완료) + 스터디 녹음 2(356MB) + 미팅 record 1(9.7MB) + 카톡 export text_full/*.txt 967(24MB, 마이닝 _synth 18모듈 산출 완료) + 구 수집분 text/*.txt 110(3.6MB). 보존: 전사본 calls/transcripts_medium 832개·.segments.json·정리본(*.corrected.txt·스터디 md)·마이닝 파생 전부(text_full/_chunks 20M·_extract_merged·_dedup_*·_synth)·photos/(368M, 요청 밖)·collector/_discarded·_cleanup_testsaves(이미지라 대상 아님). 미삭제 1건 = 월드유재열사장님_01053791490_20260707103348.m4a(18KB, 전사본 없음 → 보류). 삭제 매니페스트(경로·바이트) = C:\dev\talklog\data\_purged_2026-07-23.tsv. ⚠재수집하려면 text_full/_state.json(collect_full resume done목록)을 먼저 지워야 스킵 안 됨.

목표: 카카오 정책 위반 없이 업무 카카오톡 대화(1:1·단톡, 내 발화 포함)를 AI로 자동 정리해 현장별·상대별·날짜별 누적(노션 또는 seedchain 로컬). 비용 소액 허용. 상태: PoC 전부 통과(양방향 화면 추출 확인) · 전용 앱 제작 진입 직전 · 결정 3건 대기 (2026-06-11) PC 분기(2026-06-14): PC 2주 수집 + 처리부(현장별 1차분류) 완료 → pfs 웹 "현장 내용" 페이지로 운영 통합·배포 완료. 아이폰 확대 설계 확정(2026-06-15): 신동혁(poin03) 수집머신=Windows 확정(Mac/VM 배제). 카톡=데스크톱+kakao-collector 거의무인, 통화=iOS26 보안폴더라 "오디오 저장 탭 1회" 반자동 상한(웹조사 확정). 착수시점 미정·페페 지시 대기. 상세=design#9 + talklog\server\IPHONE_COLLECTION_RESEARCH.md. ✅ 카톡 다중방 자동순회 구현·검증 완료(2026-06-15, app v0.17 880e7a4·b4ec65e): '채팅목록 활동순' [전체 순회] — 변화있는 수집대상(37)만 진입→증분수집→업로드→다음. 온디바이스 클로즈드루프 검증 PASS(7방·5업로드, 제외 스킵, 재실행 멱등). 핵심함정 해결=Kotlin 데몬 UTF-8(한글리터럴 깨짐), force-stop 금지(접근성 비활성), 트리거 시 카톡 포그라운드. 상세=design#10. ✅ [전체순회] 통화통합(v0.18)+소리알림(v0.19)+야간 03:00 무음스케줄(v0.20). 현재 ON·무장. 🔧 수집불능 핵심버그 해결(2026-06-18, v0.21 e286ed6): 폰 Tailscale 끊겨 PC(100.108.234.45) 도달불가→targets0→순회 무동작·0개였음. Config.resolveServer 폴백[Tailscale→로컬WiFi 192.168.45.2 ping선택]로 해결(같은WiFi면 동작). 검증 PASS(targets37·방진입·통화78건 catch-up). Smart Lock 신뢰장소=집 등록됨→야간 카톡도 수집(locked:False). ⚠로컬IP DHCP변경시 폴백깨짐→Tailscale 상시연결 권장. 상세=design#12. 🔧 신규방 수집누락 해결(v0.22 ecec9ff, 2026-06-18): 순회가 '수집'대상만 받고 신규방 스킵했음→제외만빼고 신규도 수집+PC가 신규방 '수집' 자동등록. 자동회전 범인=테스트용 monkey(앱은 무관)→껐고 am start만 씀. ⚠카톡 순회는 카톡 전면 필요(폰에서 Claude앱 쓰면 sweep_no_kakao). 상세=design#13. 🎙️ 미팅 녹음 STT→노션 플로우 1회 실행(2026-06-18, 코디): data\record\음성 260618_111137.m4a(10분25초·모아 모델하우스 발주·결제 협의)를 server\transcribe_meeting.py(구축 STT=Whisper medium·ko·vad·beam5, .segments.json 보존)로 전사 → 플라우드식 화자 선정(사용자 확인 A=모아 이영애 대표/B=포인 신해철 대표) → 미팅노트 구조화 → 노션 새 페이지 "2026-06-18 모아 미팅"(전체 전사 토글+STT 주의문) 저장. ⚠pyannote(화자분리) 미설치=내용기반 추정. pfs 미업로드(사용자 지시). 통화 파이프라인과 별개의 '미팅 녹음→노션' 1회성 경로. 🎙️➕ STT 정확도 향상 후속(2026-06-18, 코디): transcribe_meeting.py에 WMODEL/WPROMPT(initial_prompt)/WSUFFIX 지원 추가 → large-v3 + 도메인 initial_prompt 재전사(CPU int8 1.45x실시간·908s). medium 대비 고유명사 개선(포스프→포스코·단독줄게→단독주택·타우나스→타운하우스·620세대 등). 단 large-v3는 "홍보관이" 환청 반복 아티팩트 발생→medium 교차대조+도메인 교정으로 최종본 *.corrected.txt 작성, 노션 페이지 전사 토글·메타·주의문 갱신(화자 마커 (모아)/(포인) 부여). 산출 3종 로컬 보존(.medium/.large-v3/.corrected). 의정부는 두 모델 모두 '위정부' 오인식→교정. 교훈=large-v3가 고유명사↑이나 반복환청 위험→교정 단계 필수. 🔓 야간 화면 자동해제 구현·실기기 검증 완료(v0.26 app, 2026-06-20): 야간 카톡 수집이 화면 꺼짐 상태에서 안 되던 문제 해결. Smart Lock 신뢰장소(집)면 자격증명 불필요(isDeviceLocked=0)하나 화면 재점등 시 잠금화면(keyguard)은 표시(isKeyguardLocked=true)돼 기존 게이트 !isKeyguardLocked가 카톡을 건너뛰고(실측 03:36 "카톡 생략: 폰 잠금") wake lock만으론 잠금화면이 카톡을 덮었음. 신규 WakeUnlockActivity(투명·showWhenLocked·turnScreenOn)가 화면 켠 뒤 isDeviceLocked 확인→false면 requestDismissKeyguard로 무프롬프트 해제 후 카톡 순회, true(보안잠금)면 통화만. NightRunner 게이트를 isDeviceLocked로 전환. 카톡 전면 함정: 잠금해제는 됐으나 카톡이 전면에 안 옴(Android14 BAL이 백그라운드 startActivity의 태스크를 전면으로 안 올림 + showWhenLocked 액티비티가 위에 고정)→v0.26 수정=액티비티 전면일 때 그 컨텍스트로 포그라운드 런치 + showWhenLocked 해제 + RESET_TASK_IF_NEEDED. ✅ 무선ADB 실기기(Galaxy S25 Android14) 화면OFF+잠금표시 상태에서 종단 검증: 화면 ON→잠금해제→카톡 전면→순회 6개 방 수집·업로드. 백그라운드 자동실행=오버레이 권한(② '다른 앱 위에 표시') 필요. publish=server/apk vc26(http://100.108.234.45:8792/app.apk 자동업데이트). 상세=app/STATUS.md 2026-06-20 로그. 🔧 적재 누락 진단·복원 + 수집관리 정렬(2026-06-20, 코디): ①진단 — 06-16 이후 수집분이 PFS(worklog)에 적재 안 됨. 원인=pipeline_worker.py가 전사(Whisper)→분류(claude)→끝에 한번 적재→끝에 한번 상태저장 구조라 1800초 타임아웃에 죽으면 적재·상태저장 모두 실패→다음 실행도 처음부터 반복(악순환). state상 202통화 중 loaded 40개뿐(미적재 162=전부 06-16+). ②워커 수정 — 증분(매건 상태저장 + N건마다 flush 적재 + 0건 즉시 loaded + 분류실패만 재시도 + --since 필터), talklog_server 타임아웃 1800→5400. ③운영 worklog 백로그 재적재 진행(--since 20260616 --env live, 45건 전사 포함). ⚠카톡 모바일 수집(33세션/21방)은 worklog 적재 경로가 워커에 아예 없음(06-14 일괄분만 별도 1회)—구조적 공백, 추후 카톡 분류기 신설 필요. ④대화방 수집관리 정렬 — kakao_room에 last_collect(폰 sweep시각) 컬럼 추가(테스트 RDS만, 운영 승인대기), gen_room_sync v3가 checkpoints.json updatedAt로 채움, pfs DAO ORDER BY COALESCE(last_collect,last_active,regist_date) DESC+'최근수집' 열(master 6d3b985→test). 운영은 페페 승인 후 컬럼추가+deploy-live. 상세=session-2026-06-20. ✅ 정렬 운영배포 완료 + 사용자별 개인 수집관리 분리(2026-06-20, 코디, 페페 승인): ①정렬 운영반영 — 운영 RDS last_collect 컬럼추가+동기화 채움, deploy-live 3235ba1(cherry-pick, 미배포 dispatch SQL 제외). ②사용자 구분 — kakao_room owner_user 컬럼+인덱스 추가(test/live, 기존 전부 poin01=1 백필), pfs DAO 목록·통계·수집변경·비고변경을 owner_user=세션 user_no로 필터(타 직원 수집 안 보임=개인 수집관리), gen_room_sync/pipeline_worker/talklog_server가 owner_user 유지(신규방=업로드 payload owner). deploy-live b516f8c. 운영 Playwright 검증 PASS(poin01 111방·최근수집열·06-20 최신순·타사용자0). pfs master 50ecb43. 함정=ssm_run 원격인자 미전달→env 박은 _LIVE 변형 / pw-chrome-profile 락=chrome.exe taskkill / 워커 cp949 stdout 크래시→UTF-8 reconfigure. ✅ 통화 백로그 재적재 완료(2026-06-20, 코디): 워커 증분화 후 --since 20260616 --env live 백그라운드 2회(1차 SSM타임아웃+em-dash크래시→UTF-8수정 후 재실행) → loaded 202/202(미적재0, 분류실패2=비업무추정·차회재시도). 운영 worklog 161→456건(통화 49→344, 06-16~19 누락 295건 복원, regist 06-20). 재적재가 만든 owner=NULL 통화방 26개 → owner=1 백필 완료(kakao_room 137방 전부 owner=1, NULL 0). 통화 worklog는 review_status='확정'으로 적재(build_load_script 기존동작). ⚠여전히 카톡 모바일→worklog 경로 없음(구조적 공백, 별도).

🎓 라이브 강의 회의록 신규(2026-06-27, 코디): talklog\live\ — 폰 브라우저(PWA)→ws PCM→faster-whisper 실시간 한국어 전사 + 주기적 claude -p(구독OAuth·무과금, 통화분류와 동일방식) 회의록(주제/핵심/결정/액션). 신규 aiohttp 서버 8793(운영 8792 무손상), AudioWorklet PCM 스트리밍, VAD 세그먼트 확정/임시 분리, Wake Lock 화면꺼짐 방지. ✅ 검증=통화녹음파일 리허설(rehearse.py --realtime로 .m4a를 ws 스트리밍, 실제 서버 경로 통과) E2E 성공: medium/cpu 실시간 전사+회의록 구조화+data\lectures\lecture-*.md 저장 확인. ✅ large-v3 동작확인(CPU 1.93x=실시간보다 느림→GPU 전용; 전환=env TALK_MODEL/DEVICE/COMPUTE, deploy_gpu.md). ✅ 폰 종단 검증 완료: 갤럭시 Chrome서 마이크 녹음→실시간 전사→claude 회의록 생성까지 라이브 동작 확인. 🔑 핵심 함정=Windows 방화벽(새 포트 8793/8443 인바운드 차단→폰 요청 도달 0, loopback PC만 통과; devplan 8799는 규칙있어 됐던 것). UAC/관리자 막혀 규칙추가 불가→방화벽 허용된 python39(C:\Users\delix\AppData\Local\Programs\Python\Python39\python.exe, 프로그램단위 allow)로 서버 실행해 우회(venv python은 차단). 마이크=보안컨텍스트 필요→자체서명 HTTPS 8443(고급→이동 1회). 기동=live\start_live.bat(python39+https8443), 폰=https://100.108.234.45:8443/. 상세=live\README_LIVE.md. 전사엔진=기존 transcribe_meeting.py 재사용.

🔐 보안잠금(PIN/패턴) 자동해제 조사 결론(2026-06-30, 코디·vff-analyst): 일반 사이드로딩 앱(루트X)은 보안 keyguard를 비번 직접입력으로 못 푼다(안드 의도적 차단). 막힌 길=① KeyguardManager에 비번 넘기는 공개 API 없음(requestDismissKeyguard는 사람 입력 UI만) ② Device Owner setKeyguardDisabled는 PIN 걸려있으면 무효(비번 먼저 제거 필요=닭/달걀)+삼성 Knox 제약 ③ 접근성으로 bouncer(PIN창) 직접 누르기=이론상 가능(스파이웨어 경로)하나 Android14+One UI에서 노드 가려질 수 있어 불안정·삼성 업뎃에 깨짐→야간 무인 부적합 ④ 생체인증 자동화·resetPassword=불가 ⑤ 루트=S25 Knox 영구손상 리스크. 유일 작동확인 경로=ADB(PC→폰): adb shell input keyevent 82 && input text "<PIN>" && input keyevent 66(패턴은 input swipe 좌표체인). 이미 PC-Tailscale·무선ADB 인프라 있어 적합. 권장 구조=앱이 isDeviceLocked=true면 PC에 해제요청(talklog_server에 /unlock 신설)→PC가 ADB로 PIN입력→수집→input keyevent 26 재잠금. PIN은 PC쪽 .env에 저장(폰 앱 아님=폰 분실시 노출0). 패턴보다 PIN(숫자)이 안정적(input text 한줄 vs 좌표스와이프 기종변수). ⚠전제=무선ADB 1회 PC키 승인+상시활성, 폰 재부팅하면 무선ADB 꺼져 그 밤 해제불가→skip(재부팅 후 무인 재활성 불가). 그래서 현 Smart Lock 신뢰장소 우선 유지하고 신뢰장소 밖/재부팅후 PIN강제일 때만 ADB fallback. 구현 미착수=페페 지시 대기. 작업단위=①폰 무선ADB 상태확인 ②talklog_server /unlock+PIN env ③WakeUnlockActivity skip("deviceLocked") 자리서 PC /unlock 호출 ④재잠금.

🎓 첫 실강 취합·devplan 등록(2026-06-27, 코디): 오늘 라이브 강의(Claude Code 비개발자 자동화, GSD 32기) 녹음 8개 중 강의 본편 4개(lecture-20260627-080739·080804·082623·085655, talklog\data\lectures)를 취합·정리 → C:\dev\devplan\lecture-20260627-claude-code.html(강사소개·도입배경·진입장벽·참가자 니즈표·도구생태계·윈도우 설치 6단계) 생성. devplan 대시보드 상단 헤더에 📚 강의노트 pagetab 등록(build_dashboard.py 헤더 수정 후 재빌드, index.html 241408B). http://localhost:8799/lecture-20260627-claude-code.html. 배송통화·마이크테스트(011927·022614·023323)는 강의 외라 제외. ⚠ 8793 라이브 서버가 강의 중반 일부 구간만 캡처(녹음이 8개로 쪼개진 것=세션 단절/재시작 흔적)—연속 캡처 안정성은 추후 점검.

🆕 NOW (2026-08-21(금)) — 수시·주기 통화수집 상시화 + 9일치 백로그 회수 + 통합현장 현장별 반영 ✅운영 반영 완료

페페 지시 = "S25 에서 지난번 규칙대로 수시 통화수집·주기적 통화수집 되게 설정 / field·worklog 통합현장에 수집된 통화내용 현장별 반영 처리 / 운영배포".

🗂 2026-06-15 폴더 통합 — 경로 전면 변경 (코디, 최우선 확인)

C:\dev에 흩어진 talklog 관련 4폴더를 C:\dev\talklog\ 하나로 통합 + git init(로컬, 커밋 b7b4a89). 구 폴더명(talklog-android·talklog-server·kakao-inbox·kakao-collector)은 더 이상 없음 — 옛 문서·명령의 그 경로는 아래 매핑으로 읽을 것: - talklog-android → talklog\app (앱 소스, STATUS.md·MORNING_GUIDE.md 여기) - talklog-server → talklog\server (수집서버 talklog_server.py 8792·전사스크립트·apk\) - kakao-collector → talklog\collector (카톡 일회성 수집기·room_status_server.py 8790) - kakao-inbox → talklog\data (수집 데이터 mobile·calls·photos·text·sites, git 제외=대용량) - 두 서버 새 위치에서 재기동·검증(8792 /version vc14, 8790 /api/rooms 200), 시작프로그램 VBS 사본도 새 경로 반영. 빌드/실행 시 경로는 전부 talklog\*. 구 빈 폴더 kakao-inbox·kakao-collector는 OS 잠금으로 삭제 대기(무해, 승인 후 제거).

🤖 자동 파이프라인 운영 가동 (2026-06-15, 코디) — 최상위 NOW

폰 통화 → 자동수집 → 자동분석 → 운영 PFS 미검수 적재 → 검수가 무인으로 가동 중. 설계·구현 단일출처 = design-auto-pipeline.md(P1~P6 완료 기록). 핵심: - 워커 talklog\server\pipeline_worker.py(전사 Whisper medium → 분류 claude -p(OAuth, SARA .env) → SSM 적재, 멱등). 자동트리거 = talklog_server.py 백그라운드 auto_worker_loop(업로드→instant/batch). config env=live(운영 적재). - 앱 v0.16: 통화 4모드 수집·오디오우선·처리트리거 설정. 서버 /upload-audio·/calls-have·/config. - pfs 검수UI(현장 내용): 미검수↔확정 토글·미검수만 필터(deploy-live ce5ee6d). 운영 통화 worklog 54건 미검수. - STT=Whisper medium 확정(별도 Claude STT 불필요). 남은=폰 실수집 1회 운영 E2E 자연확인.

▶▶ 다음 세션 즉시 이어갈 지점 (NOW — 2026-06-14 말)

▶ 처리부 — 현장별 1차분류 (2026-06-14 신규, 진행 중)

▶ PC 일회성 수집 분기 (2026-06-13 신규 — 진행 중, 모바일 상시와 별개)

▶ 다음 세션 즉시 이어갈 지점 (NOW) — 모바일 상시 앱(별개 분기)

✅ PoC 검증 전부 통과 (2026-06-11 — MacroDroid로 실증)