로브 (Lovv) 트러블슈팅 문서

문서 성격: 보조 Markdown

대표 문서: ../11_deployment_ops.md

문서 버전: v0.14

문서 상태: 초안 (Draft)

작성일: 2026-06-12

작성자: llm팀

기준 문서: ../../04_database_design/04_database_design.md, ../../04_database_design/supplemental/neptune_alternative.md, ../../07_api_spec/07_api_spec.md, ../../08_data_preprocessing/supplemental/korea_data_preprocessing_result_report.md, ../../08_data_preprocessing/supplemental/s3_vector_index_plan.md, ../../99_pptx/01_midterm_presentation/01_midterm_presentation.md

문서 목적: 프로젝트 진행 중 발생한 주요 이슈를 원인, 판단, 조치, 재발 방지 기준으로 정리해 발표와 운영 문서에서 함께 사용할 수 있게 한다.

---

1. 문서 개요

이 문서는 로브(Lovv) 프로젝트에서 발생했거나 현재 운영 기준상 주의해야 하는 이슈를 트러블슈팅 관점으로 정리한다.

정리 기준은 다음과 같다.

기준설명
증상겉으로 드러난 문제 또는 의사결정이 필요했던 지점
원인기술적·운영적 원인
판단왜 해당 방향으로 결정했는지
조치실제로 취한 대응 또는 현재 적용할 대응
재발 방지같은 문제가 반복되지 않도록 남기는 기준

2. 요약

ID이슈현재 상태핵심 조치
TS-01Neptune 도입 범위 판단Lambda 대체 구현 예정그래프DB 직접 도입 대신 DynamoDB 인접 리스트, 사전계산 후보 테이블, Lambda 인메모리 그래프로 유사 기능 구현
TS-02S3 vector index 계약 정합성진행 기준 확정Titan V2 1024/cosine, 3분절 vector ID, GSI3 export 기준 확정
TS-03PDF 산출물 생성·검증대응 완료xelatex 2회 실행, PDF/TeX 산출물과 pdf/AGENT.md 목록 동기화
TS-04Cognito / Social Login 책임 경계 충돌기준 확정Google/Kakao 직접 검증 API는 legacy로 내리고 Cognito bridge API를 신설
TS-05식당 데이터 취득 범위 조정기준 확정식당 데이터 직접 취득 대신 Kakao Map API 조회로 대체
TS-06일본 데이터 취득 포기기준 확정CC BY 4.0 기준으로 처리하려던 일본 데이터 후보를 세부 규약 제한으로 취득 중단

4. 발표용 트러블슈팅 요약 문구

중간발표에서 한 장으로 설명할 때는 다음 구조로 축약한다.

이슈: 그래프DB가 필요해 보였지만 PoC 관계는 대부분 1~2-hop이었다.
        판단: Neptune은 지금 넣으면 비용과 운영 복잡도가 먼저 커진다.
        대응: 그래프DB 직접 도입 대신 Lambda로 유사 관계 탐색 기능을 구현한다.
        구현: DynamoDB 인접 리스트, 사전계산 후보 테이블, Lambda 인메모리 그래프를 조합한다.
        기준: 3-hop 이상 관계 탐색이나 실시간 그래프 쓰기가 병목이 되면 Neptune으로 승격한다.

5. 변경 이력

버전날짜작성자변경 내용
v0.142026-07-09llm팀TS-02~TS-05에 공식 문서 및 로컬 대표 문서 기반 출처·근거 섹션 추가
v0.132026-07-09llm팀TS-06에 CC BY 4.0, PDL 1.0 및 관련 출처별 라이센스·규약 원문 링크를 첨부
v0.122026-07-09llm팀TS-06 요약을 CC BY 4.0 처리 후보가 세부 규약 제한으로 중단된 흐름으로 정정
v0.112026-07-09llm팀TS-06 요약에서 일본 데이터 전체를 오픈 라이센스로 일반화하지 않도록 표현 정정
v0.102026-07-09llm팀TS-06에 일본 정부·공공 운영 출처의 이용조건 조사 결과를 추가
v0.92026-07-09llm팀TS-06에 JATO 공식 사이트와 회원규약 조사 결과를 보강
v0.82026-07-09llm팀일본 데이터 라이센스와 데이터 규약 불일치로 취득을 포기한 사례를 TS-06으로 추가
v0.72026-07-09llm팀개인/작업 방식 이슈였던 기존 TS-03, TS-05를 제거하고 후속 TS 항목을 TS-03~TS-05로 재번호 매김
v0.62026-07-09llm팀개인 로컬 환경 이슈였던 기존 KR 전처리 적재 기준 항목을 제거하고 후속 TS 항목을 재번호 매김
v0.52026-07-09llm팀TS 상세 내용을 하위 문서로 분리하고 본 문서를 인덱스 중심으로 재정리
v0.42026-07-09llm팀식당 데이터 취득 범위 조정 이슈를 추가하고 하위 상세 문서 연결
v0.32026-06-12llm팀그래프DB 직접 도입 대신 Lambda 기반 관계 탐색 보조 기능 구현 예정으로 TS-01 방향 명확화
v0.22026-06-12llm팀Cognito/Social Login 책임 경계, bridge session API, claims 검증, SAM route, logout, role scope, API 명세 반영 기준 추가
v0.12026-06-12llm팀Neptune 도입 판단, KR 전처리, S3 vector index, HTML/PDF 산출물, 발표 HTML 검증 이슈를 트러블슈팅 문서로 초안화

---

6. 상세 트러블슈팅

TS-01 Neptune 도입 범위 판단

문서 성격: 트러블슈팅 하위 Markdown

상위 문서: ../troubleshooting.md

문서 버전: v0.2

문서 상태: 초안 (Draft)

작성일: 2026-07-09

작성자: llm팀

문서 목적: TS-01 이슈의 문제, 원인, 판단, 조치, 재발 방지 기준을 본 문서에서 분리해 상세 관리한다.

---

1. 요약

항목내용
문제추천 후보 확장에 도시, 축제, 테마, 장소 관계가 필요해 Neptune 도입을 검토했다.
조사 결론현재 Lovv의 관계 탐색은 대부분 1~2-hop, 읽기 위주, 배치 재생성 가능한 공용 콘텐츠 관계라 전용 그래프DB를 바로 둘 필요성이 낮다. 비용 측면에서도 Neptune은 최소 NCU 기반 고정비와 storage/I/O 비용 축이 추가되어 초기 예산 대비 부담이 크다.
결정PoC와 Production 1차에서는 Neptune을 직접 도입하지 않고 Lambda 관계 탐색 보조 기능으로 대체한다.
대체 구성DynamoDB 인접 리스트, 사전계산 후보 테이블, Lambda 인메모리 그래프, S3 vector metadata filter를 조합한다.
승격 조건3-hop 이상 임의 경로 탐색, 대규모 실시간 그래프 쓰기, 복잡한 그래프 알고리즘이 실제 병목으로 확인될 때 Neptune을 재검토한다.

2. 증상

추천 시스템에서 도시, 테마, 축제, 인접 도시 관계를 다루기 때문에 그래프DB인 Neptune을 도입할 수 있다는 의견이 있었다.

그러나 중간발표 PoC 범위에서는 대부분의 관계 탐색이 1~2-hop 수준이었다. 이 단계에서 Neptune을 바로 넣으면 기능 검증보다 운영 비용과 복잡도가 먼저 증가할 위험이 있었다.

