칸반 보드

담당자별 백로그입니다. 티켓 1건 = 파일 1개(jekyll/_backlogs/)이므로 네 사람이 동시에 자기 티켓을 고쳐도 병합 충돌이 나지 않습니다. 주차별 목표는 8주 마일스톤, 일자별 기록은 개발 로그, 아직 정하지 못한 것은 미결 항목에 있습니다.

정성윤 61 / 69 완료

진행 중 (2)

프론트엔드 실시간 자막개인정보 마스킹
시연 시나리오·리허설 — 실제로 한 통 걸어 본다

완료 (61)

인프라 실시간 자막추천 시점실시간 경고개인정보 마스킹C-6공백 리포트원본 미보관
전체 조립 수동 QA — 백엔드·AI·프론트를 붙여 놓고 버튼을 하나씩 직접 눌러 본다
인프라 자격증명 분리STT 비용 가드
AWS 운영 인프라 구축 — EC2 + RDS + Elasticsearch
인프라 실시간 자막화자 분리A-3A-4STT 비용 가드원본 미보관
콜 미디에이터 — 오디오 중계 + Google STT 스트리밍 + 서버 전달
인프라 원본 미보관자격증명 분리
운영 DB 를 RDS 로 — Neon 임시 연결 걷어내기
인프라 A-6원본 미보관자격증명 분리STT 비용 가드
테스트 음성 업로드·보관 — presign 발급 지점 + 브라우저 페이지
인프라 관리자 로그인(구글)
배포 확인용 프로브 — GET /admin/auth/test
인프라 테스트 자동화골든셋 회귀
평가 하네스 CI 연결
프론트엔드 실시간 경고안심 발언
실시간 경고 화면 — 컴플라이언스 실데이터 연결
인프라 평가 하네스
코어 기준선 통과 확인 — F·G·H·I 동결 판정

6주차 종료 시점 판정 — 그 전에는 적용되지 않는다

인프라 종결 요건
F-2 체크포인트 — 구현으로 갈지 설계 문서로 갈지

7주차 중반 판정 — 둘 중 하나라도 미달이면 설계 문서로 전환

인프라 자원 연계
확장 택1 — G-2 또는 H·I (여유 시에만)

조건부 — 6주차 기준선 미달이면 착수하지 않고 닫는다

류준 75 / 78 완료

할 일 (0)

없음

완료 (75)

백엔드·AI
AI Hub 데이터 신청
인프라 C-6개인정보 마스킹실시간 자막문서 검색
학습 모델 운영 반영 + GPU 학습·측정 (집 PC)
백엔드·AI 화자 분리
V1 — AI Hub 채널 구성 확인
백엔드·AI 추천 카드
V2 — GPU 가용 여부 확인
백엔드·AI 평가 하네스문서 검색개인정보 마스킹C-6통화 후 요약
AI 파트 발표 — 심사 질문 34개 검토 · 외부 데이터 재측정 · 발표 수정안
백엔드·AI 실시간 자막개인정보 마스킹
V3·V4 실측 — STT 숫자 출력 형태 / 부분 결과 지연
백엔드·AI 문서 검색평가 하네스
잠정 베이스라인 측정 — Recall@5 · MRR
백엔드·AI 원본 미보관
MySQL 스키마 확정
백엔드·AI 문서 검색
지식베이스 문서 초안 + 팀 리뷰
백엔드·AI J-5
J-5 — 블랙리스트 고객을 베테랑 상담사에게 배정

09-15 남은 배선·후보 출처는 w4-j5-routing-decision(장민석, decisions/313)에서 끝났다

백엔드·AI 골든셋 회귀
골든셋 10건 + 스펙 확정
백엔드·AI A-5
A-5 스파이크 — 어눌한 한국어 STT 정확도를 잰다

