용어 정의 (도메인 사전)¶
FillMap 프로젝트에서 사용하는 도메인 용어의 공식 정의. 코드·문서·기획·발표에서 동일하게 사용한다.
범위 명시: - ✅ MVP 확정 용어 — 지금 즉시 강제 통일 - 🛠 백엔드 전용 개념 — 사용자에게 노출되지 않음 - 🚧 Phase 2+ 미확정 — 향후 논의 필요
✅ MVP 확정 용어¶
격자 (Grid)¶
정의: 국토 평면 좌표계 EPSG:5179 위에서 100m 간격으로 나눈 하나의 셀. 전국 어디서나 100m × 100m다 (투영 오차 수준 제외 — 아래 "격자 계산 규칙" 참조).
- 5179 평면 상
(grid_y, grid_x)인덱스로 유일하게 식별 grid_id문자열 포맷:"{grid_y}_{grid_x}"(예: 강남역"19443_9582") — 개념/코드 레벨의 논리 식별자- 물리적으로는 항상 존재하는 논리적 개념
- DB 저장 여부는 별개 → grids 테이블에 row가 있음 = "누군가 영상을 올린 격자"
DB 저장 키 = grid_id 컬럼 (MSG-78 확정): 실제 스키마(V1__init.sql)에서 격자 키는
grids.grid_id VARCHAR(20)(PK)이며 videos · user_grids · sponsor_ads가 이 컬럼을 FK로 참조한다.
저장되는 값은 표준 geohash가 아니라 자체 100×100m 양자화 키 "{grid_y}_{grid_x}"다 — 논리 식별자와
저장 키가 동일하다. 인코딩 규칙의 단일 진실 원천은 코드의 GridEncoder / GridConstants
(com.msg.fillmap.grid)이며, geohash라는 명칭은 코드 심볼·DB 컬럼에 새로 쓰지 않는다.
점령 (Occupation)¶
정의: 사용자가 특정 격자에 첫 영상을 업로드한 상태.
user_grids테이블에 (user_id, grid_id) row가 생성됨 (복합 PK(user_id, grid_id)— V1, 별도 UNIQUE 제약 없음)- 도감에 격자가 색으로 표시되는 시점 = 점령 시점
first_collected_at컬럼에 최초 점령 시각 기록- MVP에는 개인 점령 하나만 존재. (전역/친구 점령 개념은 백엔드 내부용)
방문 (Visit)¶
정의: 사용자가 특정 격자에 영상을 업로드한 이벤트 하나.
- DB 테이블:
videos(1 row = 1 방문) - 첫 방문 = 점령:
user_gridsrow가 생성되는 방문 - 재방문: 이미 점령한 격자에 다시 업로드하는 방문 →
video_count++,last_uploaded_at갱신
영상 (Video)¶
정의: 방문 시 업로드되는 짧은 영상 하나.
- 길이: 자유 길이, 최대 30초 제한 (초기엔 "5초 고정"이었으나 자유 길이·30초 상한으로 변경)
- 입력 소스 2종:
- 갤러리 선택 업로드 — 기존 영상 선택 (위치 제약 없음, 메타데이터 좌표로 격자 매핑)
- 카메라 촬영 업로드 — 앱 내 현장 촬영, 사용자가 실제로 그 격자에 있을 때만 가능 (GPS 검증)
- 업로드 후 수정·삭제 자유 (삭제 시 점령 롤백 규칙 적용)
친구 공개 (FRIENDS)¶
정의: 영상 공개범위(videos.visibility) 3값 중 하나 — 소유자 본인과 ACCEPTED 친구(방향 무관) 만
재생할 수 있는 상태. 나머지 두 값은 PUBLIC(전원 공개)·PRIVATE(본인만).
- 지정: 업로드 확정·공개범위 변경에서 선택 (미지정 업로드는 PUBLIC)
- 비친구가 재생을 요청하면 PRIVATE 비소유자와 완전히 같은 403 "비공개 영상입니다" — 별도 에러코드 없이 실패 응답이 동일하다. 재생 URL은 발급되지 않는다
- 판정은 요청 시점 실시간 — 친구 삭제 즉시 다음 요청부터 막힌다 (캐시·비정규화 없음)
- 전역 노출 경로(격자 대표 영상·전역 목록·탐색 집계)는 PUBLIC 한정이라 FRIENDS 영상이 잡히지 않는다. 친구에게 보여주는 노출 경로는 친구 격자 영상 목록(친구 도감 레이어에서 친구 격자 선택 시 그 친구의 PUBLIC+FRIENDS 영상만) — 2026-08-04 확정, MSG-187에서 구현
도감 (Collection)¶
정의: 사용자가 점령한 격자들의 집합.
- DB 테이블:
user_grids - UI 표시: 지도 위에 자기 색상(
users.grid_color)으로 채워진 격자들 - MVP는 개인 도감만 존재
도감 색상 (grid_color)¶
정의: 사용자가 점령한 격자를 지도에 표시할 때 쓰는 색상.
- DB 컬럼:
users.grid_color(ENUM: BLUE, GREEN, PURPLE, ORANGE, PINK, YELLOW, RED, TEAL) - 기본값: BLUE — 계정 생성 시 부여되고, 사용자가 색을 바꾸는 기능은 MVP 범위 밖이다 (SRS FR-USER-05, 변경 API 없음)
- ~~Phase 2+에서 친구 색상 구분에 사용 예정~~ → 친구 도감 레이어는 단일색으로 확정 (2026-08-04)이라 친구 격자 색칠에는 미사용 — 내 도감 표시·프로필 노출 용도
점령 롤백 (Occupation Rollback)¶
정의: 영상 삭제 시 점령이 취소되는 규칙.
- 특정 격자의 사용자 영상이 모두 삭제되면
user_gridsrow도 삭제 video_count가 0이 되는 시점- 시간 제한 없음 — 업로드 후 얼마가 지났든 삭제하면 즉시 롤백된다 (2026-07-16 확정). 교체도 마찬가지로 언제든 가능하다. glossary "영상"의 "업로드 후 수정·삭제 자유"와 일관
미점령 격자 (Unclaimed Grid)¶
정의: 사용자가 아직 영상을 올리지 않은 격자.
- UI 정책: 격자망(점선 테두리)은 상시 표시, 채움색 없음 — 지도는 항상 뷰포트 전체에 점선 격자망을 깔고, 점령한 격자만 채움색이 올라간다 (2026-08-04 확정, 피그마 ver8 지도 홈 노드 14094:3981 실측. 기존 "표시하지 않음·격자망 오버레이 없음" 정책 대체)
- 격자망은 FE-local 렌더 — 격자 계산 규칙 산술로 클라이언트가 그린다. 서버 API는 지금처럼 점령 격자만 응답에 담는다 (미점령 미포함 — MSG-73/90 계약 불변)
친구 도감 레이어 (Friend Collection Layer)¶
정의: 특정 친구 1명이 점령한 격자를 지도 뷰포트에서 보는 화면/기능 (2026-08-04 확정, MSG-187).
- 대상·진입: 친구 목록/프로필에서 "도감 보기" — 항상 특정 친구 1명의 레이어만 (전체 친구 합산은 Phase 2+)
- 색상: 친구 격자는 단일색 통일 — 색값은 FE/디자인 몫, 서버는 색 정보를 내려주지 않는다
(친구별
grid_color미사용) - 겹침: 나와 친구가 같은 격자를 점령했으면 친구 레이어 열람 중에는 친구 색 우선 (FE 그리기 순서로 해결)
- 미점령: 격자망 상시 표시 정책 그대로 — 친구가 안 채운 격자는 점선 테두리만
- 영상 노출: 친구 격자 선택 시 그 친구의 PUBLIC+FRIENDS 영상 목록 (PRIVATE 절대 제외). 판정은 요청 시점 실시간 — 친구 삭제 즉시 레이어·목록 접근이 거부된다
- 비친구의 조회는 관계·계정 존재를 은닉하는 단일 실패 응답 (MSG-186 프로필과 동일 정책)
스트릭 (Streak)¶
정의: 매일 영상을 업로드한 날이 이어진 연속 일수. 재방문 업로드도 인정 — 신규 격자 점령 불요 (2026-07-29 확정).
- 일 경계 = KST(Asia/Seoul) 자정 고정 — 사용자별 타임존 없음(users에 타임존 컬럼 없음, MVP 한국 대상). DB TIMESTAMP는 UTC 저장이므로 판정 시 KST 변환 후 날짜 비교
- DB 테이블:
streaks(1 user = 1 row, current_count · max_count · last_recorded_date) - 갱신: 업로드 이벤트 시 (MSG-200), 뱃지 "꾸준함" 축(STREAK_DAYS)이 소비 (MSG-239)
- 끊김 유예(freeze)는 미확정 — MVP 미도입 제안
구역 (Zone)¶
정의: "서면"·"홍대입구"·"황리단길"처럼 행정동으로 표현되지 않는 유명 통칭(상권·명소)의 범위를 나타내는 격자 정수 사각형 (MSG-234/259).
- DB 테이블:
zones—zone_key(자연키, 예seomyeon) ·min/max_grid_y/x정수 사각형 ·priority· 남북 26행(≈2.6km) 캡 CHECK. 격자별 저장 없음 — 소속 판정은 정수 부등식 산술 - 등재 기준 = 유명하거나 특별한 통칭 하나 — 지역 제한 없음 (2026-07-31 확정, 초기 데이터는 소진공 공공데이터 부트스트랩 + 통칭 수동 작도 하이브리드)
- 시딩:
seed/zones.json→ 기동 시 멱등 UPSERT (fillmap.zone.seed.enabled, prod/dev 상시 on — MSG-259 D-8) - 사각형끼리 겹치지 않게 관리 (겹침 시
priority DESC → zone_key ASC보험 규칙이 하나로 결정)
표시명 (Display Name)¶
정의: 격자를 사람이 읽는 이름. zone 안이면 "{zone명} {행}-{열}" (행 A=사각형 북단부터, 열 1=서단부터 —
예 "서면 A-14"), zone 밖이면 행정동 이름 폴백(번호 없음), 행정동도 없으면(해상 등) 표시명 없음.
- 계산은 서버 — 격자를 담는 조회 응답 9종에
zoneName·zoneCell필드로 실려 온다 (MSG-341, 2026-08-07 결정 변경 — 기존 FE-local 산술(MSG-234 §D3)을 대체). FE는 조립(zoneName + " " + zoneCell)과 행정동 폴백 표시만 하고, zones 캐시는 검색바 구역 이동(MSG-234 §D6)용으로만 남는다 - 폴백 재료(
regionName)도 서버가 준다 — MSG-341이 "폴백 미제공"으로 남겼던 지도 응답 3종(뷰포트·단일 격자·핫구역)에 MSG-349(2026-08-10)가regionName을 동봉해, 격자를 담는 응답은 어디든 그 응답 하나로 이름 조립이 끝난다. 구역 안 격자에도 항상 실린다 — 위치줄("부산 부산진구 서면")의 시/구가 여기서 나온다(앱 디자인 ver 5 실측). 조립 규칙 한 줄:zoneName ? zoneName+" "+zoneCell : regionName - 코스 포토스팟은 예외로 서버가 조립한다 (MSG-492, 2026-08-27). 코스 미션 응답의 스팟 항목은 문자열
name하나뿐이라 재료 셋을 실을 자리가 없어서, 시더가 적재 시점에 완성된 문자열을 정해mission_grids.name에 저장하고 조회는 통과만 한다. 사다리는 산출물 명소 이름 → 구역 표시명 → 행정동 이름 순이고, 행정동에도 안 걸리면 가장 가까운 행정동 이름을 쓴다 — 위 "행정동도 없으면 표시명 없음" 은 이 경로에 해당하지 않는다(해안 경유 지점이 이름 없이 남는 것을 막기 위해서다). 행정동 이름은 마지막 토큰만 쓴다("부산광역시 사하구 다대2동" → "다대2동"). 이 조립을 다른 화면과 공유하지 않는다 — 지도 응답은 종전대로 재료만 내려준다 - 명명 규칙의 실행형 정본:
src/test/resources/fixtures/zone-naming.json(언어 중립 픽스처, MSG-259 D-4) — MSG-341부터 계산 구현은 서버 한 곳이라 서버 테스트가 분리 기대값(expectedZoneName·expectedZoneCell)으로 검증한다. 클라이언트는 명명 구현이 없어 검증 대상이 아니다
핫구역 (Hot Zone)¶
정의: 최근 48시간 업로드 신호(핫스코어)가 상위 K(50) 안이면서 최소 임계(3) 이상인 격자. 재방문 업로드도 전부 신호로 인정 — 도배 방어 없음 (2026-07-31 확정).
- 신호는 업로드(방문 이벤트)만 — 좋아요는 MSG-275 구현 후 확장 지점
- 저장: Redis Sorted Set 6시간 버킷(
hotzone:{bucketId}), DB 테이블 없음 - 핫스코어는 근사값 — 영상 삭제 시 차감 없음(윈도우 만료로 자연 소멸), Redis 유실 허용
- 진입: 지도 홈 상단 "핫구역" 칩 (2026-07-25 지도 홈 개편 확정)
- 설계 정본:
docs/spec/MSG-233.md— 구현은 MSG-183(집계)·MSG-184(조회) - UI 정책(색상·애니메이션·빈 상태)은 FE·디자인 몫 미확정
이벤트 (Event)¶
정의: 지역축제·팝업스토어를 제외한 큰 행사 카테고리 — 콘서트·메가페스타류 초대형 행사가 들어가는 유형이다 (2026-08-28 확정·작성자 확인, MSG-503). 구 명칭 "행사방" — 원래 행사방으로 시딩하려던 초대형 행사들이 이 유형이 됐고, 사용자가 지도에서 들어가 영상을 올리고 보는 그 공간 (MSG-438~443 구현)의 사용자 대면 명칭도 "이벤트"다. DB·코드 심볼은 처음부터 event라 변경 없음.
- 이벤트는 층이 아니라 유형이다 — "상위는 행사, 하위만 이벤트"로 가르려던 안은 폐기됐다
(2026-08-28 작성자 확인). 등재 v2의 유형 카드 "이벤트"(참여형)가 이 유형이고, 행사 운영자가
모달에서 고르는 승인 이벤트가 곧 이것이다 (웹 ver 14 섹션
15525:8613) - 미션 도메인의
MissionType.EVENT는 다른 뜻이다 — 화면 칩 "축제"에 대응하는 지역축제 미션 유형이라(MSG-363 뱃지 매핑,FestivalMissionSeeder가 이 값으로 시딩) 이 항목의 "이벤트" (지역축제 제외 카테고리)와 반대편을 가리킨다. 위 "코드 심볼은 event"는 행사 도메인 (event_series등) 이야기이고, 미션 코드를 읽을 때 이 정의를 대입하지 않는다 - 미정: 참여형 신청으로 이벤트 아래에 생기는 하위 실체(참여 등록·위치 묶음)를 부르는 이름
- "행사방"은 화면·기획·발표·새 문서에서 더 쓰지 않는다. 기존 문서(PRD·스펙)는 소급 재작성하지 않고 새로 쓰는 문서부터 새 용어를 쓴다 (MSG-484 선례)
도움돼요 (Helpful)¶
정의: 행사 영상 하나에 사용자가 남기는 유일한 반응. 사용자당 1회이고, 이벤트가 아카이브로 넘어가기 전까지(종료 + 30일) 추가·취소할 수 있다 (2026-08-20 정본 전환으로 확정, MSG-441에서 구현. 잠금 시점은 2026-08-21에 종료 정각에서 아카이브 전환으로 번복됐다).
- DB 테이블:
event_video_helpfuls— 복합 PK(video_id, user_id)가 "사용자당 1회"를 보장한다. 추가·취소는 멱등이라 같은 요청을 두 번 보내도 결과가 같다 - 집계는 저장하지 않는다 — 도움돼요 수는 조회 시점에 세는 실측값이다(행사 위치의 영상 수와 같은 방식). 목록 카드의 하트 수와 상세의 도움돼요 수는 같은 데이터라 서로 어긋나지 않는다
- 행사 영상 전용이다. 일반 영상의 좋아요(
likes테이블, V1 DDL만 있고 아직 미구현 — 위 핫구역 항목의 "좋아요는 MSG-275 구현 후 확장 지점")와는 다른 테이블·다른 개념이므로 섞어 쓰지 않는다. 행사 영상에 좋아요를, 일반 영상에 도움돼요를 붙이지 않는다 - 잠금: 아카이브 전환 정각부터(종료 + 30일) 추가·취소가 막힌다(기존 수는 그대로 조회된다 — 아카이브된 이벤트는 읽기 기록). 영상 업로드가 닫히는 시점과 같아 두 규칙이 한 정각에서 함께 닫힌다. 판정은 회차 상태의 파생이라 영상에 저장하지 않는다
- 사용자에게 "공감"·"좋아요"로 부르지 않는다 — 화면·기획·발표 모두 "도움돼요"로 통일한다
🛠 백엔드 전용 개념 (사용자 노출 X)¶
전역 격자 등록 (Global Grid Registration)¶
정의: grids 테이블에 격자 row가 생성되는 것.
- Lazy insert의 트리거 지점
- 어떤 사용자의 첫 영상 업로드 시 자동 발생
- 이 개념을 사용자 UI/기획서에서 절대 노출하지 않음
- 코드/설계 논의에서만 사용
Lazy Insert¶
정의: 격자를 미리 저장하지 않고, 실제로 영상이 올라오는 순간에만 grids 테이블에 등록하는 전략.
뱃지 은퇴 (Badge Retirement)¶
정의: 뱃지를 신규 지급 후보에서만 빼고 이미 획득한 이력은 그대로 두는 상태 (2026-08-10 MSG-363).
- DB 컬럼:
badges.retired_at(시각이 있으면 은퇴, NULL이면 현역) - 지급 판정과 임박 알림 후보에서 빠지고, 목록에는 획득자에게만 보인다. 못 받게 된 뱃지를 미획득자에게 회색 칸으로 남기지 않기 위해서다
- 행을 지우지 않는 이유:
user_badges가 FK로 참조하고 있고, 지우면 사용자가 받은 뱃지를 뺏는 결과가 되어 뱃지 비회수 원칙과 충돌한다 - 첫 적용 사례는 합산 미션 뱃지 3종(MISSION_1·5·10)이다
- 사용자에게 "은퇴"라는 말을 노출하지 않는다 (코드·설계 논의 전용)
격자 계산 규칙 (Grid Encoding Rule)¶
정의: 좌표를 격자 ID로 변환하는 수학 규칙 (2026-08-08 MSG-347에서 개정).
- 위경도(WGS84)를 EPSG:5179 미터 좌표
(x, y)로 변환한다. gridX = floor(x / 100),gridY = floor(y / 100)— 경계는 반열림 구간[n·100m, (n+1)·100m)이라 경계선 위 좌표는 정확히 한 셀에만 속한다.-
grid_id = "{gridY}_{gridX}". -
셀 크기 상수
CELL_SIZE_METERS = 100 - 좌표계 정의는 proj4 문자열 하나가 계약이다 —
GridConstants.CRS_DEF_EPSG5179. BE(Proj4J)· FE(proj4js)·이행 SQL(ST_Transform)이 글자 단위로 같은 문자열을 써야 경계 근처 셀이 어긋나지 않는다. 정합성 검증 자료는src/test/resources/fixtures/grid-epsg5179-samples.json(전국 200건).
전국 어디서나 100m다. 5179는 미터 단위 평면이라 100으로 나누면 100m 셀이 정확히 성립한다.
- 지상 실거리는 축척계수(0.9996) 때문에 한 변이 100.0m에서 수 cm 벗어난다 (실측: 서울 100.038m ·
부산 100.015m · 제주 100.030m). 지역별로 1~5% 달랐던 구 방식과 달리 전국이 균일하다.
- 대신 셀은 위경도 지도 위에서 자오선 수렴만큼 살짝 기울어져 보인다 — 셀 경계를 위경도로 표현하려면
꼭짓점 4점이 모두 필요하다(남서·북동 2점으로 복원 불가).
- 구 규칙(GRID_LAT_STEP = 0.0009, GRID_LNG_STEP = 0.00115)의 정당한 잔존은 "구 값을 새 값으로 바꾸는" 용도 세 곳뿐이다. src/에 두 곳(V28 이행 SQL의 구 셀 중심 복원, 이행 통합 테스트의 구 체계 시드 생성), scripts/zones-draft/requantize-zones-5179.py 한 곳(구 인덱스가 입력인 역산 도구). 그 외 src/에 다시 등장하면 위반이다. 레포의 이력 자산(scripts/zones-draft/의 구 작도 파이프라인, load-test/seed-hotzone.sh, scripts/bench-msg236.sql, docs/explainers/MSG-64-flow.html)에는 구 상수가 작성 시점 기록으로 남아 있다. 실행할 일이 생기면 그때 새 규칙으로 갱신이 필요하다.
🚧 Phase 2+ 미확정 (지금 결정 X)¶
이 항목들은 MVP 배포 후 사용자 반응 데이터를 보고 결정한다.
~~친구 도감 (Friend Collection)~~ → MVP 편입 (2026-08-04)¶
- 위 "✅ MVP 확정 용어"의 친구 도감 레이어 항목 참조 — 미확정 3건(색·겹침·미점령) 전부 확정
(단일색 · 친구 색 우선 · 격자망 상시 표시 동일). 정본
docs/prd/MSG-187-prd.md
전체 도감 (Public Collection)¶
- 전체 공개 지도에서 격자 표시 정책 (실루엣? 히트맵?)
- 격자 밀도가 낮은 지역의 UX
- 프라이버시 — 부분 확정 (2026-08-04): 전역 노출 영상 카드에 작성자 닉네임을 표시한다 (디자인 ver 9 지도 홈 카테고리 패널 확정 반영 — 기존 "작성자 식별 정보 비노출" 방침 폐기. 전역 영상 DTO의 닉네임 필드는 MSG-371이 추가 완료). 격자 표시 정책·저밀도 UX는 계속 미확정
~~핫구역 (Hot Zone)~~ → MVP 편입 (2026-07-31)¶
- 위 "✅ MVP 확정 용어"의 핫구역 항목 참조 — MSG-233 설계 확정으로 편입 (2026-07-24 MVP 범위 확대 논의의 이행)
스폰서 격자 (Sponsor Grid)¶
- 광고주가 입찰한 격자
- 미점령 상태에서도 노출할지?
- 아이콘 vs 색상 표시 방식
~~스트릭 (Streak)~~ → MVP 편입 (2026-07-29)¶
- 위 "✅ MVP 확정 용어"의 스트릭 항목 참조 — 뱃지 MVP(MSG-239) 꾸준함 축 편입으로 확정
수집률 (Progress Rate)¶
- 지역별 점령 격자 / 전체 격자 비율
- "강남구 25% 수집" 표현
- 뱃지 조건과 연동
행사 등재 (Event Submission) — 기능 미확정, 용어만 확정 (2026-08-27)¶
- 외부에서 행사를 등록해 관리자 심사를 받는 흐름. 웹 디자인 ver 13 섹션
15284:3761("지자체 시안 - 행사 등재")에 콘솔 시안 11장이 있고 기능 자체는 PRD 전 단계다. 시안이 열린 판단으로 남긴 3건(승인 행사 노출 방식 · 승인 후 일정 수정 정책 · 위치당 영역 크기 상한)이 미확정이고, 이 흐름은docs/prd/event-room.md의 "운영자용 행사 등록 화면은 만들지 않는다" 결정을 뒤집는 방향이라 확정 시 정본 PRD 갱신이 따라와야 한다 - 행사를 등록하는 외부 주체는 "행사 운영자"다. 지자체는 행사 운영자의 한 종류이지 전체가 아니다 — 사설 팝업 운영사·축제 대행사도 같은 콘솔을 쓴다. 신청 폼의 "주최 기관" 필드가 가리키는 대상과 같다
- "행사"를 떼고 "운영자"라고만 쓰지 않는다. 맨 "운영자"는 레포에서 이미 필맵 쪽 사람을 가리킨다
(
docs/prd/event-room-location-videos.md:436"운영자가 행사 위치 영역과 대표 격자를 등록하는 어드민 화면",:438"영상 신고 및 운영자 삭제"). 두 말이 한 화면에 같이 나올 수 있으므로 외부 주체는 언제나 두 단어를 붙여 쓰고, 필맵 쪽은 사용자 대면 문구에서 운영팀, 심사·계정 발급 주체로는 관리자로 부른다 - 서버 역할값
users.role = USER | ORG | ADMIN의ORG는 지자체 중립이라 그대로 쓴다
자주 헷갈리는 개념¶
| 개념 A | 개념 B | 차이 |
|---|---|---|
| 격자 | grids row | 격자는 논리적(계산 가능), grids row는 실제 저장 |
| 점령 | 방문 | 점령은 상태(1회 발생), 방문은 이벤트(N회 반복) |
| 도감 | 수집 | 도감은 결과(집합), 수집은 행위 |
| 점령 롤백 | 영상 삭제 | 삭제는 사용자 액션, 롤백은 자동 조건 (video_count=0) |
| 도움돼요 | 좋아요 | 도움돼요는 행사 영상 전용(event_video_helpfuls, 구현됨), 좋아요는 일반 영상(likes, DDL만 있고 미구현) |
| 행사 운영자 | 운영자 | 행사 운영자는 행사를 등록하는 외부 주체(지자체·팝업 운영사), 맨 "운영자"는 필맵 쪽 사람(운영팀·관리자). "행사"를 떼면 뜻이 반대편으로 넘어간다 |
| 행사 | 이벤트 | 행사는 행사 운영자가 등재하는 대상 전반(지역축제·팝업·이벤트), 이벤트는 그중 한 유형(지역축제·팝업을 제외한 큰 행사 카테고리, 구 행사방)이자 사용자가 들어가 영상을 올리는 공간의 명칭 |
사용 규칙¶
코드에서¶
- ✅
user_grids조회 → "개인 점령 격자 조회" - ✅ 변수명:
isOccupied,occupiedGrids,myGrids - ❌
owned,conquered— 소유권/정복 뉘앙스 지양
UI에서¶
- ✅ "이 격자를 채워보세요"
- ✅ "성수 카페 격자 수집됨"
- ✅ "내 도감 · 15개 격자"
- ❌ "점령" — 정복 뉘앙스, 기획 톤 안 맞음
- ❌ "정복" — 게임화 톤 과함
- ✅ "행사 운영자 콘솔" — 행사를 등록하는 외부 주체의 화면
- ❌ "지자체 콘솔" — 지자체는 행사 운영자의 한 종류일 뿐
- ❌ "운영자 콘솔" — "행사"를 떼면 필맵 운영팀 화면으로 읽힌다
- ✅ "이벤트" — 큰 행사 카테고리이자 그 참여 공간(구 행사방)
- ❌ "행사방" — 2026-08-28 폐기, 새 화면·문서에서 쓰지 않는다
발표에서¶
- ✅ "위치 기반 짧은 영상(최대 30초) 도감"
- ✅ "사용자가 방문한 100m 격자를 자기 색으로 채우는 서비스"
- ✅ "MVP는 개인 도감에 집중, Phase 2에서 친구·전체 확장"
신규 용어 추가 시¶
이 문서를 단일 진실 원천(single source of truth) 로 관리한다.
- 새 용어 도입 시 이 문서에 정의 먼저 추가 → PR 리뷰
- Phase 2+ 열림 항목이 확정되면 위 섹션에서 확정 섹션으로 이동
- 코드/UI/발표에서 이 문서 표현 강제
정책 결정 이력:
- 2026-07-05: MVP는 개인 도감만 · 미점령 격자 표시 X · 친구/전체는 Phase 2+로 유예
- 2026-07-16: 영상 교체·삭제에 24시간 제한 없음 — 언제든 가능, 삭제 시 즉시 점령 롤백.
기존 "삭제 24시간 규칙"과 "24시간 이후 미확정 🚧"은 폐기
- 2026-07-29: 스트릭 MVP 편입 — 인정 이벤트는 "아무 업로드(재방문 포함)", 뱃지 MVP(MSG-239)
꾸준함 축(STREAK_DAYS 3·7·30일) 포함. 기존 "매일 새 격자 점령" 정의(grid-system.md) 폐기
- 2026-07-31: 핫구역 MVP 편입·설계 확정 — 신호는 업로드만(재방문 포함, 도배 방어 없음),
48h 윈도우·상위 K(50)·최소 임계(3), Redis Sorted Set 6h 버킷. 정본 docs/spec/MSG-233.md
- 2026-08-03: 친구 공개(FRIENDS) 편입 — 영상 공개범위 3값째. 비친구 거부는 PRIVATE와 동일한 403
(신규 에러코드 없음), 판정은 요청 시점 실시간. 목록 노출은 비목표(MSG-187로 이월). 정본 docs/spec/MSG-285.md
- 2026-08-04: 친구 도감 레이어 확정 + 미점령 격자 정책 정정 — 친구 레이어는 특정 1명·단일색·
친구 색 우선·친구 격자 영상 목록(PUBLIC+FRIENDS). 미점령 격자는 "미표시"가 아니라 격자망 상시
표시(피그마 ver8 실측 — 07-05 정책 대체, 서버 계약은 불변). 그룹·초대 링크·코드 재발급은
미도입/유예 → MSG-188 범위 소멸 종결. 정본 docs/prd/MSG-187-prd.md
- 2026-08-04: 전역 노출 영상 카드에 작성자 닉네임 표시 — 디자인 ver 9 ↔ API 전수 갭 검토의
결정 2(성민 확정). 기존 "작성자 식별 정보 비노출" 방침(전역 영상 DTO 주석 명문) 폐기.
DTO 닉네임 필드는 MSG-371이 추가 완료(대표·전역 목록·재생 3종, 도감 색상은 여전히 비노출)
- 2026-08-07: 표시명 서버 계산 전환(MSG-341) — 격자 조회 응답 9종에 zoneName·zoneCell 추가(업로드
확정·재생 응답엔 regionName도). FE-local 산술 결정(MSG-234 §D3) 폐기, 명명 규칙·픽스처 정본은 불변.
발단은 FE의 "조립만 하고 규칙은 갖지 않게" 요청(MSG-325). 정본 docs/spec/MSG-341.md
- 2026-08-08: 격자 계산 규칙 EPSG:5179 전환(MSG-347) — 위경도 등간격 근사(0.0009°/0.00115°)를
폐기하고 5179 미터 평면에서 100m로 나눈다. grid_id 포맷과 API 계약은 그대로이고 값이 전면 교체되며,
기존 데이터는 V28 마이그레이션이 원본 좌표에서 재계산한다. zone 사각형도 새 인덱스로 재산출했다.
정본 docs/spec/MSG-347.md
- 2026-08-10: 지도 응답 3종에 행정동 이름 동봉(MSG-349) — MSG-341이 "폴백 미제공"으로 남겼던
뷰포트·단일 격자·핫구역 응답에 regionName을 추가. 구역 밖이 다수(구역 48개, dev 시드 109칸 중
90칸 밖)라 이름을 얻으려면 칸마다 추가 호출이 필요했던 구멍을 닫았다. 구역 안 격자에도 항상 실린다
(디자인 위치줄의 시/구 재료). 명명 규칙 자체(폴백 번호 없음 등)는 불변. 정본 docs/spec/MSG-349.md
- 2026-08-10: 미션 뱃지 종류별 재편(MSG-363). 미션 뱃지를 축제·코스·팝업 세 종류로 갈라 종류마다
1·3·10개 임계값으로 따로 지급한다("{종류} 입문·단골·마스터"). 종류가 다른 미션은 서로의 진행에
합산되지 않고, 화면에 대응 칩이 없는 AREA·THEME·CONTINUOUS 유형은 어느 뱃지에도 집계되지 않는다.
기존 합산 뱃지 3종(MISSION_1·5·10)은 은퇴해 신규 지급이 끊겼고, 이미 획득한 사용자에게는
목록과 대표 뱃지에 그대로 남는다(비회수 원칙). 도입 시점에 이미 조건을 충족한 사용자에게는 소급
지급했다. 같이 논의된 뱃지 그림은 파일 형식과 정적 에셋 버킷이 미확정이라 이번 범위에서 빠졌다.
정본 docs/prd/MSG-363-prd.md · docs/spec/MSG-363.md
- 2026-08-21: 도움돼요 등재 — 2026-08-20 행사방 정본 전환으로 구 행사방 PRD의 "공감 없음" 결정이
폐기되고, 도움돼요가 행사 영상의 유일한 반응으로 확정됐다. 사용자당 1회이고, 집계는 저장 없이 조회
시점 실측이며, 잠긴 뒤에도 기존 수는 계속 조회된다. 일반 영상의 좋아요(likes 테이블 — V1 DDL만
있고 미구현)와는 다른 개념이라 섞어 쓰지 않는다. 용어집 등재는 2026-08-21 사용자 승인.
정본 docs/prd/event-room-location-videos.md · docs/spec/MSG-441.md
- 2026-08-21: 댓글·도움돼요 잠금 시점 번복 — 잠금이 행사 종료 정각에서 아카이브 전환 정각
(종료 + 30일)으로 옮겨갔다. 유예 기간은 "행사 다녀와서 나중에 올리기"를 위해 둔 구간인데 그 영상이
처음부터 아무도 반응할 수 없는 상태로 올라가면 유예를 둔 목적과 결과가 서로 깎이기 때문이고, 기존
근거였던 "종료 = 기록 확정"은 "아카이브 전환 = 기록 확정"으로 옮겨갔다. 이로써 영상 업로드 창과
댓글·도움돼요 창이 시작 ~ 종료 + 30일로 정렬돼 한 정각에서 함께 닫힌다. 조회는 어느 상태에서도
막지 않는다는 규칙은 그대로다. 팀원 K 확정(MSG-441 구현 중), 반영 정본
docs/prd/event-room-location-videos.md §4.2 · docs/spec/MSG-441.md
- 2026-08-27: 코스 포토스팟 표시 이름 서버 조립(MSG-492) — 코스 미션의 경유 지점이 화면에 "이름 없는
경유 지점"으로 뜨던 것을 고쳤다. 산출물이 이미 갖고 있던 명소 이름 417개를 파서가 버리고 있었고,
나머지는 화면이 좌표를 역지오코딩해 동 이름을 얻다가 바다에서 빈 값을 받고 있었다. 시더가 적재
시점에 최종 문자열을 정해 저장하고 조회는 통과만 한다 — 조회 경로에 쿼리가 늘지 않는다. 최근접
행정동 폴백을 이 경로에만 새로 도입했고(거리 상한 없음), 격자 귀속 라벨(grids.region_code)은
건드리지 않았다 — 그쪽은 동별 수집률의 분모라 파급이 달라 MSG-493 으로 분리했다. 정본
docs/prd/MSG-492-prd.md · docs/spec/MSG-492.md
- 2026-08-27: 행사 등재 주체는 "행사 운영자"로 통일 — 웹 ver 13 "지자체 시안 - 행사 등재"
(15284:3761)의 대상자를 지자체에서 행사를 여는 주체 전반으로 넓히면서 화면 용어를 정리했다.
지자체는 그중 한 종류가 된다. 대안으로 "주최자"를 검토했는데, 맨 "운영자"가 이미 필맵 쪽 사람을
가리키고 있어(정본 PRD 2곳, 시안 주석 3곳) 겹칠 여지가 있었기 때문이다. 그럼에도 "행사 운영자"를
고른 것은 신청 화면을 보는 사람이 자기를 부르는 말과 가장 가깝기 때문이고, 겹침은 "행사"를 떼지
않는 규칙으로 막는다. 계정은 관리자 오프라인 수동 발급을 유지하기로 해 role=ORG·provider=LOCAL
구조는 그대로다. 기능 자체는 PRD 전 단계라 용어만 확정했다. 팀원 K 확정
- 2026-08-28: "행사방"을 "이벤트"로 대체(MSG-503) — 구 행사방의 사용자 대면 명칭이 "이벤트"가
됐고, 정의는 작성자 확인으로 보강됐다: 이벤트는 지역축제·팝업을 제외한 큰 행사 카테고리(콘서트·
메가페스타류)로, 등재 v2 유형 카드 "이벤트"(참여형)가 이 유형이다. 티켓 본문의 "상위는 행사, 하위만
이벤트" 예시는 같은 날 폐기됐다 — 이벤트는 층이 아니라 유형이다. 참여형 신청으로 이벤트 아래 생기는
하위 실체의 이름은 미정으로 남았다. DB·패키지는 처음부터 event라 코드 변경은 없고, 서버 문구는 에러
메시지·시드에 "행사방"이 없어(grep 실측) Swagger 문서 설명만 함께 정리했다. 기존 문서(PRD·스펙)는
소급 재작성하지 않는다(MSG-484 선례). 팀원 K 확정