3. 조사 범위

이번 조사는 다음 질문에 답하는 방식으로 진행했다.

질문확인한 기준
Neptune이 필요한 질의인가?현재 질의가 깊은 임의 경로 탐색인지, 단순 후보 확장인지 확인
현재 데이터 성격은 무엇인가?실시간 쓰기 그래프인지, S3 Raw/DynamoDB 기준으로 배치 재생성 가능한 관계 인덱스인지 확인
비용 부담이 합리적인가?초기 예산과 Neptune 최소 운영 형상의 고정비를 비교
대체 구현이 가능한가?DynamoDB 인접 리스트, 사전계산 후보, Lambda 인메모리 그래프, S3 vector metadata filter로 대체 가능한지 확인
언제 승격할 것인가?Neptune 도입을 다시 판단할 측정 기준 정의

4. 원인

항목내용
관계 깊이PoC의 주요 질의는 도시-테마, 도시-축제, 도시-장소 수준이다.
비용Neptune Serverless는 최소 시작 용량이 1 NCU이며, 저장소와 I/O도 별도 과금된다. 초기 저트래픽에서는 고정비 비율이 커진다.
운영 복잡도DynamoDB, S3 vector, Lambda 외에 별도 그래프 저장소 운영이 추가된다.
재생성성현재 관계 데이터는 원본 저장소보다 파생 인덱스로 두는 편이 안전하다.
질의 패턴추천 후보 확장은 대부분 필터링, 1-hop 조회, 제한된 2-hop 확장, 재랭킹으로 끝난다.
원본성관계 탐색 결과는 원장이 아니라 DynamoDB 정규화 문서와 S3 Raw 원본에서 재생성 가능한 파생 데이터다.

5. AWS 서비스 조사 결과

항목조사 결과Lovv 판단
Neptune 성격Neptune은 property graph와 RDF graph를 지원하고 Gremlin, openCypher, SPARQL 질의에 적합한 관리형 그래프DB다.깊은 관계 그래프를 운영할 때는 적합하지만, 현재 후보 확장에는 과하다.
Neptune Serverless 용량Serverless는 NCU 기준으로 과금되며 시작 용량은 1 NCU다. 공식 문서상 최소 NCU도 1.0이다.scale-to-zero로 볼 수 없으므로 초기 저트래픽 PoC의 비용 절감 수단으로 보기 어렵다.
Neptune 비용 구조데이터베이스 인스턴스/용량 외에 storage, I/O, backup, data transfer 비용을 고려해야 한다.기존 DynamoDB, S3 vector, Lambda에 비해 별도 운영 비용 축이 추가된다.
S3 vector 역할S3 vector는 embedding similarity search와 metadata filtering을 제공한다.의미 검색과 1차 metadata filter는 S3 vector로 처리하고, 그래프 관계 확정은 별도 관계 탐색 보조에서 수행한다.
S3 vector 한계S3 vector는 유사도 검색과 metadata filter에 강하지만 그래프 경로 탐색 엔진은 아니다.S3 vector 결과를 단독 확정하지 않고 DynamoDB 정규화 문서와 Lambda 관계 탐색으로 검증한다.

6. 현재 Lovv 질의 패턴 분석

질의/기능그래프 관점현재 대체 방식
도시별 축제 후보City -> Festival 1-hopDynamoDB 정규화 문서, 축제 검증 캐시
도시별 장소 후보City -> Place 1-hopDynamoDB 조회, S3 vector metadata filter
테마/계절 적합성City/Place -> Theme, SeasonalFitS3 vector metadata의 theme_tags, recommended_months, DynamoDB 속성
인접 도시 후보City -> NearCity 1-hop좌표 기반 Haversine 거리 배치 사전계산
후보 확장·재랭킹제한된 2-hop사전계산 후보 테이블 또는 Lambda 인메모리 그래프
자연어 유사 장소 검색그래프 질의 아님S3 vector similarity search

현재 범위에서는 임의 길이 경로 탐색보다, 이미 정의된 관계 타입을 기준으로 후보를 좁히고 재랭킹하는 일이 중심이다.

7. 대체 아키텍처

PoC와 Production 1차에서는 Neptune을 직접 도입하지 않는다. 현재 방향은 그래프DB와 유사한 관계 탐색 기능을 Lambda로 구현하는 것이다.

현재는 다음 대체 방식으로 충분하다.

대체 방식적용 범위
DynamoDB 인접 리스트도메인 item 단위 빠른 조회와 서비스 운영 조회
사전계산 후보 테이블추천 후보 확장과 반복 질의 비용 절감
Lambda 인메모리 그래프요청 시 소규모 관계 탐색, 2-hop 확장, 그래프 재랭킹 보조
S3 vector index자연어·분위기 기반 후보 검색

7.1 관계 데이터 예시

관계저장 방식재생성 기준
City -> ThemeDynamoDB 인접 리스트 또는 S3 vector metadata수집 정규화 문서
City -> FestivalDynamoDB 정규화 문서, 검증 캐시축제 원천 데이터, S3 Raw
City -> PlaceDynamoDB 정규화 문서관광지/장소 원천 데이터
City -> NearCity배치 사전계산 edge도시 좌표
Candidate -> Candidate사전계산 후보 테이블scoring batch 결과

7.2 요청 처리 흐름

사용자 조건
        ↓
        S3 vector similarity search + metadata filter
        ↓
        DynamoDB 정규화 문서 재조회
        ↓
        Lambda 관계 탐색 보조로 도시·축제·테마·장소 관계 확장
        ↓
        사전계산 후보 또는 인메모리 그래프 재랭킹
        ↓
        최종 후보 반환

8. 판단

현재 단계에서는 Neptune을 도입하지 않는 판단이 타당하다.

판단 기준결론
기능 적합성현재 요구는 대부분 1~2-hop 후보 확장이라 DynamoDB/Lambda/S3 vector 조합으로 구현 가능하다.
비용 효율Neptune은 최소 용량과 storage/I/O 비용 축이 추가되어 초기 예산에서 고정비 부담이 크다.
운영 단순성기존 저장소와 Lambda를 재사용하면 배포, 모니터링, 장애 대응 표면을 줄일 수 있다.
데이터 원본성그래프는 원장이 아니라 재생성 가능한 파생 관계 인덱스이므로 전용 그래프DB의 내구 원장 역할이 필요하지 않다.
확장성추후 3-hop 이상 경로 탐색이나 실시간 그래프 쓰기가 병목이 되면 Neptune으로 승격할 수 있다.

9. 조치

10. 승격 기준

다음 조건 중 하나가 실제 요구사항으로 확인되면 Neptune 도입을 재검토한다.

승격 조건설명
3-hop 이상 임의 경로 탐색사용자-도시-테마-축제-인접도시처럼 경로가 깊어짐
대규모 실시간 그래프 쓰기사용자 행동, co-visit, 선호 관계가 지속적으로 누적됨
복잡한 그래프 알고리즘PageRank류 중요도, 커뮤니티 탐지, 경로 추천이 필요해짐
DynamoDB/Lambda 대체 구현 한계인접 리스트 조회, 사전계산 후보, Lambda 인메모리 그래프 방식이 운영상 병목이 됨

추가로 다음 지표를 관찰한다.

