이정수
aa55524191
docs(screenshot): 인증 흐름 추가 변경 기록 및 교차 링크
...
- docs/changes/2026-06-30-screenshot-guide-auth.md 신규 작성
- docs/changes/index.md 링크 추가
- docs/development/screenshot-guide.md 변경 이력 섹션 추가
- .atp/work-session/20260630-141415/ 세션 보고서 포함
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162BaZnrbiYgWc9JJMZ9Czb
2026-06-30 14:32:15 +09:00
이정수
5eb6f3950e
chore(atp): work-session 20260630-123347 보고서
2026-06-30 12:36:58 +09:00
이정수
3726ce54f2
docs(retro): 세션 20260630-113258 회고 교훈 3건 docs 반영
...
- CLAUDE.md: 정적 CSS/JS Tomcat DefaultServlet 서빙 경로 규약 추가
- security-remediation-checklist: B5 recruit-form CSRF 폴백 갭 (P0) 추가
- verification-strategies: graphify 스캔 범위 JSP/CSS/JS 미포함 교훈 추가
- report.md: ended_at 기록
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-30 12:11:04 +09:00
이정수
770d3922e2
docs(graph): full scope graphify 재생성 — frontend 분석 + PostsMapper 반영 ( 5e0f76b)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-30 12:06:00 +09:00
이정수
5e0f76b7c1
docs(analysis): JSP 프론트엔드 컴포넌트 중복·유지보수 검토
...
- CSS 디자인 토큰 23개 파일 중복, JS 유틸 8중복,
recruit-form CSRF 폴백 갭, 날짜 함수 편재 발견
- 권고: global.css 중앙화(P0), bibimbap-utils.js(P1),
recruit-form CSRF 수정(P0-보안), bibimbap-date.js(P2)
- work-session 아티팩트: research + design recommendations 포함
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-30 11:53:15 +09:00
이정수
fa9a888c5b
docs(graph): src+docs scope → full 단일 scope 통합
...
src↔docs 교차 엣지 단절 문제로 분리 scope 폐기.
merge-graphs로 2038노드/4685엣지 full 그래프 생성.
규모 비대화 시 재검토 노트 work-session에 기록.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-30 10:32:51 +09:00
이정수
2c48184fa7
chore(atp): retrospective 섹션 + memory_candidates 기록
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 19:24:33 +09:00
이정수
f6617a951d
chore(atp): report 종료섹션(검증/graph_refresh/user_signals)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 19:19:17 +09:00
이정수
31dc2ff964
chore(atp): work-session 20260629-175705 기록(B2·B4·FE 3트랙)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 19:10:42 +09:00
이정수
ee9487e118
docs(game): 좋아요 실환경 스모크 PASS 반영
...
사용자 검증: 로그인 좋아요 클릭 → 탐색 목록 카운트 반영 확인(docker compose dev).
changes/security 체크리스트의 "실환경 스모크 미수행" → 완료로 갱신.
잔여: game_likes UNIQUE 마이그레이션 운영 적용(사용자 확인 게이트).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 17:38:20 +09:00
이정수
3405de4350
chore(atp): work-session 갱신 — dev 앱 docker 전환 기록 (sid 20260629-171042)
...
spring-boot:run(호스트) → docker compose app 컨테이너. 스모크 403/200 확인.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 17:28:02 +09:00
이정수
2d1d58c8e5
chore(atp): work-session 갱신 — 재배포 수행/라이브 확인 (sid 20260629-171042)
...
spring-boot:run 재기동(PID 99638), POST /game/{id}/like 403 확인.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 17:24:11 +09:00
이정수
189e34231c
chore(atp): work-session 산출물 기록 (sid 20260629-171042)
...
좋아요 스모크 실패 진단 — 원인=미재배포(코드 결함 0).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 17:18:08 +09:00
이정수
fcfe8a8db8
chore(atp): work-session 산출물 기록 (sid 20260629-151216)
...
게임 좋아요 서버 영속화 — 근본원인/설계/검증/회고 기록.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 16:15:42 +09:00
이정수
98fba1ec9b
chore(atp): work-session 산출물 기록 (sid 20260629-142115)
...
직전 needs_user_verification 4건 처리 세션. resumed_from 20260629-100849.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 15:01:27 +09:00
이정수
af298ce8a0
chore(atp): W3/W4 work-session 산출물 기록 (sid 20260629-100849)
...
잔여 5기능 구현 세션. report.md(invocations·decisions·verified_by_me·needs_user_verification·graph_refresh·회고) + 소유권맵·검증·문서화 산출물.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 12:54:50 +09:00
이정수
ba1a5fe572
chore(atp): W2 work-session 산출물 기록 (sid 20260624-100749)
...
W2 게임잼 워크스트림 6기능 구현 세션 — 구현/검증 보고·소유권맵·세션 report·회고. orchestrator+implementation/verification-advisor 협업, 6 feat 커밋(ccf1e42~a74bf74), 190/190 GREEN.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 14:23:13 +09:00
이정수
4168d4de52
chore(atp): W2-W4 풀설계 세션 회고·마감 기록 (sid 20260623-104307)
...
- retrospective-advisor 회고(잘된점5/개선2/memory_candidates4/protocol_feedback3) + Retrospective 섹션.
- 교차정합 감사 verdict + HIGH-1 회귀 정정 기록. ended_at 마감.
- memory_candidates 처리: 전부 ATP 프로토콜 레벨 → protocol_feedback 보존(플러그인 전역이라 §6 게이트로 미편집). MEMORY 비기록(opt-in 없음).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 12:21:37 +09:00
이정수
bfbe1de9e4
docs(design): W2(게임잼)+W3(잔여)+W4 풀설계 산출 + 골자 카탈로그 + stale 정정
...
설계 전용 세션(코드 0줄, src/·pom.xml 무변경). 골자 → 정석 결정 확정 → 풀설계.
- 골자 신규: W2(6서브)·W4 카탈로그(docs/work-log/2026-06-23-w2-w4-feature-skeletons.md). W3-* 는 기존 골자 유지.
- 풀설계 11기능(W2-1~6·W3-1/3-3/3-4/3-5·W4) — W1-design 깊이(DDL/API계약/시퀀스/파일영향맵/대안비교/AC매핑), 오픈질문 0. 본문 = .atp/work-session/20260623-104307/implementation/.
- 정석 크로스-W 결정(개입없이 orchestrator 확정, 사용자 위임): 잼 스코프=별도 jam_judges / 평가단위=(jam_id,game_id) 자연키 / 유저평점=avg_rating 단방향 / 잼연결=조인테이블 jam_entries + 팀출품 1차 / 인기투표=1인1표 UNIQUE / SSRF=공용 SsrfSafeFetcher 9항목 / 권한키 BADGE_MANAGE 신규.
- 교차정합 감사(_cross-consistency-audit.md): 동결 단일권위(W2-3) 유지·하류 정합 PASS. HIGH 1(W2-1 평가단위 표현 drift, DDL정합) 5개소 정정. LOW 3 무해.
- 골자 stale 정정 3건: RBAC 인프라 실재(enforcement 갭)·리뷰 하이브리드(overall+6축)+VIEW·/game/** 정상 서빙(QG-3 해소, GameAssetController).
- 통합 인덱스: docs/work-log/2026-06-23-w2-w4-full-design-summary.md.
검증: 설계 전용 — 코드 변경 0이라 L1/L2 해당 없음(graph-refresh §3.2 no-scope-change skip). 구현·검증은 착수 시 별도 세션. game_likes 운영 DB UNIQUE 는 미확인(추정, 운영 확인 권장).
resumed_from: 20260622-180054 (W1 설계/구현)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 12:14:32 +09:00
이정수
a19619f434
chore(atp): W1 work-session 산출물 기록 (sid 20260622-180054)
...
feasibility 판정 → W1 requirements/design/impl 보고서. 설계 세션 전환 결정 포함.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 10:38:57 +09:00
이정수
e0eb8eae15
docs(dev): 검증 회고 교훈 반영 — DB-방언 계약 L2 + stale 빌드 가드
...
W3-2 L3 검증 세션(20260622-170857) 회고에서 채택한 재현성 교훈 2건 docs 반영.
- verification-strategies.md: 버그범주→L레벨 표에 "MyBatis 매퍼/SQL alias·집계 뷰
변경 = L1+L2(dev DB contract)" 행 추가 + mock-vs-reality 노트(alias 케이스 폴딩,
뷰 fan-out 실증) — L1 @MockBean 이 DB-방언 계약을 구조적으로 우회함을 명시.
- local-setup.md §4.2: L3 검증 진입 전 "가동 앱이 현재 빌드인지" 확인 절차 신설
(JSP docBase 동결 → stale spring-boot:run 라이브 리로드 불가, 재기동 필수).
- work-session 회고 산출물(report.md Retrospective/applied_changes) 동봉.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:58:47 +09:00
이정수
21892c8a03
fix(reviews): game_review_stats 집계 버그 2건 수정 + W3-2 L3 검증 완료
...
W3-2 댓글/리뷰 고도화 검증 부채(DDL 적용·L1 회귀·L3 브라우저 스모크) 해소 중
서버 집계의 실버그 2건을 발견·수정. 둘 다 L1 @MockBean 사각으로 누출됨.
BUG-1 game_review_stats 뷰 fan-out
- LEFT JOIN game_review_axes 직접 조인 → 리뷰가 axes 행수(최대 6)만큼 복제,
COUNT(*)/AVG(rating) 왜곡(다축 리뷰 1건에 review_count 11/avg 2.8, 실제 6/3.5).
- 축 평균은 서브쿼리 game 단위 선집계 후 LEFT JOIN(MAX), 리뷰 단위 집계는
game_reviews 단독 산출로 수정. docs/game-reviews-ddl.sql + db/schema.sql 동기.
BUG-2 GameReviewStatsMapper alias 케이스 폴딩
- 따옴표 없는 AS gameId/avgRating/reviewCount → Postgres 소문자 폴딩 →
buildSummary의 camelCase Map 조회 null → summary 항상 null("아직 평가 없음" 오표시).
- alias 3개 큰따옴표로 케이스 보존.
검증
- mvn test 43/43 GREEN(수정 후 무회귀).
- 수정 후 dev 실게임: 뷰 review_count 6/avg 3.5, summary={avgRating:3.5,reviewCount:6,axes}.
- L3 스모크 12항목 전수 PASS(XSS 미실행·재방문 영속·다축6행·SVG레이더·집계·
페이지네이션·키보드·C1/C2/C4·B2·A2). changes 문서 §L3 결과 + security checklist B3 갱신.
- 권고: game_review_stats L2 contract 테스트 신설(L1 mock 사각 차단) — 이월.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:54:19 +09:00
이정수
f81991b409
chore(atp): work-session 산출물 기록 (3개 세션)
...
work-session 은 추적 대상(durable history)이나 3개 디렉토리가 untracked 로
남아 있던 것을 소급 기록 — 추적 관행 일관성 복원.
- 20260622-162345: 이번 세션(로컬 DDL 적용 + 커밋 정책).
- 20260622-092800: 오늘 선행 세션.
- 20260618-145152: 6/18 orphan(후속 W3-2 작업에 이미 계승됨).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:59:18 +09:00
이정수
3a06b39d76
chore(dev): W3-2 테스트용 dev seed + serena memory
...
리뷰/댓글 기능 수동 테스트를 위한 멱등 dev seed.
- seed-dev.sql / seed-dev-teardown.sql: 로그인 테스트 계정 1, 더미 게임 1,
별점 다양한 더미 리뷰 5(유저별 1리뷰 unique 충족), 댓글 3. NOT EXISTS 가드로 재실행 안전.
- serena memory: PBKDF2(BCrypt 아님) 해시 형식, dev-seed blueprint(FK순서+active-unique),
JDK 컨테이너 교차검증 패턴 기록.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019tHAb6XYHWDPzb82FNKugo
2026-06-18 14:35:33 +09:00
이정수
e98c437765
feat: W3-2 댓글/리뷰 분리 구현
...
기존 game_comments(닉네임 자유입력, localStorage 전용)를 서버 영속화 +
로그인 연동으로 전환하고, 별점 5점 + 서술 평가 형태의 game_reviews 도메인 신설.
- 댓글 서버 영속화: localStorage → DB game_comments. user_id NULL FK 비파괴 추가,
content 200자 앱레벨 검증. 레거시 nickname 레코드 보존(비마이그레이션, QG-2).
- game_reviews 신설: 게임당 1회(partial UNIQUE), rating CHECK(1~5), soft-delete.
- 권한: 작성자 본인 OR ROLE_ADMIN. 비로그인 쓰기 401, CSRF 미검증 403.
- GameController.deleteGame 에 리뷰 cascade soft-delete 추가.
- GameCommentController(C1~C4) / GameReviewController(R1~R5) 신규.
- 컨트롤러 단위 테스트 추가, BibimbapApplicationTests 매퍼 @MockBean 보강.
- 보안 체크리스트 댓글 항목 충족 마킹, 좋아요 항목은 범위 밖 미결 유지.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019tHAb6XYHWDPzb82FNKugo
2026-06-18 14:35:24 +09:00
이정수
f9590e59bc
docs: 에이전트 출력 규약 추가 — 의사결정 제시문 압축 비적용
...
W3 합의 세션 회고 교훈을 MEMORY 대신 docs/development/ 에 반영(사용자 지시).
사용자 대면 의사결정 제시문은 배경+선택지+권장 풀어쓰기, 압축은 내부 산출물 한정.
발원: 20260617-174635 세션 W3-1 마무리 질문 과압축 → 사용자 파악 실패.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 10:16:09 +09:00
이정수
15b8bc3362
docs: W3 사이트플랫폼 5기능 골자 확정 (draft→confirmed)
...
W3-1~W3-5 골자를 기능별·항목별 합의해 status draft→confirmed.
- W3-1 태그+검색: 통합 1테이블, 정렬 매트릭스(태그 일치도 가중×2차키), 개발자 검색
- W3-2 댓글/리뷰: 리뷰=별점5+서술(다축 후속), 권한 작성자+운영자, 수정=이력보존+'수정됨' 표시
- W3-3 포스팅: W1 완료 후 착수, 카테고리 DB, 마크다운, OG 미리보기, 유니티블로그 외부 피드 감시
- W3-4 메인 허브: 잼 노출=검색창 아래 배너→잼 태그 검색 라우팅, 페이지네이션 도입
- W3-5 WebGL: deferred 유지, 조사 항목 7개·권한·QG-3 조사 단계로
합의 중 새 결합 3건 발굴: W3-1↔W3-2 양방향 / W3-4→W3-1 잼태그 라우팅 / W3-3 외부 fetch 인프라.
착수순서 W3-2→W3-1→W3-4→W3-3→W3-5 확정. 미결질문은 해소 않고 합의 목록으로 유지.
세션 산출 동봉(20260617-172407 초안 생성 + 20260617-174635 합의).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 09:57:37 +09:00
이정수
2eb0be5654
docs: 고도화 로드맵 목적축 재구조 (게임잼 단일프레임 → W1~W4 워크스트림)
...
20260617-150635 로드맵(S1~S7, 의존성축)을 목적축("왜 존재/누구를 위한가")으로
재검토. 모든 항목이 단일 "게임잼" 프레임에 묶여 있던 것을 4개 목적 워크스트림으로 분해:
- W1 거버넌스/RBAC — 사이트 거버넌스, 게임잼은 소비자, 독립
- W2 게임잼 — 본체(엔티티+심사위원역할+잼평가설계+심사/투표/시상)
- W3 사이트 플랫폼 — 태그검색·댓글리뷰·포스팅·메인허브·Unity, 전부 잼일정 독립
- W4 유저 배지/평판 — 신규 발굴(리뷰어/기술자가 RBAC 플래그로 오분류됐던 것)
150635 대비 핵심 교정 5건 + S→W 매핑표 + 의존성 그래프(빌드순서) 유지.
번들(이전 잔여 정리): 오늘 work-session durable history
(094450/143315/150635/162536), serena 설정·메모리, 분석문서 교차링크.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:20:53 +09:00
이정수
14f41c6531
feat: 로컬 개발환경 셋업 (Docker + 호스트 직접) 검증 + 온보딩 문서
...
두 경로를 실제 실행으로 검증하고 온보딩 문서를 추가한다.
- docs/usage/local-setup.md: 7섹션 온보딩 (Path A Docker / Path B 호스트,
DB 스키마 초기화, 검증 체크리스트, 트러블슈팅, 미해결). usage/index 링크.
- db/schema.sql: 6테이블 init DDL 복원. recruit_posts 는 권위 DDL,
나머지 5테이블은 매퍼+POJO 역추출 비권위본(타입 추론, 헤더에 명시).
- docker-compose.yml + Dockerfile: postgres:16 + JDK21 멀티스테이지 빌드.
비밀값은 .env(gitignore)/환경변수 주입, 이미지·git 비포함.
회사 TLS 인터셉션 프록시 대응으로 certs/*.crt 를 빌드 truststore 에 주입.
starter-parent 미사용 pom 이라 spring-boot:repackage 명시(-P dev 필수).
- .env.example / .dockerignore / certs/README.md 추가, .gitignore 에 .env·certs CA 제외.
- mvnw 실행권한 부여.
검증: Path A 홈 200 + DB 라운드트립, Path B mvnw test 6/0/0 + spring-boot:run 200.
AC 5/5 PASS. src/·pom.xml 무수정.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 11:55:30 +09:00
이정수
d297f31f72
chore: Serena onboarding 메모리 + graphify 지식그래프(src·docs) 생성
...
- .serena/memories/: 프로젝트 onboarding 메모리 6종(core/tech_stack/
suggested_commands/conventions/task_completion/graphify_workflow)
- docs/graph/: graphify src(384N/613E/23C)·docs(44N/56E/7C) 스코프 생성,
index.md 메타·Scopes 표 갱신 (graph 본체 html/json/audit 는 gitignore)
- .atp/work-session/20260616-123205/: ATP 세션 보고서
Serena Java LSP 가 사내 SSL 검사 프록시(Cloudflare Gateway CA)로 IntelliCode
다운로드에 실패하던 것을 CA 번들(certifi+System keychain) MCP env 지정으로
해결한 뒤 진행.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 14:13:51 +09:00
이정수
33a4465e0e
docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가
...
docs/ 카테고리 트리(adr·analysis·architecture 등)와 ATP 워크플로 문서를 신규 추가하고,
4축(아키텍처·보안·품질·도메인) read-only 종합 분석을
docs/analysis/2026-06-16-project-analysis.md 로 기록한다.
- 신규 분석 문서 + docs/analysis/index.md 링크
- 기존 docs 2건(db-update-query-generator, user-signup-schema)에 교차링크 추가
- CLAUDE.md 프로젝트 지침, .atp/work-session 분석 세션 기록, .serena 프로젝트 설정 포함
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 12:18:56 +09:00