--- phase: implementation agent: implementation-advisor agent_version: 1 generated_at: 2026-06-29T10:30:00+09:00 --- # 파일 소유권 맵 — W3-1 게임 태그 + 검색 확장 설계: `.atp/work-session/20260623-104307/implementation/W3-1-tags-search-design.md` concern 해소안(orchestrator 확정): TAG_MANAGE 미도입(CONTENT_MODERATE 재사용) / GameTagsMapper AND·OR 분리 / existsRecentView sinceTs 인자 제거 / GameData nullable 박스필드. ## Wave 1 (병렬, 파일 충돌 0 — 신규 인터페이스·POJO·스키마·JSP) | 파일 | 담당 worker | worker id | 변경 | U-* | 의존 | |---|---|---|---|---|---| | docs/tag-ddl.sql | code-writer | w-001 | create | U-TAG-SCHEMA | - | | db/schema.sql | code-writer | w-001 | modify | U-TAG-SCHEMA | - | | data/TagData.java | code-writer | w-002 | create | U-TAG-DOMAIN | - | | mapper/TagsMapper.java | code-writer | w-002 | create | U-TAG-DOMAIN | TagData | | mapper/GameTagsMapper.java | code-writer | w-002 | create | U-TAG-DOMAIN | TagData | | mapper/JamTagsMapper.java | code-writer | w-002 | create | U-TAG-DOMAIN | TagData | | mapper/GameViewsMapper.java | code-writer | w-003 | create | U-VIEW | - | | controller/api/GameController.java | code-writer | w-003 | modify | U-VIEW | GameViewsMapper | | util/TagSanitizer.java | code-writer | w-004 | create | U-TAG-ADMIN | - | | resources/banned-words.txt | code-writer | w-004 | create | U-TAG-ADMIN | - | | webapp/WEB-INF/views/index.jsp | code-writer | w-005 | modify | U-JSP | - | ## Wave 2 (Wave1 인터페이스 타입 확정 후 — 컨트롤러·검색쿼리) | 파일 | 담당 worker | worker id | 변경 | U-* | 의존 | |---|---|---|---|---|---| | data/GameData.java | code-writer | w-006 | modify | U-SEARCH | - | | data/SearchCriteria.java | code-writer | w-006 | create | U-SEARCH | - | | mapper/GamesMapper.java | code-writer | w-006 | modify | U-SEARCH | SearchCriteria, GameData | | controller/SearchController.java | code-writer | w-006 | create | U-SEARCH | GamesMapper, GameTagsMapper, TagsMapper, SearchCriteria, TagSanitizer | | controller/TagController.java | code-writer | w-007 | create | U-TAG-ADMIN | TagsMapper, GameTagsMapper, TagSanitizer, PermissionGate, CsrfTokens | ## Wave 3 (테스트 — 구현 산출물) | 파일 | 담당 worker | worker id | 변경 | 의존 | |---|---|---|---|---| | test/.../BibimbapApplicationTests.java | code-writer | w-008 | modify | 신규 매퍼 4종 @MockBean | | test/.../util/TagSanitizerTest.java | code-writer | w-008 | create | TagSanitizer | | test/.../controller/TagControllerTest.java | code-writer | w-009 | create | TagController | | test/.../controller/SearchControllerTest.java | code-writer | w-009 | create | SearchController | ## 불변식 점검 - 동일 파일 1 worker only: 충족(GameData=w-006, GamesMapper=w-006, GameController=w-003 단일). - 의존 있는 파일 병렬 금지: Wave 분리(인터페이스→소비자→테스트). Wave 내 파일은 상호 독립 또는 동일 worker. - 스키마: U-TAG-SCHEMA 격리(code-writer; migration-writer 는 ORM 마이그레이션 전용이나 본 프로젝트는 raw SQL DDL → code-writer 로 처리, DB 적용 금지).