지표재검토 신호
요청당 관계 탐색 depth평균 2-hop을 넘어 3-hop 이상이 상시 필요
후보 확장 latencyLambda 관계 탐색과 DynamoDB 반복 조회가 목표 latency를 지속 초과
관계 edge 수배치 사전계산 후보 테이블이 관리하기 어려운 수준으로 증가
그래프 업데이트 빈도관계 쓰기가 실시간 사용자 행동 기반으로 지속 발생
알고리즘 요구최단경로, 중심성, 커뮤니티 탐지 등 그래프 전용 알고리즘이 서비스 핵심 기능이 됨

11. 조사 결론

TS-01의 결론은 기존과 동일하게 유지한다.

Neptune은 그래프 질의 자체에는 적합한 서비스지만, 현재 Lovv의 PoC/Production 1차 범위에서는 관계 규모와 질의 깊이가 작고, 관계 데이터도 재생성 가능한 파생 인덱스다.

비용 측면에서도 Neptune을 바로 도입하면 최소 NCU 기반 고정비, storage, I/O, backup, data transfer 비용 축이 기존 DynamoDB, S3 vector, Lambda 스택 위에 추가된다. 초기 트래픽과 예산 규모에서는 이 고정비가 기능 검증보다 먼저 부담으로 작용할 가능성이 높다.

따라서 현재는 DynamoDB 인접 리스트, 사전계산 후보 테이블, Lambda 인메모리 그래프, S3 vector metadata filter를 조합해 구현하고, Neptune은 고도화 단계의 승격 옵션으로 둔다.

12. 출처 및 근거

구분근거
로컬 설계docs/04_database_design/supplemental/neptune_alternative.md
로컬 비용 검토docs/04_database_design/supplemental/database_design_retention_neptune_update.md
Agent 검색 계약docs/05_agent_spec/05_agent_spec.md
기술 명세docs/06_technical_spec/06_technical_spec.md
AWS Neptune 공식 문서What Is Amazon Neptune? - Gremlin, openCypher, SPARQL을 지원하는 관리형 그래프DB
AWS Neptune 비용 문서Amazon Neptune pricing - Serverless NCU 과금, 시작 용량 1 NCU, storage/I/O 별도 과금
AWS Neptune Serverless scalingCapacity scaling in a Neptune Serverless DB cluster - 최소 NCU 1.0, 최대 NCU 128.0 기준
AWS S3 Vectors 공식 문서Working with S3 Vectors and vector buckets - embedding similarity search와 metadata filtering 제공
AWS S3 Vectors metadata filterMetadata filtering - similarity 조건과 metadata 조건을 함께 필터링 가능

13. 변경 이력

버전날짜작성자변경 내용
v0.22026-07-09llm팀Neptune 도입 판단의 로컬 설계 근거, AWS 공식 근거, 대체 아키텍처, 승격 지표를 상세화
v0.12026-07-09llm팀본 트러블슈팅 문서에서 TS-01 상세 내용을 하위 문서로 분리

---

TS-02 S3 vector index 계약 정합성

문서 성격: 트러블슈팅 하위 Markdown

상위 문서: ../troubleshooting.md

문서 버전: v0.2

문서 상태: 초안 (Draft)

작성일: 2026-07-09

작성자: llm팀

문서 목적: TS-02 이슈의 문제, 원인, 판단, 조치, 재발 방지 기준을 본 문서에서 분리해 상세 관리한다.

---

1. 증상

S3 vector index 생성 기준을 정리하는 과정에서 city_id, vector ID, embedding dimension, metadata filter 기준이 초기 설계와 실제 적재 데이터 사이에서 어긋날 수 있었다.

2. 원인

항목초기 위험
city_id과거 설계는 KR-GB-ANDONG 계열을 가정했지만 실제 데이터는 KR-Andong 형식
Vector ID#chunk# 리터럴 포함 4분절과 3분절 형식이 혼재 가능
Embeddingdimension과 metric은 index 생성 후 변경이 어려움
Metadatafilterable 2KB 제한을 넘길 수 있음

3. 조치

4. 재발 방지

5. 출처 및 근거

출처확인 내용TS-02 반영
AWS S3 Vectors - Working with S3 Vectors and vector bucketsS3 Vectors는 vector bucket/index에 embedding을 저장하고 similarity query와 metadata filtering을 제공한다.S3 vector index를 원본 저장소가 아니라 검색 인덱스로 두고, DynamoDB/S3 Raw 재조회 키를 함께 보존한다.
AWS S3 Vectors - Metadata filteringfilterable metadata는 similarity query에서 필터로 사용할 수 있고, 필터 가능한 metadata 크기 제한을 고려해야 한다.metadata filter key를 사전에 제한하고, 큰 설명/본문은 filterable metadata가 아니라 vector text 또는 원본 재조회 대상으로 분리한다.
Amazon Bedrock - Titan Text Embeddings modelsamazon.titan-embed-text-v2:0은 텍스트 검색과 유사도에 사용할 수 있는 embedding 모델이며 1024차원 vector를 제공한다.Titan Text Embeddings V2, 1024 dimension, cosine 기준을 index 계약으로 고정한다.
data_preprocessing_plan.mdV2 기준에서 TourKoreaDomainDataV2, kr-tour-domain-v2, vector 대상 entity, 7,606 unique vector 기준을 정리한다.문서의 city_id, entity type, visitor statistics 제외, 원본 재조회 계약과 동기화한다.
s3_vector_index_plan.mdKR 전처리 산출물 기반 S3 vector index 구축안과 vector ID, embedding, metadata 기준을 정리한다.TS-02의 vector ID 3분절, Titan V2 1024/cosine, GSI3 export 기준의 직접 근거로 사용한다.

6. 변경 이력

버전날짜작성자변경 내용
v0.22026-07-09llm팀S3 Vectors, metadata filtering, Titan Text Embeddings V2 공식 문서와 로컬 전처리 기준 문서 근거 추가
v0.12026-07-09llm팀S3 vector index 계약 정합성 이슈 초안 작성

---

TS-03 PDF 산출물 생성·검증

문서 성격: 트러블슈팅 하위 Markdown

상위 문서: ../troubleshooting.md

문서 버전: v0.2

문서 상태: 초안 (Draft)

작성일: 2026-07-09

작성자: llm팀

문서 목적: TS-03 이슈의 문제, 원인, 판단, 조치, 재발 방지 기준을 본 문서에서 분리해 상세 관리한다.

---

1. 증상

새 결과보고서 Markdown을 추가했지만 PDF/TeX 산출물 또는 pdf/AGENT.md 목록이 함께 갱신되지 않으면 배포용 문서와 원본 문서가 어긋난다.

2. 조치

새 PDF 문서를 추가할 때는 다음을 함께 갱신한다.

항목경로 예시
원본 Markdowndocs/08_data_preprocessing/supplemental/korea_data_preprocessing_result_report.md
TeX 산출물pdf/korea_data_preprocessing_result_report.tex
PDF 산출물pdf/korea_data_preprocessing_result_report.pdf
산출물 목록pdf/AGENT.md

PDF는 다음처럼 2회 빌드한다.

cd pdf
        xelatex -interaction=nonstopmode -halt-on-error korea_data_preprocessing_result_report.tex
        xelatex -interaction=nonstopmode -halt-on-error korea_data_preprocessing_result_report.tex

3. 재발 방지

