bibimbap/docs
이정수 35f1dc3de9 feat(search): W3-1 게임 태그 + 검색 확장 — tags/game_tags/jam_tags/game_views + 다중태그·정렬키·방문수·리뷰 정렬
- 신규 4테이블(tags/game_tags/jam_tags/game_views) + games.view_count ALTER: docs/tag-ddl.sql 권위 + db/schema.sql 동기 사본, 멱등(IF NOT EXISTS/DO $$ guard)
- 통합 태그 도메인: tag_type(GAME/JAM/COMMON) + 운영자 사전정의·사용자 pending→승인 하이브리드. slug/name UNIQUE
- 검색 확장 GamesMapper.searchGamesAdvanced(SearchCriteria): 태그 다중필터(AND HAVING==tagCount / OR IN) + 제작자 ILIKE + 정렬키 6(latest/likes/views/reviews/rating/relevance) + 잼 검색 라우트(/games/search?jam={slug}, jam_entries 조인). 기존 searchVisibleGames 보존(회귀 0)
- game_review_stats VIEW LEFT JOIN: avg_rating AS "avgRating"/review_count AS "reviewCount" 케이스폴딩 인용. NULLS LAST. 정렬키/tagMode 는 <choose> 내부 고정문자열
- 방문수: game_views 24h dedupe(interval) + games.view_count 비정규화 증분. GameController view 훅
- 태그 관리 API: TagController(생성/승인/비활성/부착) CSRF 전수 + /admin/tags CONTENT_MODERATE 게이트. TagSanitizer 길이2~20·화이트리스트·금칙어(banned-words.txt)
- 신규 4매퍼 #{} only(${} 0건). GameData nullable 박스필드(viewCount/avgRating/reviewCount) 확장. BibimbapApplicationTests @MockBean 4종

검증: 컨테이너 ./mvnw -o test 235/235 GREEN(신규 45: TagSanitizerTest 16·SearchControllerTest 10·TagControllerTest 19), 회귀 0. L2 격리 throwaway DB contract PASS(alias 케이스폴딩 인용/비인용 대조·NULLS LAST·AND⊆OR·ILIKE·interval dedupe). 집합전수 AC-1/2/4/5 PASS. 실 dev DB 무접촉.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 10:44:23 +09:00
..
adr fix: harden auth csrf handling 2026-06-16 15:38:44 +09:00
analysis docs: 고도화 로드맵 목적축 재구조 (게임잼 단일프레임 → W1~W4 워크스트림) 2026-06-17 17:20:53 +09:00
architecture fix: harden auth csrf handling 2026-06-16 15:38:44 +09:00
backlog docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
changes docs(jam): W2 게임잼 변경 이력 기록 + 설계 구현추적 갱신 2026-06-24 14:19:14 +09:00
contracts docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
development docs(dev): W2 회고 교훈 3건 반영 — (검증)태그·케이스폴딩 기준·공유헬퍼 grounding 2026-06-24 14:23:12 +09:00
domain docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
feedback docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
graph chore(graph): graphify 양 scope 재생성 메타 갱신 — W1 RBAC + W2 게임잼 (b9d836d→a74bf74) 2026-06-24 14:19:14 +09:00
issues docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
maintenance docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
security fix(reviews): game_review_stats 집계 버그 2건 수정 + W3-2 L3 검증 완료 2026-06-22 17:54:19 +09:00
usage docs(dev): 검증 회고 교훈 반영 — DB-방언 계약 L2 + stale 빌드 가드 2026-06-22 17:58:47 +09:00
work-log docs(jam): W2 게임잼 변경 이력 기록 + 설계 구현추적 갱신 2026-06-24 14:19:14 +09:00
db-update-query-generator.md Merge PR #1 (docs/project-analysis): ATP 문서 체계 + 프로젝트 종합 분석 2026-06-17 10:00:39 +09:00
game-reviews-ddl.sql fix(reviews): game_review_stats 집계 버그 2건 수정 + W3-2 L3 검증 완료 2026-06-22 17:54:19 +09:00
index.md fix: harden auth csrf handling 2026-06-16 15:38:44 +09:00
jam-ddl.sql feat(jam): W2-1 게임잼 엔티티/라이프사이클 — jams/entries/teams + GAME_JAM_MANAGE enforcement + 공개 목록·상세 2026-06-24 10:50:12 +09:00
jam-eval-ddl.sql feat(jam): W2-3 잼 평가 동결 스키마 — jam_criteria/scores/votes/awards + jam_score_stats VIEW (⚠️클러스터 단일권위) 2026-06-24 11:33:19 +09:00
jam-judge-ddl.sql feat(jam): W2-2 심사위원 역할 — jam_judges + JamRoleGate(잼 스코프 게이트) + 자기출품 충돌 2026-06-24 11:15:22 +09:00
profile-management-prompt.md Prepare public repository 2026-05-03 16:13:32 +09:00
rbac-ddl.sql feat(rbac): W1 거버넌스/RBAC — 관리자 콘솔·권한 게이트·세션 epoch 전파 2026-06-23 10:38:57 +09:00
recruit-posts-ddl.sql 페이지 개선 2026-06-13 15:05:12 +09:00
security-hardening-ddl.sql 페이지 개선2 2026-06-13 15:05:18 +09:00
tag-ddl.sql feat(search): W3-1 게임 태그 + 검색 확장 — tags/game_tags/jam_tags/game_views + 다중태그·정렬키·방문수·리뷰 정렬 2026-06-29 10:44:23 +09:00
user-signup-schema.md Merge PR #1 (docs/project-analysis): ATP 문서 체계 + 프로젝트 종합 분석 2026-06-17 10:00:39 +09:00