09-21 실측 — 8 kHz WER Beginner 0.412 · Intermediate 0.266 · Advance 0.225 · Fluent 0.198(등급당 n=20, 상한). 남은 것: 왕복 지연 · 코어 유지 판단

백엔드·AI 평가 하네스
평가 하네스 골격
백엔드·AI D-5
통화 온도(D-5) — 감정분석을 음성 톤 이상치로 바꾼다

막힘 — 통화 단위 음성 골든셋 없음(발화 클립뿐). 학습은 하지 않는다(decisions/210) — 규칙 판정. 하네스 배선·어댑터는 09-21 완료(run_eval 이 NO_SAMPLES 로 찍힌다), 채점은 표본이 생기면

백엔드·AI E-3
STT 오류 주입기 — 성공 조건의 나머지 절반

09-15 주입기·곡선 완료 — 학습 모델 올라오면 같은 명령으로 재측정

백엔드·AI 원본 미보관
MySQL 스키마·ERD 설계 (17테이블)
백엔드·AI 추천 시점평가 하네스
평가 하네스에 트리거 지연 분포(p50/p95/p99) 배선
백엔드·AI 문서 검색
dense_vector 인덱스 — 임베딩 검색을 붙인다

09-15 dense 0.979/0.885 (BM25 0.833/0.659) · 운영 ES 에는 벡터 없음

백엔드·AI 문서 검색
RRF 하이브리드 병합 — BM25 + 임베딩

09-15 RRF 0.927/0.828 < dense 0.979/0.885 — 비채택(decisions/206)

백엔드·AI 문서 검색
리랭킹 — 병합 결과를 다시 세운다

09-15 MRR 0.885→0.919 (후보 5, p95 521ms CPU) · 후보 20 은 예산 초과

백엔드·AI 문서 검색
청킹 전략 3종 비교 — 「1 조항 = 1 청크」를 재본 적이 없다

09-15 1조항=1청크 유지 — 엄격·느슨 채점 모두 가장 높다

백엔드·AI 개인정보 마스킹원본 미보관
P6·P7 NER — C-5 절대 규칙이 지금 뚫려 있다

09-15 누락 3→0 (n28, --no-ner 대조) · 운영은 PII_NER_MODEL_DIR 설정 전까지 규칙만

백엔드·AI 문서 검색E-3
오류 내성 곡선 — 검색 (성공 조건의 절반)

09-15 10% 에서 bm25 0.812 · dense·rerank 0.979 — 낙관적 곡선(흉내 못 내는 몫 46.9%)

백엔드·AI 개인정보 마스킹E-3
오류 내성 곡선 — C-5 마스킹 재현율

09-15 띄어쓰기 보강 후 규칙+NER 누락 0(0~5%) → 1(10~20%, 주입기의 가짜 음절) · 하네스 부분 마스킹 가짜 통과 수정

백엔드·AI A-5
A-5 1차 범위 — 숙련도 등급별 WER/CER

09-21 실측 — 8 kHz WER Beginner 0.412 · Intermediate 0.266 · Advance 0.225 · Fluent 0.198(n=20/등급, 상한). 측정 기록은 w3-a5-translation-spike 09-21 절

백엔드·AI 추천 시점개인정보 마스킹C-6D-5J-5
합성 통화 — 페르소나 대본 dasan-v0 + 대시보드 재생기

대본 24건(09-18 +10) + QA 검수 + 재생기 + Google TTS(w5-persona-tts-google) + E2E 검사(w5-persona-e2e) — 사람 검토·결정 209 합의·운영 시연 남음

백엔드·AI 개인정보 마스킹C-6추천 시점원본 미보관
합성 통화 E2E 왕복 검사 — 대본 → 콜 미디에이터 → 서버 → DB → 대시보드 API
백엔드·AI 추천 카드카드 출처
근거 기반 카드 생성 — B-4~B-6

09-15 서류 목록 카드 · 출처 100% · 화면 환각 0 · p95 0.92~0.98초(로컬, 예산 초과 우려)