4. 출처 및 근거

출처확인 내용TS-03 반영
LaTeX2e reference - Command line optionsnonstopmode는 오류가 발생해도 가능한 범위에서 처리를 계속하며, halt-on-error는 첫 오류에서 중단하도록 하는 실행 옵션이다.자동 빌드에서는 -interaction=nonstopmode -halt-on-error 조합을 사용해 로그를 남기되 실패를 명확히 중단한다.
TeX Live GuideTeX Live 실행과 오류 처리 옵션은 로그 파일과 명령행 실행 결과로 확인할 수 있다.PDF 생성 실패 시 .log를 확인하고, 성공 산출물만 목록에 반영한다.
pdf/AGENT.mdpdf/ 디렉터리의 관리 대상 산출물 목록과 생성물 관리 기준을 제공한다.새 PDF/TeX 산출물을 추가할 때 pdf/AGENT.md 목록을 함께 갱신한다.
korea_data_preprocessing_result_report.mdPDF로 변환되는 원본 Markdown 결과보고서다.PDF 본문 의미 변경은 먼저 원본 Markdown에서 수행하고, 이후 TeX/PDF 산출물을 갱신한다.

5. 변경 이력

버전날짜작성자변경 내용
v0.22026-07-09llm팀XeLaTeX 실행 옵션, TeX Live 오류 처리, 로컬 PDF 산출물 관리 기준 근거 추가
v0.12026-07-09llm팀PDF 산출물 생성·검증 이슈 초안 작성

---

TS-04 Cognito / Social Login 책임 경계 충돌

문서 성격: 트러블슈팅 하위 Markdown

상위 문서: ../troubleshooting.md

문서 버전: v0.2

문서 상태: 초안 (Draft)

작성일: 2026-07-09

작성자: llm팀

문서 목적: TS-04 이슈의 문제, 원인, 판단, 조치, 재발 방지 기준을 본 문서에서 분리해 상세 관리한다.

---

1. 배경

초기 Lovv Auth 구조는 프론트가 Google/Kakao에서 받은 provider token을 백엔드로 전달하고, 백엔드가 직접 검증하는 방식이었다.

POST /api/v1/auth/google
        POST /api/v1/auth/kakao
        ↓
        Lovv backend가 Google/Kakao provider token 검증
        ↓
        Lovv user 조회/생성
        ↓
        Lovv access token 발급
        ↓
        refresh session 저장

하지만 Cognito를 도입하면 Google/Kakao 인증은 Cognito Hosted UI 또는 OIDC IdP가 담당한다. 백엔드는 provider token을 직접 검증하는 대신 Cognito가 검증한 JWT claims 또는 API Gateway Authorizer claims를 기준으로 Lovv 사용자와 세션 응답을 구성해야 한다.

2. 문제 1: 기존 Social Login API와 Cognito 흐름 충돌

항목기존 방식Cognito 방식
Google/Kakao 인증Lovv 백엔드가 provider token 직접 검증Cognito가 Hosted UI/OIDC IdP로 처리
백엔드 입력provider access tokenCognito JWT claims
백엔드 책임provider 검증 + Lovv token 발급Lovv user/session shape 변환

기존 /api/v1/auth/google, /api/v1/auth/kakao를 그대로 신규 흐름의 중심으로 두면 인증 책임이 Lovv backend와 Cognito 두 군데로 나뉜다.

해결 방향

API상태역할
POST /api/v1/auth/googlelegacy/deprecatedprovider token 직접 검증 방식 보존
POST /api/v1/auth/kakaolegacy/deprecatedprovider token 직접 검증 방식 보존
POST /api/v1/auth/cognito/session신규Cognito claims를 Lovv session 응답으로 변환

3. 문제 2: Cognito 로그인 후 Lovv 세션 shape 필요

Cognito가 인증을 처리해도 프론트는 Lovv 서비스 상태가 필요하다.

프론트가 필요한 값은 다음과 같다.

값용도
user화면 표시와 사용자 식별
preferences온보딩 취향 복구
onboardingCompleted온보딩 진입 여부 결정
roles사용자/운영자/관리자 화면 분기
accessToken 또는 인증 상태인증 API 호출
sessionRestored세션 복구 성공 여부

해결 방향

POST /api/v1/auth/cognito/session은 API Gateway JWT Authorizer가 검증한 Cognito claims를 받아 Lovv user/session shape로 변환한다.

처리 순서:

Cognito JWT Authorizer 검증
        ↓
        sub, email, cognito:groups claims 확인
        ↓
        Lovv user 조회 또는 생성
        ↓
        Lovv 내부 role 정규화
        ↓
        preferences 조회
        ↓
        onboardingCompleted 계산
        ↓
        session response 반환

4. 문제 3: Provider Verifier 재사용 금지

Cognito bridge endpoint에서 기존 Google/Kakao provider verifier를 재사용하면 안 된다. Cognito 흐름에서는 이미 Cognito가 provider 인증을 완료했기 때문이다.

경로verifier 사용
/auth/googleGoogle provider verifier 사용
/auth/kakaoKakao provider verifier 사용
/auth/cognito/sessionprovider verifier 사용 금지. Cognito claims만 매핑

5. 문제 4: Cognito claims 누락 시 500 발생 가능

개발 중 missing claims 테스트에서 401이 아니라 500이 발생할 수 있었다.

원인

Cognito claims 검증보다 repository 초기화가 먼저 실행되면, 인증 정보가 없는 요청인데 DB/repository 초기화 실패가 먼저 드러나 내부 서버 오류처럼 보인다.

해결 방향

상황기대 응답
Cognito claims 없음401 UNAUTHENTICATED
필수 claim 매핑 불가422 AUTH_MAPPING_ERROR 또는 명확한 auth mapping error
DB 초기화 실패claims 검증 이후 500 INTERNAL_ERROR

6. 문제 5: Handler route와 SAM template route 불일치

src/auth/app.py에 /api/v1/auth/cognito/session 처리를 추가해도 template.yaml에 API Gateway route가 없으면 실제 배포 API에서는 접근할 수 없다.

해결 방향

코드 테스트뿐 아니라 template route 테스트를 추가한다.

확인 기준:

확인 항목기준
Handler routesrc/auth/app.py에 /api/v1/auth/cognito/session 처리 존재
SAM routetemplate.yaml의 AuthFunction event에 동일 path 존재
API 명세docs/07_api_spec/07_api_spec.md의 path와 일치
AuthorizerCognito User Pool/JWT Authorizer 연결은 별도 Task로 추적

7. 문제 6: Logout 의미 분리

Cognito 도입 후 logout을 단순히 백엔드 session 삭제로만 설명하면 부족하다. Cognito access token은 JWT이므로 이미 발급된 token은 만료 전까지 유효할 수 있다.

구분설명
Lovv logoutLovv backend session/cookie, 프론트 local service state 정리
Cognito logoutCognito Hosted UI logout URL로 이동해 Hosted UI 세션 종료

백엔드가 Cognito token 자체를 즉시 무효화한다고 표현하지 않는다. 프론트는 필요하면 Cognito logout URL로 redirect한다.

8. 문제 7: Role을 Cognito Group만으로 처리하면 복잡해짐

Lovv Admin에는 일반 사용자 외에도 여러 운영 role이 필요하다.

