개발 로그

완료 작업 타임라인

팀 칸반에서 done 처리된 카드와 개발기 포스트가 날짜 기준으로 자동 집계됩니다 — 카드는 클릭하면 상세 요약이 펼쳐지고, 포스트는 본문으로 이동합니다.

2026-09-11
진수택협업 문서우정팀 협업 — 답변 저장 버그 원인 규명·세션 로그 3답변자세히 ▾
우정팀이 아침 인계 문서로 요청한 8개 질문에 실측 근거로 답변 · findings 스위치 반영 지적에 즉시 대응(force-recreate 로 해결) · 세션 59 로그 요청에 ai_score 정상(42점) 확인.
우정팀이 진짜 이슈로 짚은 뒤늦은 답변 저장 실패(CONFLICT 409) 는 로그로 원인 짚어 전달 · 우정팀 #178 로 즉시 수정.
팀 간 실측·근거 기반 협업 · 하루 안에 세 번 왕복하며 문제 좁혀 나감.
진수택운영 반영답변별 서류 대조 스위치 활성화 — AGENT_FINDINGS_BACKEND 반영자세히 ▾우정팀 #175 UI 가 바로 뜨게 서버 스위치 켬
우정팀이 만든 답변별 서류 대조 UI(#175)가 스위치 부재로 화면에 안 뜨던 것을 서버 .env 에 한 줄 추가해 켰다.
함정 · docker compose restart 는 env_file 을 다시 읽지 않아 반영이 안 된다 — up -d --force-recreate 로 컨테이너를 다시 만들어야 반영. 우정팀 지적으로 즉시 재작업 · 실측으로 확인 완료.
세션당 비용 ~$0.05(Haiku 4.5, 답변 10개 + 끝날 때 1회) · 시연 규모 무리 없음.
진수택분석 리포트fit-check 24명 판정 정확성 분석 · 시연 시나리오 재조정 근거자세히 ▾인수인계 오류 정정 · 실제 자동 불합격 8명 · 근거 수치화
인수인계에 있던 자동 불합격 3명(한지우·박도윤·정민호)이 실제로는 자동 합격이었고, 진짜 불합격은 8명이었다.
8명 각각의 점수 세 갈래(요건·우대·문화)를 근거로 수치화하고, 판정 알고리즘의 세 가지 정확성 이슈를 짚었다.
리포트를 근거로 알고리즘 개선안(PR #182) 을 도출 · 시연 시나리오도 남기훈(요건 우수·문화 감점) · 강현우(1점 차이) 케이스로 재구성 준비.
진수택PR#182서류 자동 판정 가중치 개정 · 요건 강조·우대 축소·문화 하한 규칙자세히 ▾fit-check 24명 실측 분석 · 3가지 정확성 이슈 해결
fit-check 지원자 24명 실측에서 판정이 아슬한 세 케이스(요건 우수인데 문화로 탈락 · 1점 차이 탈락 · 필수 통과인데 우대 부족으로 탈락)를 발견해 알고리즘을 다듬었다.
가중치 · 요건 50→60(강조) · 우대 20→10(있으면 좋음) · 문화 30 유지.
새 규칙 · 요건 점수가 70 이상이면 문화 점수 하한 50(요건 우수 지원자를 문화 한 문구로 떨어뜨리지 않기).
팀장 결정으로 hold 상태는 도입하지 않고 자동 판정 그대로 유지 · 자동 CD 로 배포 완료 · alembic 0020 로 기존 회사 프로파일 두 키 갱신.
진수택AWS OrganizationsAWS 통합 결제 조직(ETECH) 편입 — 비용 이관자세히 ▾계정 활동 비용이 조직 지급인 계정으로 청구
ETECH SYSTEM 조직의 통합 결제(Consolidated Billing) 에 편입 · 이후 활동 비용은 조직 지급인 계정으로 청구된다.
사용량 조회는 조직 정책에 따라 제한될 수 있어 내부는 수동 계산으로 사용량을 추적.
학습·시연 총 예상 사용 시간 15시간 이내로 관리 · 학습 완료 즉시 인스턴스 stop 원칙.
2026-09-10
진수택인프라 확장EBS 확장 · 서버 스토리지 29→50GB자세히 ▾빌드 캐시·컨테이너 이미지 여유
운영 서버 디스크 여유가 떨어져 추가 배포에 지장이 생기지 않도록 EBS 볼륨 확장 · 온라인 확장으로 무중단.
확장 후 파일시스템 growfs 로 반영 · 여유 27GB 확보.
진수택인계·협업인터뷰방 답변 저장 버그 원인 분석 3갈래 · 픽스 방향 · 인계 문서자세히 ▾우정팀에 원인 3갈래·픽스 4개 정리 전달
시연 리허설 중 실측된 답변 저장 실패(Q9 시도 후 Q1 로 되돌아감) 를 원인 3갈래로 정리 · 픽스 4개 방향 제시.
갈래 A(꼬리질문 in-memory 캐시 미반영) · 갈래 B(빈 STT → 저장 스킵) · 갈래 C(WebSocket drain timeout · 오디오 소실).
우정팀이 이후 실제로 #174(answered_at 기준)로 원인 규명·수정 · 팀 간 인계 문서가 실제로 문제를 좁혀 준 사례.
진수택시연 데이터fit-check 지원자 24명 재접수 · 시연 데이터 준비자세히 ▾새 STAR 4문항 콘텐츠 23명 + 홍지민(배지 시연용 구 콘텐츠 유지)
시연용 지원자 24명 일괄 재접수 · 새 STAR 4문항 자기소개서로 23명 새로 · 홍지민(id=52) 만 구 콘텐츠 유지(이력서 파일 새 sha256 vs 앵커 옛 sha256 조합으로 "내용이 바뀜" 배지 시연).
공고 배치 · FE 12명 · BE 12명. 자동 불합격 시연 대상·문화 갈등 서사·정보 부족 서사·영어 이력서 케이스 골고루 포함.
진수택PR#173ADR-0028 §1.7 · 무결성 원장 트리거 감사 · 우회의 흔적 3갈래자세히 ▾임시 트리거 해제 재발 방지·감사 로그
이력서 무결성 앵커(document_anchors) 트리거를 시연 데이터 정리 목적으로 임시 해제한 이력을 근거로, 트리거 상태 변경을 반드시 흔적 남게 하는 세 갈래(감사 트리거·이벤트 로그·문서화 규칙) 를 결정 문서에 추가.
원장은 "잠긴 상태" 가 기본 · 우회는 마지막 수단 · 재발 시 자동으로 감지.
2026-09-07
이우정PR#58SES MessageId 를 email_logs 행에 남긴다자세히 ▾보냈다는데 안 왔다를 확인할 자리
메일 전송 결과(공급자 발급 식별자)를 로그 행에 저장 — 이후 반송 조사 시 근거로.
이우정PR#56면접 답변 카메라 녹화 + 진위 분석 호출자세히 ▾ADR-0029 후속 — 프론트 녹화와 분석 서비스를 연결
면접 답변 시 카메라 녹화를 받아 진위 판별 서비스로 넘기는 경로를 붙였다.
이우정PR#52지원 현황 조회 — 이메일 링크로 지원자 포털자세히 ▾신-1 지원자 포털
로그인 없이 이메일로 받은 링크(토큰)로 자기 지원 현황을 확인하는 경로. 담당자 화면과 분리된 지원자 전용.
이우정PR#40 PR#44면접 답변 음성 → 전사(STT) — audio_duration_sec 채움자세히 ▾면접 설계 §5-4 · 발화 속도 진행 보조까지
지원자 음성 답변을 텍스트로 옮기는 경로(STT)와, 말이 유난히 느리면 질문을 바꿔 보자고 하는 진행 보조 규칙까지.
이우정PR#33면접 진행 보조 — 짧은 답이면 되묻기, 두 번 짧으면 쉬어가기 권유자세히 ▾
답변 길이가 유난히 짧으면 되묻고, 두 번 연속이면 잠시 쉬는 것을 권한다.
이우정PR#24로컬 pytest 함정 2개 수정 — .env 미로드·시드 이름 충돌자세히 ▾새 개발자가 clone 후 바로 실행 가능
로컬 pytest 가 .env 의 DATABASE_URL 을 못 읽어 옛 DB 로 붙던 것과, 시드 이름이 겹쳐 실패하던 것을 코드에서 봉인.
이우정PR#21 PR#25 PR#31앵커 게시 자동화 안정화 — 토큰 재발급·실패 시 이슈·체인 사전 검증자세히 ▾이틀 동안 아무도 모르던 실패를 눈에 보이게
앵커 크론이 12시간 만료 토큰으로 죽던 문제 해결(매 실행마다 새로 로그인), 실패 시 GitHub 이슈로 알림.
이름표(CHAIN_NETWORK)와 실제 RPC 체인 식별자가 어긋나면 전송 전에 멈춰 잘못된 체인 오염 차단.
이우정PR#20배포 이미지가 스스로 스키마 이행 — 호스트 마운트 불필요자세히 ▾
DB 스키마 이행(alembic)을 컨테이너 이미지 자체가 실행하게 해서, 서버 호스트에 코드 마운트가 필요 없게.
김민아PR#46 이슈#6제출물 무결성 배지 — 상세 패널 첨부 아래자세히 ▾이력서·자소서 위변조 여부를 배지로 표시
매일 게시되는 앵커(ADR-0028) 기준으로 제출물이 게시 이후 바뀌지 않았는지 배지로 표시.
김민아PR#27 PR#28 PR#41 PR#43대시보드·평가현황·셸 재구성 — 시안 반영자세히 ▾백엔드 변경 없음
대시보드와 평가 현황 화면을 새 시안으로 재구성.
부수적으로 평가 현황이 빈 상태에서 좁고 길쭉하게 서던 문제와, 단계 램프 세 칸이 다 회색으로 보이던 것, 평가 현황 열이 계단처럼 어긋나던 것을 함께 수정.
박소연PR#54실시간 면접 WebSocket — 말이 끝나면 다음 질문자세히 ▾ADR-0029 · 답변 단위가 아닌 실시간 스트리밍 경로
영상·오디오를 실시간으로 흘려보내며 답이 끝나는 지점에서 다음 질문으로 넘어가는 경로.
박소연PR#45표정·음성 진위 판별 도입 결정 — ADR-0029자세히 ▾
이전 결정(표정 분석 제외)을 개정, 진위 판별을 재도입하는 결정 문서.
박소연PR#42진위 판별 서비스 배포 — Dockerfile + 운영 compose + /ai/*자세히 ▾CPU 모델·GPU 불필요
표정·음성 진위 판별 서비스(ADR-0029)를 컨테이너로 만들어 운영 compose 에 붙임.
리버스 프록시 /ai/* 로 접근, CPU 모델이라 GPU 서버 불필요 — 같은 EC2 에서 돌린다.

진수택포스트발표 전 인프라 안정화 — 앵커 자동화·백업·경보·서버 확장·진위 판별 배포자세히 ›매일 도장(제출물 무결성 앵커) 자동 게시가 죽지 않도록 손보고, 서버가 죽거나 채워지거나 백업이 밀리면 이메일이 오게 계기판·경보를 다 걸었다. 서버 크기를 한 단계 올려 진위 판별 서비스와 나란히 돌리고, 메일 파이프라인을 새 계정에서 지원자 수신까지 끝까지 실증했다. 마지막으로 알림·메일을 워크플로 도구(n8n)로 분리하는 결정(ADR-0030)의 1단계 인프라를 붙였다.

진수택PR#63n8n 컨테이너 도입 — 알림·메일 자동화 계층 (ADR-0030 1단계)자세히 ▾compose 서비스·Caddy 리버스 프록시·백업·경보까지 인프라 몫 일괄
메일·알림 파이프라인을 워커 코드에서 워크플로 도구(n8n, 오픈소스 자동화 엔진)로 분리하는 결정(ADR-0030)의 1단계 인프라 반영.
트리거는 우리 API 가 쏘는 웹훅(HTTP 신호), 발송은 노드 하나(SES ↔ SMTP)만 바꾸면 공급자가 바뀐다.
운영 EC2 self-host, 편집 화면은 팀 공유 Basic Auth(간단 로그인) 뒤로. 워크플로 JSON 은 저장소가 진실 — 화면에서 고쳤으면 내보내서 커밋.
백업(볼륨 tar → S3)·지표(n8n 헬스 엔드포인트)·경보(20분 실패 시 이메일)·상태 화면까지 인프라 몫으로 일괄 반영. 백엔드 몫(내부 API 2개·발송 경로 스위치)은 별도.
진수택PR#55발표 전 안정화 묶음 — 외부 헬스체크·메모리 경보·인스턴스 자동 복구자세히 ▾밖·안 이중 감시 + 하드웨어 자체가 죽어도 자동 복구
GitHub Actions 가 15분마다 공개 주소를 밖에서 찌른다 — 실패 시 이슈를 열고 복구되면 자동으로 닫는다(밖 시선).
서버 안 지표에 메모리 사용률(진위 판별 서비스가 분석 1건에 574MiB)을 추가해 90% 이상이면 경보.
EC2 시스템 상태 검사 실패 시 AWS 가 인스턴스를 자동으로 살리도록 알람 등록(같은 IP·디스크 유지).
배포 스크립트를 저장소로 회수 — 그동안 서버에만 있던 것을 검토·재현 가능하게.
진수택PR#49 PR#51 PR#61 PR#62 PR#53 PR#57결정 문서 개정 원칙 확정 · 문서 전체 갱신자세히 ▾설계 문서는 잠금이 아니라 오너가 계속 개정하는 것
2026-09-07 운영 변경(서버 확장·백업·경보·체인 전환·예산)을 상세 문서 10개에 반영.
확정 결정 문서(ADR) 23개에 "오너가 개정 ADR 을 쓰면 바뀐다" 표준 한 줄, 지시서 36개 + 로드맵 5개 맨 위에 "작성 시점의 설계·계획" 한 줄.
확정 대기 게이트 폐지 — 도메인 오너가 자유롭게 개정하는 구조로 명문화.
설계 문서 톤을 "이렇게 한다·안 한다" 잠금에서 "현재 구현 + 확장 후보" 로.
진수택PR#37 PR#39서버 지표·경보 세팅 — CloudWatch + SNS 메일자세히 ▾관측 에이전트 미설치·무료 구간 안
서버가 10분마다 상태 숫자(디스크 사용률·백업 파일 나이·API 헬스)를 CloudWatch(AWS 관측 서비스)로 밀어 넣고,
규칙(디스크 85% 이상·백업 30시간 이상·헬스 20분 연속 실패)에 걸리면 SNS(알림 서비스) 를 통해 이메일이 온다.
경보 정의는 CloudFormation 템플릿 파일 하나 — 콘솔 30번 클릭 대신 파일 업로드 한 번.
비용은 상시 무료 구간 안(사용자 지정 지표 10개·알람 10개·API 100만 건/월).
진수택PR#36서버 상태 한 화면 스크립트 — status.sh자세히 ▾
디스크·컨테이너·자동 배포 최근 결과·백업·헬스 응답을 한 번에 보여주는 읽기 전용 스크립트.
주 1회 사람이 눈으로 훑기 위한 계기판 — 자동 경보와 별개, 상태를 사람이 확인하는 용도.
진수택PR#35컨테이너 로그 상한 — 서비스당 20MB × 3자세히 ▾디스크 고갈 예방
compose 에 로그 드라이버 옵션(max-size·max-file)을 걸어 컨테이너 로그가 무한히 커지지 않게.
29GB 디스크에서 로그 하나가 수 GB 로 부풀던 사고를 사전 차단.
진수택PR#32 PR#34운영 DB 매일 S3 백업 — 압축·검증·수명주기 30일자세히 ▾지원자 개인정보와 무결성 원장이 인스턴스 사고로 사라지지 않게
매일 04:00 KST 서버가 DB 를 통째로 뜨서 압축·검증(gzip -t) 후 전용 S3 버킷에 올린다.
쓰기 권한 IAM 은 최소 권한(PutObject 만) — 이 키로 데이터를 되뽑을 수 없다.
버킷 수명주기 30일 자동 만료로 스토리지 비용도 상한.
Ubuntu 24.04 에 apt 로 aws-cli 가 없어 snap 으로 설치(문서 반영).
진수택PR#30저장소에 남은 옛 API 주소 정리 — 정본 api.seuk.suvisdev.cloud자세히 ▾
.env.production·모바일 api_config·스크립트에 남아 있던 옛 인프라 주소를 새 도메인으로 일괄 교체.
진수택PR#29운영 체인을 Amoy → Ethereum Sepolia 로자세히 ▾Amoy 무료 가스 공급이 전부 막혀 사용 불가로 판단
제출물 무결성 앵커(ADR-0028)를 매일 게시하려면 소액 가스(수수료)가 필요한데, Amoy(폴리곤 테스트넷) 무료 수도꼭지(faucet) 6곳이 다 막혀 있었다.
Sepolia(이더리움 테스트넷)로 전환 — Coinbase 개발자 포털에서 조건 없이 받을 수 있고, 커뮤니티 채굴형 대안(pk910)도 살아 있다.
chain.py 익스플로러 두 줄 교체와 문서 개정 단락. 실전송 1건으로 체인 반영 확인.
2026-09-04
이우정PR#15 PR#13폴리곤 서명을 Actions 로 · OpenTimestamps 병행 (ADR-0028)자세히 ▾서버에 개인키 없음
앵커 게시 개인키를 서버에서 빼서 GitHub Actions 로 이관, 시간 증명(OpenTimestamps) 병행.
결정 문서 개정에 관리 권한 2인·팀장 리뷰 게이트 삭제 반영.
김민아PR#9공고 삭제 — 수정 화면 하단 + 확인 시트자세히 ▾
공고 삭제 흐름을 앱 수정 화면 하단에 두고, 되돌릴 수 없는 동작이라 확인 시트로 한 번 더 물음.
김민아PR#19설정에 로그아웃 진입점 — 데스크톱자세히 ▾
데스크톱 웹에 로그아웃 버튼이 아예 없던 것을 설정 화면에 붙임.
김민아PR#18다크 딥네트워크 테마 — 프론트엔드 디자인 전면 교체자세히 ▾
전체 화면 톤을 다크 딥네트워크로 통일.
박소연PR#3면접 영상 진위 판별 서비스 초안자세히 ▾
진위 판별 서비스의 초기 형태를 저장소에 추가.
박소연PR#12자소서 주장 → 면접 꼬리 질문 생성자세히 ▾
자기소개서에 나온 주장을 근거로 면접에서 물어볼 후속 질문을 생성.

진수택포스트인프라 완전 이전 — 개인 AWS·자동 배포·팀 셀프서비스 개통자세히 ›이탈자 명의 AWS를 떠나 개인 계정(서울)으로 전체 이전 — EC2 arda-api(t3.small)·S3·SQS·SES·IAM 3단 분리, Caddy HTTPS(api.seuk.suvisdev.cloud). main 머지→2분 폴링 자동 배포 개통, 브랜치 규칙 확정(직접 푸시 금지·PR 셀프 머지). 더미 15명 리허설로 presign 글로벌 호스트 서명 버그 실전 검출·수정(PR #4). 저장소 Seuk-Team org 통합(Arda·jekyll)

진수택PR#5 PR#8테스트 하네스 안전 스위치 · pytest-timeout자세히 ▾
회귀 하네스(반복 검증 세트)에 Anthropic 옵트인 가드를 붙여 실수로 유료 AI 를 부르는 상황 차단.
pytest 에 60초 타임아웃 도입 — 죽은 테스트가 무한히 걸리던 것 해소.
진수택PR#4S3 이력서 업로드 실패 수정 — 리전 엔드포인트 서명자세히 ▾
새 버킷 업로드가 403 이던 것 — 서명 대상 엔드포인트가 리전 URL 이어야 하는 것을 놓쳤다. 수정 후 즉시 정상.
진수택PR#2 PR#14인프라 이전 반영 — 새 계정 주소·CORS·배포 자동화자세히 ▾저장소가 새 인프라를 안다
AWS 계정 이전에 따라 도메인·S3 버킷·브라우저 접근 규칙(CORS)을 정본으로 갱신.
배포 자동화(systemd 2분 폴링) 문서화, 팀 전체가 코드를 push 하면 자동으로 반영되는 흐름 확정.
2026-09-03
김민아09-03큐 8 완료 — 앱 서버 실연동 전 영역자세히 ▾
공고 CRUD·평가 쓰기·메모·이름/비밀번호 변경·메일 발송·이력서 열기·캘린더·메일 이력·설정 3탭·대시보드·평가 큐·통합 검색·아르 서버 연동까지.
큐 8 4단계가 하루에 마무리됨.
박소연09-03지원자 상세 패널 UI 개선 + 더보기 페이지 + 모바일 UI자세히 ▾
지원자 상세 패널(D4·D5)의 정보 배치와 시각 정돈, 더보기 페이지 신설, 모바일 UI 개선(progress dots 정렬 등).

진수택포스트인적성 설문 E2E 검증과 운영 AI 복구 1단계 — identity 키 함정, Haiku 첫 실측자세히 ›인적성 설문(ADR-0027) 로컬 E2E 완주 — 발송 API→메일 감사 기록→공개 링크→10문항 응답→통계+아르 관찰 요약. Anthropic 키 재발급(identity 키 함정 해결) + Haiku 첫 실측(채팅 6.8s·요약 9.1s, qwen3:4b 대비 채팅 2배). 오늘 API 지출 약 3센트

진수택09-03파이프 안정화 — 스킬 exact 최상위 · FAQ 하네스 15 · regenerate 사유 분리자세히 ▾
스킬 배열(기술 스택 문자열)의 정확 일치를 시맨틱 랭킹 최상위로 올려 "Kubernetes" 같은 고유명사 오답을 원천 차단.
지원자 채팅 FAQ 실측 하네스 15 시나리오 신설, regenerate_summary 응답 코드를 백엔드 불가(503)와 처리 실패(422)로 분리, pytest 실행 시 .env 스위치를 선점하도록 conftest 정리.
2026-09-02
이우정설계 §5AI 면접 백엔드 3단계 — 테이블·세션 링크·질문 설정·답변 제출·종료 (ADR-0026)자세히 ▾
결정 문서 ADR-0026(AI 면접은 한다 — 음성으로 긴장도·거짓말은 판별하지 않는다) 확정과 함께 백엔드 3단계 착수.
면접 관련 테이블 3종 + 스키마 이행 · 세션 생성과 지원자 공개 링크 · 질문 설정·답변 제출·종료.
이우정09-02 cimain 상태 자동 표시 CI — pytest + 프론트 빌드자세히 ▾손으로 물어보지 않아도 됨
main 이 깨졌는지 자동으로 보이도록 CI(자동 실행 워크플로) 구성 — 백엔드 pytest + 프론트 빌드.
첫 실행 실측 51초.
김민아09-02큐 7 JWT 로그인 · 큐 8 착수 · 단계 변경 저장 · 웹→앱 이관자세히 ▾앱에 처음으로 네트워크가 생긴다
JWT 로그인(큐 7)으로 앱이 서버를 부르기 시작.
큐 8 첫걸음 — 공고 목록·공고별 지원자·지원자 상세를 서버에서 받아옴, 단계 변경이 실제로 저장(W4 완료 기준).
웹에 있고 앱에 없던 화면(공고 등록·첨부·검색·비밀번호 변경) 이관.
박소연09-02모바일 웹 셸(D11) · 첨부 파일 블록(C7) · F4 업로드 진행률 · 로그아웃 진입점 3종자세히 ▾
768px 이하에서 하단 탭바(공고·지원자·홈·캘린더·더보기)로 감싼 모바일 웹 셸.
지원자 상세 패널에 첨부 파일 블록(C7 프론트 몫), F4 업로드 진행률 바, 로그아웃 진입점 3곳(우측 상단·설정 계정 탭·박스 정리).
모바일 툴바 sticky·overflow·단계 필 균등 폭 등 부수 fix 다수.
진수택PR#163 PR#164인적성 설문(사전 성향) 도입 — 발송·응답·AI 관찰 요약 (ADR-0027)자세히 ▾AI 는 관찰 요약만, 성격 판정 금지
담당자가 사전 성향 설문을 보내면 지원자가 공개 링크로 응답, 결과 통계 + 아르의 관찰 요약이 지원자 상세에 붙는 흐름 전 구간.
결정 문서: AI 는 관찰만, 성격 판정·합격 여부 판단에 안 쓴다.
진수택PR#161 PR#162로컬 sLLM 안정화 — 도구 폭주 가드 + 의도 라우터 LLM 분류 + 회귀 하네스자세히 ▾
작은 모델이 도구를 무한 호출하는 것을 사전 차단하는 가드, 실행 로그의 도구 세부 정보는 UI 에서 감추기.
의도 라우터를 LLM 분류 + 코드 실행 방식으로 바꿔 변형 30/30 통과. 확인 응답("응 변경해줘")도 규칙 라우터로 뽑아 저장된 인자로 바로 실행.
2026-09-01
이우정09-01 09-02alembic 도입 · dev 의존 · 08/31 셋업 안내 정정자세히 ▾스키마 변경을 손 SQL 에서 자동화로
alembic(스키마 이행 도구)을 도입해 손 SQL 시대 종료.
의존을 개발 그룹으로 선언(이전엔 버전이 어디에도 안 박혀 있었다), 08/31 셋업 안내 문서의 순서·전환 절차 정정.
이우정09-01 09-02AI 요약 잘림·아르 요약 앰버 블록 정리·큐 20 D8·D9 완료 확인자세히 ▾
AI 요약이 매번 잘려 "제출물 부족" 으로 저장되던 것 수정, 프론트 요약 표시를 아르의 정보 블록으로.
큐 20(D8·D9)에 빠져 있던 완료 표시를 코드 대조 결과로 정리.
김민아09-01앱 UI 초안 반영 — 하단 탭바·5개 탭·홈·설정·로그인·지원자 현황자세히 ▾
앱 UI 초안(하단 탭바 + 5개 탭)을 반영, 홈 첫 화면·설정·아르 배포판·지원자 현황 리스트.
로그인을 첫 화면으로, 지원자 상세에 아르 요약·메일·단계 이력 + 목데이터 6명.
실기기 점검에서 드러난 캘린더 필터·공고 카드 숫자 수정.
박소연09-01오른쪽 패널 통합 · 캘린더 딥링크·다중 선택 · 아르 3D 캐릭터자세히 ▾05-design 토큰 일괄 정리
상세·아르·캘린더·평가 네 자리로 나뉘던 오른쪽 패널을 한 자리(단일 개방·폭 360·모션 통일)로 합침.
캘린더 시간대 다중 선택, 대시보드 축소판→그날 패널→지원자 상세 딥링크.
아르 아이콘을 3D 캐릭터 렌더 PNG 로 통일, 색·그림자·radius·간격을 05-design 토큰으로.

진수택포스트지원자 대화형 페이지·이력서 반영·FAQ 챗봇 — 09/01 개발기자세히 ›지원자용 일정 페이지를 아르 대화형으로 재작업 + 이력서·자소서 파일 텍스트를 AI 요약 입력에 포함 + 공고 기반 FAQ 응답 API. PR 3건 머지, 실호출로 파이프라인 전 구간 검증

진수택PR#159지원자 채팅 FAQ 응답 API자세히 ▾공고 기반 stateless 응답 + 프롬프트 차단 규칙 v3
POST /api/v1/public/schedule/{token}/faq — 로그인 없이 토큰 인증, stateless 1문1답. 담당자용 아르와 완전 별개 경로.
답변 범위·차단은 키워드 블랙리스트 대신 프롬프트가 맥락 판단(연봉 문의 차단, 프롬프트 주입 무시 실호출 확인).
v2에서 지원자 본인 상태(현재 단계·확정 일정) 반영, v3에서 "답을 알면 확신 있게" 명시.
실호출 5개 시나리오 전부 정상. PR #159 머지.
진수택PR#158이력서·자소서 파일 텍스트를 AI 요약 입력에 포함자세히 ▾extractor.py 신설 — pdf·docx·hwpx 추출, 실패 시 None 폴백
요약이 지원폼 필드만 읽어 이력서를 충실히 낸 지원자도 "제출물 부족"이 나던 문제 해소.
app/agent/extractor.py 신설 — S3에서 파일 수신 후 텍스트 추출(pdf/docx/hwpx, 구형 hwp 스킵), 어떤 실패도 None 폴백으로 요약 자체는 죽지 않음.
로컬 처리라 LLM 비용 없음, 프롬프트 주입 8천 자 상한.
실호출 검증: 가짜 이력서 docx로 강점·확인 필요가 파일에서만 나온 내용임을 확인. PR #158 머지.
진수택PR#157지원자 일정 페이지를 아르 대화형으로 재작업자세히 ▾일정 선택을 대화 속 카드로 + 지원자 채팅 UI + AI 요약 표시 버그 수정
메일 링크(/schedule/:token) 페이지를 카드+정적 안내에서 아르와의 대화형으로 재작업.
PC는 아르 캐릭터+일정 카드/채팅 2단, 모바일은 상단 고정 일정 카드(접기·펴기)+채팅.
아르 얼굴은 3D 뷰어 스냅숏(PNG 12KB)으로 대체해 WebGL 부담 제거.
부수로 지원자 상세 패널이 요약 JSON 원문을 그대로 노출하던 버그 수정 — 핵심 요약+강점+확인 필요 목록으로 파싱 렌더링.
PR #157 머지.
진수택PR#156 PR#158 PR#160채팅 품질 개선 · 이력서 텍스트 요약 입력 · 요약·임베딩 독립 실행자세히 ▾
확인 카드에 이름 표시·일정 제안 카드·서식 가이드·첫 인사 통일.
이력서·자기소개서 파일 텍스트를 AI 요약 입력에 포함(pdf·docx·hwpx 추출, 프롬프트 8천 자 상한).
요약과 임베딩을 독립적으로 재실행할 수 있게 라벨 중복 제거·스키마 상한 정리.
2026-08-31
이우정PR#150 부속공개 지원 폼(C1) + files[] 연결(C2·F1) + 면접관 가용 시간 화면자세히 ▾
로그인 없이 지원자가 접속하는 공개 지원 폼과, 접수 시 업로드 파일을 지원 행에 files[] 로 연결.
면접관이 자기 가용 시간을 등록하는 설정 화면(ADR-0016).
이우정PR#122 J8무인증 GET 대조 스크립트 + APP_ENV 잠금자세히 ▾지금까지 결함이 전부 이 대조에서 나왔다
02-api.md 계약과 실제 배포본을 무인증 GET 으로 대조하는 스크립트 신설.
APP_ENV 오타·미설정을 production 으로 잠가 개발용 설정이 운영에 새는 것을 물리적으로 차단.
진수택PR#153search_users 읽기 도구 + 권한 분리자세히 ▾내부 사용자 검색 도구 + 프롬프트 user_role 주입
면접관을 이름으로 찾을 수 없던 문제 해결. search_users 읽기 도구 추가(이름/이메일 ILIKE + role 필터).
프롬프트에 user_role 주입하여 멤버가 어드민 전용 도구(assign_interviewer) 요청 시 사전 차단.
라이브 테스트: 어드민→확인 카드 정상, 멤버→"어드민 권한이 필요해요" 차단 확인.
PR #153 squash merge.
진수택PR#151RAG 시맨틱 검색 + 프롬프트 체이닝 (ADR-0021·0022)자세히 ▾임베딩 + pgvector
지원자 통합 검색에 임베딩(문장을 숫자 벡터로 만들어 의미로 찾기) 기반 시맨틱 검색을 붙였다.
프롬프트 체이닝(작업을 여러 단계 프롬프트로 나눠 정확도를 높이는 방법)으로 요약→평가→추천을 단계별 파이프라인화.
진수택PR#150면접 일정 도구 4개 — ADR-0016 에이전트 연동자세히 ▾
아르가 면접 일정을 스스로 다룰 수 있도록 조회·제안·확정·취소 도구 4개 추가.
결정 문서 ADR-0016(면접관 배정 정책 v1) 을 코드에 연결.
2026-08-28
김민아큐 6지원자 상세·로그인 화면 (목데이터)자세히 ▾지원 정보·단계 변경 버튼·로그인 — #138 외
지원 정보·단계 변경 버튼이 있는 상세 화면과 로그인 화면 — 목데이터 기반(#138 외).
김민아큐 6지원자 리스트 화면 (목데이터)자세히 ▾상단 바·공고명·단계 탭·카드 리스트 — #137
상단 바·공고명·단계 탭·지원자 카드 리스트 — 목데이터 기반 화면 완성(#137).
김민아큐 6시안 반영 ④ 단계 변경 시트 · 단계 이력 · 평가 목록자세히 ▾PR #146
단계 변경은 메일이 나가는 되돌릴 수 없는 동작이라 확인 시트를 뒀다.
backend/app/stages.py 전이 규칙을 앱으로 옮겨 갈 수 있는 단계만 보여주고,
메일 경고는 NOTIFY_STAGES 에만, 불합격은 사유 없이 못 넘어가게 했다.
단계 이력·평가는 상세 안 섹션이 아니라 별도 화면으로 뺐다.
테스트 36 → 42개.
김민아큐 6시안 반영 ③ 공고 리스트 — 앱 첫 화면자세히 ▾PR #145
앱 계층이 공고 → 그 공고의 지원자 → 상세가 됐다. 지원자에서 시작하면
지금 어느 공고를 보는 중인지가 화면에 없다(05-design §0.5).
상단 바도 로고형에서 제목형으로 바뀌었다.
김민아큐 6시안 반영 ② 퍼널 바 · 탭 인원수자세히 ▾PR #144
막대는 비율만, 숫자는 탭이 맡는 분담(폰 너비에 라벨이 안 들어간다).
막대는 읽기 전용 — 8dp 는 48dp 터치 타깃을 못 채운다.
Row 기본 정렬 때문에 막대 높이가 0 이 되던 버그를 찾아 고치고, 크기를 재는
테스트를 붙였다 — 눈으로는 "가늘어서 안 보임"과 "높이 0"이 구분되지 않는다.
김민아큐 6시안 반영 ① 치수·단계 칩·상세 카드형자세히 ▾PR #143
화면 여백 12→16dp, 탭 44→48dp, 지원자 카드 72→88dp.
단계 표시를 글자에서 알약 칩으로, 상세 닫기를 X 에서 뒤로가기로,
지원 정보를 2단 그리드에서 카드형으로 바꿨다.
김민아큐 6모바일 시안 요청 — 목업에 없던 5건자세히 ▾프론트 담당자에게 요청 → 같은 날 시안 도착. 보류가 풀렸다
단계 변경 UI·이력 타임라인·평가 목록·퍼널 바 배치·모바일 공고 리스트 —
목업에 없어 05-design §12 대로 멈추고 요청한 5건. 시안이 도착해 전부 반영했다.
김민아큐 5Flutter 프로젝트·디자인 토큰·내비게이션 뼈대자세히 ▾05-design 토큰 Dart 이식 · IBM Plex Sans KR 번들 — #114
05-design 토큰을 Dart로 이식, IBM Plex Sans KR 폰트 번들, 내비게이션 뼈대 구성(#114).
김민아앱앱 이름 Arda · 런처 아이콘자세히 ▾PR #142
홈 화면 이름이 flutter create 값(arda)으로 남아 있어 Arda 로 고쳤다.
런처 아이콘을 Flutter 기본 로고에서 교체하고 Android 8+ 적응형 아이콘까지 생성.
원본 하나만 바꾸면 전 해상도가 다시 만들어지게 flutter_launcher_icons 로 배치했다.
김민아ADR-0010앱 스택 Flutter 재확정 (ADR-0010)자세히 ▾iOS 를 시연 범위에서 빼면서 Expo 기각 근거가 사라졌다 — #110 · #113
iOS를 시연 범위에서 제외하면서 Expo 채택 근거가 사라짐 — Flutter·Dart로 재확정(#110·#113), ADR-0010 갱신.
박소연큐7API 연동 — 로그인·공고·대시보드·지원자·평가자세히 ▾
백엔드 실제 API 5개 영역(로그인·공고·대시보드·지원자·평가) 연동(큐7).
박소연front프론트 뼈대 (React 라우팅·레이아웃)자세히 ▾
React(Vite·TS) 라우팅·레이아웃 뼈대 구축(1주차 React 전환 작업).
박소연PR#131 PR#132 PR#134 PR#135 PR#140프론트 실연동 착수 — API 클라이언트·대시보드·지원자·평가·설정 + 칸반 뷰자세히 ▾큐 7·8 프론트 몫
API 클라이언트·인증 배선과 공고 목록 실연동, 대시보드·지원자·평가·설정 5개 영역 실연동, 지원자 상세 연결과 패널 겹침 수정.
칸반 뷰(드래그로 단계 변경, 토스트 안내) 추가.
박소연D2·D3지원자 칸반 보드 UI (드래그 단계 이동)자세히 ▾
지원자 카드를 드래그해 단계(지원 접수→서류 검토→면접→최종)를 이동하는 메인 보드 UI — D2·D3.
박소연D1·D4·D9공고의 지원자 화면 + 상세 패널·일괄 단계 변경자세히 ▾
공고별 지원자 목록 화면과 상세 패널, 지원자 일괄 단계 변경 — D1·D4·D9.

진수택포스트Arda 프로젝트 구조 분석자세히 ›저장소 구조(backend 라우터 11종·에이전트 모듈) · 도메인 오너제와 W1 협업 규칙 진화 · ERD/API 문서=계약 원칙 · ADR 15건 · 게이트 일정(09/04·09/30) 분석

진수택W1STT 비용 로깅 통일 (채팅·요약·STT)자세히 ▾
STT(Whisper)에 비용 로깅이 빠져 있던 것 발견 — _estimate_stt_cost($0.006/분×오디오 길이) 구현, transcribe() 반환에 audio_duration_sec·cost_usd 추가.
채팅·요약·STT 3기능의 AI 원가 관측 체계 통일, ADR-0011에 실측 기록.
진수택W1E2E 엣지 케이스 8개 시나리오 실호출 검증자세히 ▾검색 0건, 모호한 요청, 잘못된 단계명, 삭제 요청, 공고 조회, 멀티턴 ID 추적, 특수문자
검색 0건("검색 결과 없음"+대안 제시) · 모호한 요청(도구 호출 없이 명확화 질문) · 잘못된 단계명(동명이인 확인 후 선택 유도) · 범위 밖 삭제 요청(미지원 안내) · 공고 목록 조회 · 멀티턴 3단계 ID 추적 · 특수문자(O'Brien) 검색.
8종 전부 PASS, 비용 실측 $0.083.
진수택W1E2E 데모 4단계 시나리오 (검색→조회→상태 변경→이메일 초안)자세히 ▾4단계 전부 실호출 성공, 비용 실측 $0.045
로컬 서버 실호출: ① "김도현 찾아줘"→동명이인 2명 안내 ② 상세 조회 ③ "서류심사로 옮겨줘"→후퇴 불가 안내+대안 ④ 이메일 초안→pending_action 반환(사람 확인 대기).
4단계 전부 정상, 비용 실측 합계 $0.045(Haiku).
진수택PR#141API TestClient 엣지 케이스 41개자세히 ▾4개 엔드포인트 HTTP 레벨 테스트 + 경계값·보안 패턴
에이전트 4개 엔드포인트(summarize·chat·confirm·stt)를 HTTP 레벨에서 검증.
기본 동작 20개 + 엣지 21개 — 경계값, SQL injection, XSS, 권한 없는 접근, 빈 입력.
PR #141로 squash merge.
진수택PR#136프롬프트 튜닝 — ID 혼동 수정자세히 ▾agent.v1.md에 ID 참조 규칙 2줄 추가
E2E에서 대화가 길어지면 application_id를 엉뚱한 값(id=1)으로 참조하는 문제 발견.
agent.v1.md에 규칙 2줄 추가 — ① 직전 도구 결과에서 확인된 ID만 사용, ② "이 지원자" 지시어는 최근 조회 지원자 기준.
수정 후 정확한 ID(id=52) 참조 확인.
진수택PR#133+#141테스트 커버리지 보강 — 전체 185개자세히 ▾prompts 12 + summarizer 10 + api_agent 41 등
신규: test_prompts 12(로더 resolve/render/variables) · test_summarizer 10 · api_agent TestClient 41.
전체 구성: entity_resolver 35, write_tools 19, stages 15, stt 15, cost 13 등 — 185개 전부 통과.
진수택PR#130한글 수사 오탐 방지 + 텍스트 채팅 재연결자세히 ▾entity_resolver 오탐 수정 + ADR-0015
entity_resolver가 한글 수사("첫 번째")를 오탐하던 문제 수정 후, 텍스트 채팅 경로에도 resolve_entities 재연결(A안).
결정 근거는 ADR-0015로 기록, PR #130 squash merge.
2026-08-27
이우정PR#122 PR#123 PR#124 PR#125Dockerfile 안정화 · 기동 로그에 APP_ENV 표시자세히 ▾
Dockerfile 에 scripts/ COPY 추가, .dockerignore 중첩 경로 처리, 기동 로그에 APP_ENV 모드 표시.
박소연PR#119빈 화면 구현 · 앱 셸 개선 · 아르 UX자세히 ▾
기능 진입 전 빈 상태 화면을 채우고, 앱 셸(상단 바·사이드바)의 여백·순서 정돈, 아르 채팅 진입 UX 다듬음.
2026-08-26
이우정PR#108 PR#109마감일 자동 마감 + 공개 지원 링크 + 불합격 사유 + 일괄 단계 변경자세히 ▾
마감일 지나면 공고 자동 마감(B4·B6), 지원자 일괄 단계 변경과 불합격 시 사유 필수 저장(D8·D9).
김민아PR#110 PR#113 PR#114 PR#116Flutter 프로젝트·디자인 토큰·내비게이션 뼈대 (ADR-0010)자세히 ▾앱 스택 Flutter 확정
앱 스택을 Flutter 로 확정(ADR-0010), 프로젝트·디자인 토큰·내비게이션 뼈대 착수(큐 5).
박소연PR#87 PR#89 PR#112 PR#115React 로그인·공고 목록·대시보드 면접 일정 · 면접 일정 화면자세히 ▾
React 로그인·공고 목록 화면, 대시보드에 면접 일정·전형 현황, 면접 일정 화면 추가와 대시보드 진입점 연결.
목업 검토 후 마감 뱃지 스타일 누락 수정.

팀 전체포스트Arda ATS 1주차 팀 활동 보고자세히 ›08/20~26 팀원 5인 활동 정리 — 기반 구축·목업(이재우), API·인프라(이우정), 목업·React 전환(박소연), 백엔드 분담·문서(김민아), 에이전트 코어(진수택)

진수택PR#88 PR#103 PR#104 PR#107에이전트 v2 — 요약 스키마·엔티티 해석·프롬프트 v2·TOOLS.md v1.1자세히 ▾
요약 출력 스키마와 프롬프트 v2 마커, 엔티티 해석 레이어(음성 전사에서 이름·시간 등을 걸러내는 단계), 단위 테스트 정식 배치.
도구 명세서(TOOLS.md)를 초안에서 v1.1 로 — 코드와 문서 불일치 6건 수정.
2026-08-25
김민아전환기백엔드 분담 큐 (B2 → D1 → D6)자세히 ▾08/25 완료 — B2 #32 · D1 #48 · D6 #72
전환기 백엔드 분담분 — B2(#32)·D1(#48)·D6(#72) 3건 구현·머지(08/25).
김민아PR#32 PR#48 PR#72 전환기 백엔드채용 공고 CRUD · 지원자 목록·상세·단계 이력 · 담당자 지원자 직접 등록자세히 ▾앱 오너 확정 전 백엔드 분담분
B1·B2·B3 채용 공고 CRUD API, D1·D4·D5 지원자 목록·상세·단계 이력 API, D6 담당자 지원자 직접 등록 API.
박소연PR#37 PR#38 PR#39 PR#46 PR#47 PR#80목업 화면 3종 — 대시보드·공고·지원자 등록 + 이동/닫기 fix자세히 ▾정적 목업 → 이후 React 실연동
대시보드 정적 목업, 공고·지원자 등록 화면, 목업 화면 간 이동 연결과 닫기 표시·헤더 정렬 수정.
캐릭터 "아르다" 반영.
진수택PR#50 PR#57 PR#69평가·면접관 배정 API + ADR-0012·0013 확정자세히 ▾
평가 작성·목록·평균 API(E1·E2), 면접관 배정 API(E3).
결정 문서 ADR-0012(서류심사 AI 분류 기준)·ADR-0013(면접관 배정 정책 v1) 확정.
진수택PR#33 PR#34 PR#35 PR#36 PR#76 PR#83에이전트 뼈대 착수 — 도구 스펙·프롬프트·PoC·M2~M4 요약·읽기·쓰기자세히 ▾결정 문서 ADR-0009·0011
도구 명세와 이력서 텍스트 추출 개념 증명(한글 PDF), 프롬프트 뼈대와 요약 출력 규약, M2~M4 요약·읽기·쓰기 도구.
결정 문서 ADR-0009(에이전트 UI 위치 시안 3안)·ADR-0011(모델·비용 제안) 함께 확정.