백엔드·AI 추천 카드평가 하네스
환각 채점 — 150문항 중 5건 이하

09-15 원출력 환각 kanana 27/96 · 화면 0(필터) · 출처 100% · 96문항(150 미달)

백엔드·AI 추천 카드
생성 모델 대조군 — kanana-1.5-2.1b vs EXAONE-4.0-1.2B

09-15 kanana 채택(decisions/207) — 같은 조건 원출력 환각 96→27 카드

백엔드·AI 실시간 경고안심 발언
컴플라이언스 분류기 스포크 — 배선은 있는데 판정이 없다

09-15 규칙 v1 · 골든셋 재현율·정밀도 1.0(상한) · 실제 상담원 발화 보류 절반 과탐지 2/4,952

백엔드·AI 문서 검색
캐싱 — 같은 질문을 두 번 계산하지 않는다

09-15 적중 p95 2.1ms vs 미적중 238ms · 품질 불변 · --recreate 무효화 확인 · 운영 적중률 측정 불가

백엔드·AI STT 비용 가드
토큰 비용 측정 — 통화 1건이 얼마인가

09-15 [추정] 통화당 생성 약 2,400토큰·GPU 5.4s · STT 146s(하한) → 일 캡 600s 로 하루 4건

백엔드·AI 통화 후 요약후속조치
통화 후 요약 스포크 — D-1·D-2·D-3 구현

09-15 D-2 유형 제안 0.872(AI Hub 1,009 대화) · D-1 모델 요약 42/50 통과 · 규칙 초안 위에 얹음 · 운영 미켜짐

백엔드·AI 평가 하네스E-3골든셋 회귀
최종 측정 — 발표·제출에 쓸 수치를 한 번에 고정한다

장민석 65 / 66 완료

할 일 (0)

없음

진행 중 (0)

없음

완료 (65)

백엔드·AI 평가 하네스골든셋 회귀
평가 결과를 DB 에 남긴다 — eval_run / eval_result
백엔드·AI 평가 하네스개인정보 마스킹종결 요건
평가 하네스에 C-5·F-2 배선 — 첫 통합 측정
백엔드·AI 원본 미보관자격증명 분리
로컬 MySQL 도커 구성 + 스키마 적용
백엔드·AI 개인정보 마스킹원본 미보관
C-5 개인정보 실시간 마스킹 — P1~P5 규칙 구현
백엔드·AI 도메인 판별추천 시점문서 검색추천 카드카드 출처
추천 파이프라인 배선 — 트리거 → 검색 → 카드
백엔드·AI 실시간 자막원본 미보관
자막 스크롤백 조회 API + interim 중복 흡수
백엔드·AI 개인정보 마스킹평가 하네스
과잉 마스킹률 측정 — 골든셋 음성 케이스
백엔드·AI 문서 검색평가 하네스
잠정 베이스라인 측정 — Recall@5 · MRR
백엔드·AI 통화 후 요약후속조치
통화 후 랩업 계약 — postcall 포트 + 종료 배선
백엔드·AI 통화 후 요약
통화 이력 목록 GET /hub/calls
백엔드·AI 통화 후 요약후속조치
통화 후 초안 501 걷기 — D-1~D-3 규칙 발췌 스포크
백엔드·AI 추천 카드통화 후 요약종결 요건
통화 기록 조회 GET /hub/calls/{id}/record — 상담기록 재생
백엔드·AI 통화 후 요약후속조치
통화 후 요약 확정 — 상담원이 초안을 고쳐서 확정
백엔드·AI 통화 후 요약후속조치
확정된 요약 재수정 + 이력
백엔드·AI 종결 요건
F-2 마무리 — 구현 완결 또는 설계 문서 산출

체크포인트 결과에 따라 내용이 갈린다

조서희 57 / 61 완료

할 일 (0)

없음

완료 (57)