Role의미
R-USER일반 서비스 이용자
R-ADMIN전체 관리자
R-LOCAL-OPERATOR담당 지역 데이터와 운영 지표 조회
R-DATA-PROVIDER관광지, 축제, 체험 데이터 제안 등록

해결 방향

Cognito Group은 큰 권한 구분만 담당하고, 담당 지역과 provider 소유권 같은 세부 권한은 Lovv DB/backend에서 검증한다.

주의 기준:

9. 문제 8: API 명세 재정리 필요

기존 OpenAPI/API 명세는 custom social login 기준이라 Cognito bridge 흐름을 설명하지 못했다.

반영 기준:

항목반영 내용
신규 경로/api/v1/auth/cognito/session 추가
기존 경로/api/v1/auth/google, /api/v1/auth/kakao legacy/deprecated 처리
보안 스킴cognitoBearerAuth 추가
세션 응답/auth/me, /auth/session, /auth/logout 응답 shape 정리
PreferencesselectedThemeIds alias 추가
Role enumR-USER, R-ADMIN, R-LOCAL-OPERATOR, R-DATA-PROVIDER

10. 최종 정리

Cognito 도입의 핵심은 Google/Kakao 로그인을 백엔드가 직접 처리하는 구조에서 벗어나, Cognito가 인증을 담당하고 Lovv 백엔드는 Cognito claims를 서비스 사용자/session shape로 변환하는 것이다.

현재 방향:

11. 출처 및 근거

출처확인 내용TS-04 반영
Amazon Cognito - User pool managed loginCognito managed login은 사용자 인증과 JWT 기반 인증 흐름을 제공한다.Google/Kakao 인증 책임은 Cognito Hosted UI/OIDC로 이동하고, Lovv backend는 검증된 claims를 서비스 session shape로 변환한다.
Amazon Cognito - Using social identity providers with a user poolCognito user pool은 social IdP와 연동해 외부 provider 인증 결과를 user pool 사용자와 연결한다.기존 /auth/google, /auth/kakao provider token 직접 검증 API는 legacy로 두고, 신규 흐름은 Cognito bridge로 분리한다.
Amazon Cognito - Understanding user pool JSON web tokensID token과 access token은 사용자 식별, scope, claims 정보를 포함한다.백엔드는 provider token이 아니라 Cognito JWT claims의 sub, email, cognito:groups를 기준으로 사용자/session을 구성한다.
API Gateway - HTTP API JWT authorizerAPI Gateway JWT authorizer는 Cognito 같은 IdP가 발급한 JWT를 검증하고 API 접근을 제어할 수 있다./auth/cognito/session은 API Gateway/JWT Authorizer가 검증한 claims를 전제로 처리한다.
07_api_spec.md/auth/cognito/session, legacy social login, role enum, logout 책임 경계, Cognito bearer auth 기준을 정의한다.TS-04의 API 경로, 응답 shape, role 처리, logout 의미 분리 기준과 동기화한다.
01_requirements.md최종 권한은 Lovv 서비스 DB의 활성 역할 할당을 기준으로 판단하고 Cognito Group은 보조 신호로만 사용한다고 정의한다.Cognito Group만으로 관리자 권한을 확정하지 않고 Lovv DB scope와 조합해 검증한다.

12. 변경 이력

버전날짜작성자변경 내용
v0.22026-07-09llm팀Cognito managed login, social IdP, JWT token, API Gateway JWT authorizer 공식 문서와 로컬 API/요구사항 근거 추가
v0.12026-07-09llm팀Cognito / Social Login 책임 경계 충돌 이슈 초안 작성

---

TS-05 식당 데이터 취득 범위 조정

문서 성격: 트러블슈팅 하위 Markdown

상위 문서: ../troubleshooting.md

문서 버전: v0.2

문서 상태: 초안 (Draft)

작성일: 2026-07-09

작성자: llm팀

문서 목적: 경북·강원 관광지와 축제 데이터 취득 과정에서 식당 데이터를 직접 취득하지 않고 Kakao Map API로 대체한 판단 근거를 정리한다.

---

1. 요약

항목내용
문제경북·강원 관광지·축제 데이터 취득 시 식당 데이터도 함께 취득해 실제로 사용했으나, 의미 있는 결과가 나오지 않았고 S3 vector 변환 작업 시간이 증가했다.
원인식당 데이터 수량이 방대하고, DynamoDB 저장·인덱스·조회 비용, DB 운영 문제, S3 vector 변환·인덱싱 부담이 증가할 수 있었다.
해결 과정식당 데이터는 직접 취득 대상에서 제외하고, Kakao Map API를 통해 사용자 맥락에 맞게 조회하는 방식으로 전환했다.
결과프로젝트 보유 데이터는 관광지·축제 중심으로 유지하고, 식당 데이터는 외부 API 연동 대상으로 정리했다.

2. 문제

경북·강원 관광지와 축제 데이터를 취득하는 과정에서 식당 데이터도 함께 취득 대상으로 검토했고, 당시에는 식당 데이터를 실제로 취득해 사용하였다.

그러나 취득한 식당 데이터를 적용했을 때 추천·검색 품질 측면에서 의미 있는 결과가 나오지 않았다. 또한 식당 데이터는 관광지·축제 데이터보다 수량이 많아 S3 vector로 변환하는 작업 시간이 증가하는 문제가 발생했다.

이 상태로 식당 데이터를 계속 직접 보유하면 수집, 정제, S3 vector 변환, 갱신, 품질 검증 부담이 프로젝트 범위를 넘어설 수 있었다.

3. 원인

원인내용
데이터 규모식당 데이터는 관광지나 축제보다 후보 수가 많아 전체 취득량과 전처리 비용이 커진다.
DynamoDB 비용 증가식당 데이터를 모두 DynamoDB에 적재하면 저장 용량, GSI, 조회 요청량이 함께 증가해 DB 운영 비용이 커질 수 있다.
DB 운영 문제대량 식당 데이터가 누적되면 파티션 키 설계, GSI 관리, 조회 패턴 관리, 데이터 갱신 주기 관리가 복잡해져 핵심 관광지·축제 데이터 운영에도 영향을 줄 수 있다.
S3 vector 변환 부담식당 데이터까지 S3 vector로 변환하면 embedding 생성 대상이 크게 늘어나 작업 시간이 증가하고, S3 vector index 생성·검증·재생성 비용도 함께 커진다.
품질 기준의 주관성식당 후기는 개인 취향, 방문 목적, 동행 유형, 가격 민감도에 따라 평가가 크게 달라진다.
최신성 요구영업 여부, 메뉴, 가격, 평점, 후기 변화가 잦아 정적 데이터로 보관할 경우 빠르게 낡을 수 있다.
서비스 맥락식당 추천은 사용자 위치, 일정, 시간대, 선호도와 결합되어야 의미가 커진다.

4. 해결 과정

5. 결과

식당 데이터는 프로젝트 내부 데이터셋으로 대량 취득하지 않는다.

대신 관광지·축제 데이터는 직접 취득·정제 대상으로 유지하고, 식당 데이터는 Kakao Map API를 통해 필요 시점에 조회하는 외부 API 연동 대상으로 정리한다. 이를 통해 데이터 보유 범위, DynamoDB 운영 비용, S3 vector 변환 부담을 줄이고, 식당 데이터의 최신성과 사용자 취향 반영 가능성을 확보한다.

6. 출처 및 근거

