이커머스 데모를 세 세션으로 나눠 구현
처음에는 Codex 세션에서 Orca로 Claude Code 세션을 여는 방식을 썼다. 하지만 현재 Codex 세션에 Orca 터미널 핸들이 없어 no_active_sender_terminal 오류가 나고 세션이 열리지 않았다. 그래서 Herdr 멀티탭으로 바꿨다.
Herdr에 Claude Code 탭 3개를 열고 파일을 나눠 맡겼다.
- products.js: 상품 7개, 검색, 상세 설명, 가격과 재고, 담기 버튼. 품절 상품은 버튼을 비활성화했다.
innerHTML을 쓰지 않고textContent로 넣었다. jsdom 테스트는 통과했다. - cart.js:
addToCart,renderCart. 수량 변경, 삭제, 배송지 입력, 모의 결제를 담당한다. 결제하면ecommerce_orders에 주문을 저장하고 장바구니를 비운 뒤orders-updated이벤트를 보낸다. jsdom 테스트만 돌렸고 실제 브라우저에서는 실행하지 않았다. - 화면과 연결:
index.html,style.css,app.js,orders.js,README.md를 맡았다. 취소·반품·교환 요청은 주문의status를 바꾸는 방식이다. Chromium E2E 37개가 모두 통과했다.
실행은 python3 -m http.server 8000으로 한다. file://로 열면 모듈이 로드되지 않는다.
Herdr 쪽 리더 보고에 따르면 브라우저에서 검색, 담기, 수량 변경, 배송지 입력, 모의 결제, 주문 내역까지 확인했다. 주문 요청 버튼을 눌렀을 때 상태가 바뀌는지는 직접 확인하지 못했다.
테트리스 PRD를 구현 전에 검토
구현에 들어가기 전에 PRD부터 검토했다. 작업자 3명에게 역할을 나눴다. 한 명은 줄 제거·점수·레벨, 한 명은 블록 생성·이동·회전·낙하, 한 명은 시작·일시정지·게임오버·재시작을 맡았다. 모두 구현 없이 PRD만 읽고 .herdr-reports/에 보고서를 남기도록 했다.
검토에서 나온 문제는 이렇다.
- 레벨 공식 오류: §7.11 레벨 공식이 맞지 않는다.
- 우선순위 규칙 모순: §1과 부록 F의 규칙이 서로 충돌한다.
- T02 Given 위치 오류: 부록 E의 (3,19)에서 T 블록은 아래로 이동에 성공한다. 실패는 y=20부터 발생한다. (3,20)으로 고치자고 제안했다.
- 공중 고정 가능성: 리셋 횟수만 세고 착지 조건이 없어서 공중에서 16번 움직이면 고정된다(부록 D-8).
- 문서 구조 문제: 1장은 "구현은 부록 A~F만"이라고 하지만, 흐름 규칙 대부분은 8·9·10장에 있고 일부는 부록 D와 충돌한다.
PRD 수정이 끝나기 전에는 구현을 시작하지 않는다. 리더의 최종 취합 결과는 기록에 없다.
예약 시스템 Spring Boot 샘플
핵심 기능은 세 가지로 정했다. 예약 가능 시간 조회, 예약 생성·확정, 예약 조회·변경·취소다. Herdr 탭 3개에 작업자를 나눠 배정했다.
- AvailabilityController:
GET /api/slots?date=YYYY-MM-DD - BookingController:
POST /api/reservations - ManagementController: 목록, 단건 조회, 시간 변경, 취소
각 작업자는 담당 파일만 고치고, 공통 파일은 건드리지 않도록 했다.
첫 실행에서는 세 세션 모두 'claude-opus-4-7' does not support the speed parameter 오류로 400이 났다. 같은 세션에서 /fast를 세 번 입력했지만 응답이 없었다. 재지시 후 결과는 다음과 같다.
- 가용 시간 조회: 테스트 4개 통과. 다른 Maven 실행과 충돌하지 않도록
-Dproject.build.directory=target-availability로 빌드 디렉터리를 분리했다. - 예약 생성: 테스트 5개를 작성했다(201 성공, 빈 이름 400, 비정각 400, 과거 시간 400, 정원 초과 409). 그런데
mvn test가 세션 분류기에 막혀 실행하지 못했다. 그래서 그린 여부는 확인하지 못했다. - 예약 관리: 테스트 10개가 모두 통과했다. 리더 피드백에 따라 시간 비교를 JSON 문자열 대신
LocalDateTime객체 비교로 바꿨다.
리더 보고에 따르면 mvn test는 20개가 모두 통과했다. 실제 서버에서는 시간 조회, 예약 생성, 정원 초과 거절, 변경, 취소, 목록 조회를 HTTP 요청으로 확인했다. 테스트 실패 1건도 고쳤다. 다만 예약 생성 테스트는 작업자가 직접 돌려 확인하지 못한 상태였다.
기술 아티클 6편 발행
/blog-tech-article로 6편을 발행했다. 주제는 OpenTelemetry Trace Context 전파, GitOps와 Argo CD, Chaos Engineering, SRE Error Budget, Blue-Green·Canary·Rolling 배포 전략, Kubernetes Pod Lifecycle과 Graceful Shutdown이다. 이미 쓴 같은 주제 글은 제외했다.
check_live에서 6편 모두 PASS가 나왔다. 페이지는 200으로 응답했고, /articles 목록에 등록되었으며, 이미지도 전부 200이었다. 09:55에 chore: 기술 아티클 운영·배포 6편 이미지 추가 커밋이 들어갔다.
리더 지시를 이 작업의 프롬프트로 잘못 보낸 일도 있었다. 블로그 스킬에 Herdr 리더 지시가 들어갔는데, 응답은 기록에 없다.
유튜브 영상 업로드
/topic-video-youtube로 "수라상 12첩의 진실" 영상을 만들었다. 「아키의 공백」 채널에 공개로 올라갔다(https://youtu.be/Rlwzh8j5kUE). 길이는 3분 47초이고 썸네일도 적용됐다.
- 음악은 없다. ElevenLabs 키에 음악 권한이 없었다.
- 설명란에 참고 자료 3개, 주영하 교수의 소속, AI 사용 고지를 넣었다.
- 렌더된 영상은 직접 보지 않았다. 소리와 자막 시각은 음성 파일 길이로만 확인했다.
- 받아쓰기가 흔들린 곳 5군데는 모두 받아쓰기 쪽 잘못으로 판정했다. 사람 귀로 확인한 결과는 응답이 잘려 기록에 없다.
남은 것
- 이커머스: 주문 요청 버튼의 최종 상태 변경을 확인하지 않았다.
cart.js는 실제 브라우저에서 돌리지 않았다. 주문 화면 세션의 화면 크기별 검사 결과는 기록에 없다. - 테트리스: PRD 수정 제안(레벨 공식, 우선순위 규칙, T02, 공중 고정)이 아직 반영되지 않았다. 리더의 최종 취합 결과는 기록에 없다.
- 예약 API:
BookingControllerTest는 실행하지 못했다. 로컬에서mvn -Dtest=BookingControllerTest test로 확인해야 한다. 리더의 "20개 통과" 보고는 작업자가 개별로 확인한 결과가 아니다. - 영상: 렌더 결과를 직접 보지 않았다. 받아쓰기 교정은 응답이 잘려 최종 판단을 확인하지 못했다.
- Antigravity: hero.png 생성 결과가 기록에 없다. 응답은 이미지 생성 하위 에이전트를 기다리는 상태에서 끊겼다.
댓글 0개
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.