---
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 적용 금지).
</content>
</invoke>