출처확인 내용TS-05 반영
Kakao Developers - Local REST APIKakao Local API는 주소-좌표 변환, 좌표-주소 변환, 키워드 기반 장소 검색 등을 REST API로 제공한다.식당 데이터를 직접 보유하지 않고, 사용자 위치·일정·검색어에 따라 API 조회로 대체한다.
Kakao Developers - Local ConceptsLocal API는 장소 검색, 카테고리 기반 검색, 좌표 기반 주소/행정구역 조회를 제공한다.식당 추천은 정적 데이터셋보다 위치와 맥락 기반 실시간 조회가 적합하다는 판단 근거로 사용한다.
Amazon DynamoDB PricingDynamoDB 비용은 저장 용량, 읽기/쓰기 요청, 용량 모드, 부가 기능 사용에 따라 증가한다.식당 대량 적재는 저장 비용과 요청 비용, GSI 운영 비용을 증가시킬 수 있으므로 직접 취득 범위를 줄인다.
DynamoDB throughput capacityOn-demand mode는 요청 단위 과금이고, provisioned mode는 설정한 처리량 기준으로 운영된다.식당 데이터 조회량이 커질 경우 테이블 처리량과 비용이 핵심 운영 리스크가 된다.
AWS S3 Vectors - Working with S3 VectorsS3 Vectors는 embedding 저장과 similarity query를 제공하며, vector 생성·저장·조회 대상이 늘수록 운영 범위가 커진다.식당 데이터를 S3 vector 변환 대상에서 제외해 embedding 생성 시간과 index 검증 부담을 줄인다.
korea_data_acquisition_plan_updated.md미식·노포 테마는 관광식당 코드로 제한하고 일반 음식점, 카페, 주점 등은 제외하는 수집 기준을 명시한다.식당 전체가 아니라 관광 도메인에 필요한 제한된 범위만 검토하고, 일반 식당은 API 조회 대상으로 분리한다.
data_preprocessing_plan.mdV2 운영 계약에서 restaurant를 활성 entity로 복원하지 않고, vector 생성 대상도 city_metadata, attraction, festival 중심으로 둔다.프로젝트 보유 데이터셋은 관광지·축제 중심으로 유지하고 식당 데이터 직접 적재를 제외한다.

7. 변경 이력

버전날짜작성자변경 내용
v0.22026-07-09llm팀Kakao Local API, DynamoDB 비용/처리량, S3 Vectors, 로컬 취득·전처리 기준 근거 추가
v0.12026-07-09llm팀식당 데이터 취득 범위 조정 이슈 초안 작성

---

TS-06 일본 데이터 취득 포기

문서 성격: 트러블슈팅 하위 Markdown

상위 문서: ../troubleshooting.md

문서 버전: v0.6

문서 상태: 초안 (Draft)

작성일: 2026-07-09

작성자: llm팀

문서 목적: 일본 데이터 취득 검토 과정에서 CC BY 4.0 기준으로 처리하려던 후보가 JATO 및 일본 정부·공공 운영 출처의 세부 규약 확인 과정에서 제한되는 문제를 확인하고, 취득을 포기한 판단 근거를 정리한다.

---

1. 요약

항목내용
문제일본 데이터 후보는 초기 검토에서 CC BY 4.0 기준으로 처리 가능한 것으로 보아 취득 후보에 포함했으나, 본격 취득 전 세부 규약을 확인하면서 실제 저장·가공·재배포·서비스 활용 범위가 제한되는 것을 확인했다.
원인CC BY 4.0 또는 CC BY 호환 조건으로 볼 수 있는 출처라도 별도 데이터 규약이 동일한 범위의 이용 허용을 보장하지 않았다. JATO 회원규약은 협의회 발행 자료·데이터의 무단 게재, 양도, 판매, 공표를 제한했고, 정부·공공 출처도 출처 표기, 제3자 권리, API/외부 DB 조건, 신청·허가 절차를 별도로 확인해야 했다.
해결 과정CC BY 4.0 기준만으로 취득을 진행하지 않고, JATO 공식 사이트, 입회 안내, 회원규약과 일본 정부·공공 데이터 이용조건을 확인한 뒤 취득 리스크를 검토했다.
결과CC BY 4.0 기준으로 일괄 처리하려던 일본 데이터 취득은 중단한다. JATO 자료는 명시적 허가 전까지 Raw 적재, DynamoDB 적재, S3 vector 생성 대상에서 제외하고, 정부·공공 출처도 개별 규약을 충족하는 경우에만 별도 후보로 재검토한다.

2. 문제

일본 데이터는 최초 검토 시 CC BY 4.0 또는 CC BY 4.0과 호환되는 공개 조건으로 처리 가능한 것으로 보고 취득 후보에 포함되었다.

그러나 본격적인 데이터 취득을 진행하기 전에 제한 사항을 확인하는 과정에서 별도 데이터 규약을 검토했고, CC BY 4.0 기준으로만 보면 가능해 보이던 이용 범위가 실제 규약에서는 제한될 수 있음을 확인했다.

이 상태에서 데이터를 취득하면 CC BY 4.0 라이센스 기준만 보고 사용 가능하다고 판단한 내용과, 제공처의 실제 데이터 규약 사이에 충돌이 발생할 수 있었다.

특히 JATO(Japan Adventure Tourism Organization, 일반사단법인 일본 어드벤처 투어리즘 협의회) 자료는 관광 관련 정보로 활용 가능해 보일 수 있으나, 공식 페이지 확인 결과 오픈데이터 제공처라기보다 회원 기반 협의회와 활동 안내 성격이 강했다. 따라서 공개 웹 페이지에 접근 가능하다는 이유만으로 수집, 저장, 벡터화, 서비스 제공에 활용할 수 있다고 판단하기 어렵다.

추가로 일본 정부가 직접 운영하거나 정부 산하·공공기관이 운영하는 관광 관련 출처도 함께 확인했다. 정부 운영 출처는 PDL 1.0 또는 정부 표준 이용규약을 통해 CC BY 4.0 호환 조건으로 볼 수 있는 경우가 있었지만, 모든 정부·공공 사이트가 동일하게 자유 취득 가능한 것은 아니었다. 예를 들어 일본 관광청(JTA) 사이트는 별도 명시가 없는 콘텐츠에 Public Data License 1.0을 적용하지만, JNTO의 Japan Tourism Statistics는 다운로드 과정에서 사용 신청 또는 이용 허가 확인 절차를 요구한다. 따라서 CC BY 4.0 기준으로 내부 처리했더라도, 최종 취득 가능 여부는 출처별 세부 규약을 기준으로 판단해야 한다.

3. 원인

원인내용
CC BY 4.0 기준과 규약의 충돌초기에는 CC BY 4.0 기준으로 처리 가능하다고 보았지만, 별도 데이터 규약은 저장·가공·재배포·API/API 외부 DB 사용에 추가 제한을 포함할 수 있었다.
검토 기준 부족 가능성CC BY 4.0 문구만 보면 취득 가능해 보이나, 데이터셋 제공처의 세부 규약과 신청 절차까지 확인해야 실제 사용 가능 범위를 판단할 수 있었다.
서비스 활용 리스크데이터 규약이 CC BY 4.0 기준보다 보수적으로 해석될 경우, 서비스 데이터로 저장·가공·배포하는 과정에서 문제가 발생할 수 있었다.
사후 정정 비용취득 후 규약 문제가 확인되면 이미 수집한 Raw, 전처리 산출물, DynamoDB 적재 데이터, S3 vector index를 모두 제거하거나 재구성해야 한다.
JATO 자료 재사용 제한JATO 회원규약은 협의회가 발행하는 자료와 데이터의 무단 외부 게재, 제3자 양도·판매, 공표를 제한하고 있어 서비스 데이터셋으로 직접 취득하기 어렵다.
정부·공공 출처별 조건 차이일본 정부·공공 출처는 PDL 1.0, 정부 표준 이용규약, 개별 사이트 정책, API 조건, 신청·허가 절차가 혼재되어 있어 정부 운영 여부만으로 일괄 취득 판단을 할 수 없다.