프론트엔드 개인정보 마스킹
C-5 마스킹 mock 시나리오
프론트엔드 A-5
A-5 ⓑ 어눌한 한국어 mock
프론트엔드 C-6
C-6 콜가드 자막 mock
프론트엔드 D
D 상담 분위기 랩업 mock
프론트엔드 통화 후 요약후속조치공백 리포트자원 연계
D·G-2 통화 후 요약 화면
프론트엔드
상담원 대기화면
프론트엔드
욕설 별표 마스킹
프론트엔드 A-5
A-5 mock 시나리오 5종
프론트엔드 A-5
A-5 통번역 자막 mock
프론트엔드
상담기록 mock 조회
프론트엔드 A-5
A-5 5개 언어 배지 일반화
프론트엔드
추천 카드 채택 기록
프론트엔드
약관 패널 칩 전환
프론트엔드 추천 카드개인정보 마스킹
React 대시보드 스캐폴딩
프론트엔드 개인정보 마스킹원본 미보관
원문 열람(plain_text)이 SEC-1 과 모순이다 — 기능을 정리한다

티켓 추가하는 법

jekyll/_backlogs/ 에 파일을 하나 만듭니다. 다른 사람 파일은 건드리지 않습니다.

---
title: "카카오 로그인 API 연동"
assignee: "류준"          # 정성윤 | 류준 | 장민석 | 조서희
role: "ai"                # infra | ai | app  (배지 색 — ai: 류준·장민석, app: 조서희)
status: "in-progress"     # todo | in-progress | done | cancelled
sprint: 1
priority: 5               # 같은 칸 안에서의 정렬 순서
date: 2026-08-25
note: "모델 학습 후 진행 예정 — 정확도 측정"   # (선택) 카드 제목 아래에 뜨는 한 줄 메모
paths:                    # (선택) 이 티켓 소관 파일 — 붙여두면 상태 갱신을 잊었을 때 경고해 줍니다
  - "apps/dashboard/*"
depends_on:               # (선택) 앞 단계 티켓. 일부러 나눈 단계는 중복 경고에서 빠집니다
  - "w2-baseline"
requirement:              # (선택) 이 티켓이 만드는 기능 ID — 카드에 기능 이름 배지로 붙습니다
  - "B-2"
---

무엇을 / 왜 / 완료 조건을 적습니다.

파일명은 w{주차}-{영문-슬러그}.md 로 짓습니다(예: w1-eval-ci.md). 한글 파일명은 URL이 깨집니다. 상태를 바꿀 때는 자기 티켓의 status 한 줄만 고칩니다.

requirement 는 기획서의 기능 ID를 그대로 씁니다 — 새 접두어를 만들지 않습니다. 같은 ID를 코드 파일 상단에도 # Requirement: B-2 로 답니다. 두 곳이 같은 ID라 백로그에서 코드까지 추적이 이어집니다.

보드에는 ID 가 아니라 기능 이름(「실시간 자막」·「문서 검색」·「추천 카드」…)으로 뜹니다. 프론트엔드가 카드만 보고 어느 화면을 짜야 하는지 바로 알 수 있게 하기 위해서입니다 — A-1·SEC-1 같은 코드는 화면을 만드는 쪽에서 읽히지 않습니다. ID→이름 대응은 kanban.markdown 안의 case 블록에 있고, 같은 이름으로 겹치면 배지 하나로 합칩니다(D-1+D-2 → 「통화 후 요약」). 정확한 ID 는 배지에 마우스를 올리면 보입니다.

배포·저장소 정리처럼 기능 ID 대상이 아닌 티켓은 비워 둡니다.

세션을 끝낼 때 python3 scripts/check_session_end.py 를 돌리면 상태가 실제와 어긋난 티켓과 중복 티켓을 알려줍니다. 진행 기록을 빠뜨리면 Stop 훅이 세션을 끝내지 못하게 막습니다.


← 개발목차로 돌아가기