4. JATO 조사 결과

확인 항목조사 내용판단
조직 성격JATO는 Japan Adventure Tourism Organization의 약칭이며, 공식 사이트는 일본 어드벤처 투어리즘 협의회의 활동, 뉴스, 회원 안내를 제공한다.오픈데이터 카탈로그가 아니라 협의회/회원 기반 정보 제공처로 본다.
회원 기반 제공입회 안내는 JATO 행사 참여, 전문가 지원, 웹사이트 게재, 상호·상표 이용, 후원 명의 사용, 관련 사업 참여를 회원 혜택으로 설명한다.오픈데이터 라이센스가 아니라 회원 권리와 이용 조건의 범위로 해석해야 한다.
상호·상표 사용회원이 JATO 상호와 상표를 이용할 때도 이사회 승인이 필요하다고 규정되어 있다.명칭과 브랜드 활용 자체도 자유 이용으로 보기 어렵다.
자료·데이터 제한회원규약은 협의회가 발행하는 모든 자료와 데이터에 대해 무단으로 다른 매체에 게재하거나 제3자에게 양도·판매·공표할 수 없다고 규정한다.Raw 수집, DynamoDB 적재, S3 vector 생성, 서비스 검색·추천 활용은 명시적 허가 전까지 중단한다.
규약 변경 가능성회원규약은 이사회 결의로 변경될 수 있고, 웹사이트 게시 시점부터 효력을 가진다고 규정한다.취득 시점의 라이센스만 저장해 두는 방식으로는 운영 리스크를 관리하기 어렵다.
최종 판단JATO 자료는 관광 도메인상 유용해 보이지만, 공식 규약 기준으로 재사용 범위가 제한적이다.프로젝트 데이터 취득 대상에서 제외하고, 필요 시 명시적 허가를 받은 뒤 별도 재검토한다.

5. 일본 정부·공공 운영 출처 조사 결과

확인 항목조사 내용판단
디지털청 오픈데이터 기준디지털청은 국가·지방자치단체 등 공공기관 웹사이트와 오픈데이터에 적용할 수 있는 Public Data License 1.0과 정부 표준 이용규약을 안내한다.일본 정부 운영 데이터는 PDL 1.0 또는 CC BY 4.0 호환 여부를 우선 확인한다.
PDL 1.0 허용 범위PDL 1.0은 조건을 준수하면 콘텐츠의 자유 이용, 복제, 공중송신, 번역, 변형과 상업적 이용을 허용하고 CC BY 4.0 호환을 안내한다.CC BY 4.0 기준으로 처리하려면 출처 표기와 편집 사실 표시를 전제로 후보에 둘 수 있다.
PDL 1.0 예외PDL 1.0은 로고, 심볼, 캐릭터 디자인, 별도 이용조건이 명시된 콘텐츠, 제3자 권리가 포함된 콘텐츠, API/외부 DB 연계 콘텐츠에는 추가 확인이 필요하다고 안내한다.정부 사이트라도 로고·사진·지도·외부 DB·API는 자동 수집 대상에서 제외하거나 별도 조건을 확인한다.
일본 관광청(JTA)JTA는 국토교통성의 외국으로 설치된 관광청이며, 사이트 정책에서 별도 명시가 없는 콘텐츠에 PDL 1.0을 적용한다고 안내한다.JTA 콘텐츠는 PDL 1.0 조건을 충족하는 경우 재검토 가능하지만, 출처 표기와 편집 표시, 예외 콘텐츠 확인이 필요하다.
JNTO Japan Tourism StatisticsJNTO 통계 사이트는 CSV/PDF 다운로드 기능을 제공하지만, 다운로드 전 Usage Application Form 제출과 개인/미디어 용도별 절차를 안내한다.JNTO 통계는 정부·공공 성격이 있더라도 신청·허가 절차가 붙는 출처로 보고, 무조건 자동 취득 대상으로 두지 않는다.
e-Stat일본 정부통계 포털 e-Stat은 정부 표준 이용규약 기반이며 CC BY 4.0 호환을 안내하지만, API와 GIS에는 별도 이용조건이 적용된다.통계성 데이터는 후보로 둘 수 있으나 API·GIS·외부 DB 조건을 별도로 확인한 뒤 취득한다.
최종 판단정부 운영 또는 공공기관 운영 출처라도 CC BY 4.0 처리 가능 여부는 출처별 이용조건에 따라 달라진다.일본 데이터는 CC BY 4.0 기준으로 일괄 취득하지 않고, 개별 제한을 검토한 출처만 재검토한다.

6. 해결 과정

7. 결과

일본 데이터는 본격적인 취득을 진행하지 않는다.

CC BY 4.0 또는 CC BY 4.0 호환 조건만으로 취득 여부를 확정하지 않고, 데이터 규약까지 확인한 뒤 취득 포기를 결정했다. 이 판단을 통해 규약 위반 가능성, 사후 데이터 제거 비용, 운영 문서와 실제 데이터 사용 조건의 불일치 위험을 줄였다.

JATO 관련 자료는 명시적 허가 전까지 수집 대상, Raw 적재 대상, DynamoDB 적재 대상, S3 vector 생성 대상에서 제외한다. 향후 일본 관광 데이터를 다시 검토할 경우 JATO 자료를 직접 취득 대상으로 두지 않고, 공공 오픈데이터 포털이나 API 제공 조건이 명확한 출처를 우선 검토한다.

일본 정부·공공 운영 출처는 취득 포기 대상과 재검토 가능 대상을 분리한다. PDL 1.0 또는 CC BY 4.0 호환 조건이 명시되고, 출처 표기·편집 표시·제3자 권리·API 조건을 충족할 수 있는 데이터는 후보로 남긴다. 반대로 신청·허가 절차가 있거나, API/외부 DB의 별도 약관이 있거나, 사진·로고·지도처럼 제3자 권리 확인이 필요한 자료는 CC BY 4.0으로 내부 처리했더라도 자동 수집·벡터화 대상에서 제외한다.

8. 재발 방지

9. 조사 결론

TS-06의 핵심은 일본 데이터 후보를 CC BY 4.0 기준으로 처리하려 했지만, 실제 데이터 규약을 함께 확인했을 때 동일한 범위의 사용 허용으로 보기 어려웠다는 점이다.

JATO 조사 결과, JATO는 Japan Adventure Tourism Organization으로 확인되며 공식 사이트와 입회 안내는 협의회 활동 및 회원 혜택 중심으로 구성되어 있었다. 또한 회원규약상 협의회가 발행하는 자료·데이터는 무단으로 다른 매체에 게재하거나 제3자에게 양도·판매·공표할 수 없으므로, 명시적 허가 없이 프로젝트 데이터셋으로 취득하는 것은 적절하지 않다.

일본 정부·공공 운영 출처까지 포함해 확인한 결과, CC BY 4.0 또는 CC BY 4.0 호환 조건 자체가 취득 가능성을 보장하지는 않는다. 일본 관광청(JTA)처럼 PDL 1.0을 적용하는 출처는 CC BY 4.0 호환 기준으로 재검토 가능성이 있지만, JNTO Japan Tourism Statistics처럼 사용 신청 또는 허가 절차가 붙는 출처도 있다. 또한 e-Stat처럼 정부 표준 이용규약과 CC BY 4.0 호환을 안내하는 경우에도 API·GIS 등 별도 조건이 존재한다.

따라서 일본 데이터는 수집을 강행하지 않고 취득 대상에서 제외하는 것이 맞다. 이후 재검토 시에는 JATO와 같은 협의회 자료는 제외하고, 일본 정부·공공 출처 중 CC BY 4.0 호환 조건이 명확하며 프로젝트의 Raw 저장, DynamoDB 적재, S3 vector 생성, 서비스 제공 범위를 세부 규약상 충족하는 데이터만 별도 후보로 분리한다.

10. 라이센스 원문 첨부

구분라이센스/규약 원문원문상 확인한 핵심TS-06 판단
CC BY 4.0Creative Commons Attribution 4.0 International Deed, Legal Code공유, 재배포, 변형, 상업적 이용이 가능하지만 저작자 표시, 라이센스 링크, 변경 여부 표시가 필요하다. 또한 퍼블리시티권, 개인정보권, 저작인격권 등 다른 권리가 사용을 제한할 수 있다고 안내한다.내부 검토 기준은 CC BY 4.0으로 두되, 실제 취득 전 다른 권리와 세부 규약을 별도 확인해야 한다.
Public Data License 1.0디지털청 Public Data License 1.0공공기관 콘텐츠의 자유 이용, 복제, 공중송신, 번역, 변형과 상업적 이용을 허용하며 CC BY 4.0 호환을 명시한다. 다만 출처 표기, 편집 사실 표시, 제3자 권리, API/외부 DB 조건, 예외 콘텐츠 확인을 요구한다.CC BY 4.0 호환으로 처리할 수 있으나, 프로젝트의 Raw 저장, DynamoDB 적재, S3 vector 생성에는 세부 조건 확인이 필요하다.
일본 관광청(JTA) 사이트 정책About the Copyright Link / Disclaimer별도 명시가 없는 JTA 콘텐츠에는 PDL 1.0이 적용된다. 출처 표기와 편집 사실 표시가 필요하며, 로고·심볼·캐릭터 디자인과 별도 이용조건이 명시된 콘텐츠는 적용 대상에서 제외된다.JTA 콘텐츠는 CC BY 4.0 호환 후보이나, 예외 콘텐츠와 표기 조건을 충족할 수 있는 경우에만 재검토한다.
JNTO Japan Tourism StatisticsJapan Tourism Statistics, FAQ통계 데이터 다운로드 전 Usage Application Form 제출 절차가 있고, 미디어 이용은 상세 목적 제출 후 허가 여부 통지를 받는 구조다. FAQ는 JNTO 자료 사용 시 출처 표기를 요구하고, 미디어의 데이터셋·차트 사용은 Data Usage Application Form 제출을 안내한다.CC BY 4.0 기준만으로 자동 취득하지 않고, 신청·허가 절차가 필요한 제한 출처로 처리한다.
e-Stat 이용약관Portal Site of Official Statistics of Japan Terms of Use정부 표준 이용규약 기반이며 CC BY 4.0 호환을 안내한다. 다만 외부 DB API 조건, 로고 등 제외 콘텐츠, API/GIS 별도 이용조건을 명시한다.통계 데이터는 후보가 될 수 있으나, API/GIS와 외부 DB 조건 확인 전에는 자동 적재하지 않는다.
JATO 회원규약JATO 회원규약 PDF협의회가 발행하는 자료·데이터의 무단 외부 게재, 제3자 양도·판매, 공표를 제한한다. 상호·상표 이용도 이사회 승인이 필요하다.CC BY 4.0 처리 대상이 아니며, 명시적 허가 전까지 취득 대상에서 제외한다.

11. 출처 및 근거

출처확인 내용
Creative Commons Attribution 4.0 International DeedCC BY 4.0의 공유, 변형, 상업적 이용 가능 범위와 저작자 표시, 변경 표시, 추가 권리 제한 가능성 확인
Creative Commons Attribution 4.0 International Legal CodeCC BY 4.0의 법적 원문, 라이센스 부여 범위, 저작자 표시 조건, 데이터베이스 권리, 다른 권리 제한 확인
JATO 공식 사이트일본 어드벤처 투어리즘 협의회의 공식 사이트 및 활동 성격 확인
JATO 입회 안내Japan Adventure Tourism Organization 약칭 JATO, 회원 혜택, 상호·상표 이용 항목 확인
JATO 회원규약 PDF상호·상표 이용 승인, 협의회 발행 자료·데이터 재사용 제한, 규약 변경 가능성 확인
디지털청 Open data공공기관 웹사이트와 오픈데이터에 적용되는 Public Data License 및 정부 표준 이용규약 안내 확인
Public Data License 1.0상업적 이용 허용, 출처 표기, 편집 사실 표시, 제3자 권리, API/외부 DB 조건, 예외 콘텐츠 확인
일본 관광청(JTA) 사이트 정책JTA 콘텐츠의 PDL 1.0 적용, 출처 표기, 편집 표시, 로고·별도 조건 예외 확인
일본 관광청(JTA) 소개JTA가 국토교통성의 외국으로 설치된 정부 관광청임을 확인
JNTO Japan Tourism Statistics다운로드 전 Usage Application Form 및 용도별 절차 확인
JNTO Japan Tourism Statistics FAQJNTO 자료 사용 시 출처 표기와 미디어 이용 시 Data Usage Application Form 제출 안내 확인
e-Stat 이용약관정부 표준 이용규약 기반, CC BY 4.0 호환, API/GIS 별도 조건 확인

12. 변경 이력

버전날짜작성자변경 내용
v0.62026-07-09llm팀CC BY 4.0, PDL 1.0, JTA, JNTO, e-Stat, JATO의 실제 라이센스·규약 원문 링크와 핵심 판단을 첨부
v0.52026-07-09llm팀일본 데이터 후보를 CC BY 4.0 기준으로 처리하려 했으나 세부 규약 제한으로 취득을 중단한 흐름으로 정정
v0.42026-07-09llm팀일본 데이터 후보 전체를 오픈 라이센스로 일반화하지 않도록 JATO, 정부·공공 출처, 신청·허가형 출처를 구분해 표현 정정
v0.32026-07-09llm팀일본 정부·공공 운영 출처(JTA, JNTO, e-Stat, PDL 1.0) 조사 결과를 추가하고 출처별 재검토 기준을 보강
v0.22026-07-09llm팀JATO 공식 사이트, 입회 안내, 회원규약 조사 결과를 반영하고 자료·데이터 재사용 제한 근거를 추가
v0.12026-07-09llm팀일본 데이터 라이센스와 데이터 규약 불일치로 취득을 포기한 사례를 TS-06으로 작성