Skip to main content

JunkBox 공통 마스터 데이터 가이드

1. 문서 목적

  • 이 문서는 JunkBox에서 코드와 메타 정보를 AI와 사람이 동일한 기준으로 조회하고 변경하기 위한 공통 규칙 문서임.
  • Nexus는 참고용으로만 보고, 실제 기준 데이터의 Source of Truth는 JunkBox hub-api와 Hub SQLite /sorc001/junkbox/db/hub.sqlite3 파일로 고정함.
  • AI 코딩 시 코드/메타 마스터데이터를 추정하거나 하드코딩하지 않고, 항상 현재 DB 상태를 조회한 뒤 구현하도록 강제하는 것이 목적임.

2. 적용 범위

  • 공통코드
  • 코드 타입 메타
  • 메타 정보
  • 포털 메뉴
  • 이 문서는 JunkBox 전체 공통 규칙(Global Rule)이며 모든 앱 모듈이 공유함.

3. 핵심 원칙

3.1 Source of Truth 원칙

  • 공통 마스터데이터의 단일 관리 주체는 apps/hub-api임.
  • 실제 저장 원본은 Hub SQLite /sorc001/junkbox/db/hub.sqlite3 파일임.
  • 다른 앱이나 모듈은 공통 마스터데이터를 자체 파일, 상수, 별도 테이블로 중복 소유하지 않음.

3.2 AI 조회 우선 원칙

  • AI는 기능 개발 또는 설정 추가 전에 반드시 현재 마스터데이터를 먼저 조회함.
  • 조회 없이 코드/메타 값을 추정해서 새 값을 만들거나 하드코딩하지 않음.
  • 조회 결과를 현재 컨텍스트로 삼고, 필요한 변경분만 SQL 산출물로 생성함.

3.3 변경 산출물 원칙

  • AI 계정은 조회 전용으로 간주함.
  • AI는 API 또는 DB에 직접 INSERT, UPDATE, DELETE를 수행하지 않음.
  • 마스터데이터 변경은 항상 프로젝트 루트의 ai-outputs/ 폴더에 SQL 또는 Markdown 같은 수동 반영용 산출물로 남김.
  • ai-outputs/는 AI가 직접 적용할 수 없는 DB 마스터데이터, 메타 프롬프트, 운영 설정 변경분을 사용자가 검토해 수동 반영하기 위한 위치임.

3.4 계약 유지 원칙

  • API 응답과 저장소 계약 필드는 snake_case를 유지함.
  • 메타는 meta_key, 공통코드는 code_type_code + common_code 조합을 논리 식별자로 사용함.
  • 사용자가 화면에서 보는 일반 텍스트는 소스 코드에 한국어 문구로 직접 작성함.
  • 공통코드 라벨, 메타 설정값처럼 데이터 자체가 DB 마스터데이터인 값은 현재 코드/메타 구조를 사용함.
  • 텍스트만을 위해 DB 메시지 마스터, 메시지 코드, 메시지 조회 유틸을 새로 만들지 않음.

3.5 AI 개발 지식 캐시와의 경계

  • 공통 마스터데이터의 Source of Truth는 hub-api가 관리하는 Hub SQLite /sorc001/junkbox/db/hub.sqlite3 파일임.
  • 개발 구조 가이드 문서의 Source of Truth는 Git으로 관리되는 vault/docs/junkbox/**/*.md 파일임.
  • vault 스키마의 문서 벡터 테이블은 vault/docs/**/*.md 파일을 AI 검색용으로 색인한 벡터 캐시이며 공통 마스터데이터 원본이 아님.
  • 마스터데이터 변경은 이 문서의 SQL 산출물 원칙을 따름.
  • 개발 문서 변경은 vault/docs/junkbox/**/*.md 파일을 직접 수정한 뒤 Git 검증과 개발 문서 벡터 캐시 동기화 흐름을 따름.
  • AI 에이전트의 표준 마스터데이터 조회 경로는 scripts/fetch_master_data.py가 호출하는 JWT 기반 통합 snapshot API임.
  • 개발 문서 검색은 vault.docs, vault.doc_chunks, vault.doc_embeddings와 개발 문서 검색 스크립트 흐름을 사용함.

4. 현재 소스 기준 확인 결과

4.1 라우터 기준 진입점

  • apps/hub-api/src/junkbox_hub_api/main.py에서 마스터데이터 라우터가 다음 prefix로 등록되어 있음.
  • 공통코드: /api/hub
  • 메타: /api/hub
  • 내부 소비용: /api/internal/master-data
  • AI 에이전트 표준 조회용: /api/v1/master

4.2 현재 공개 조회 엔드포인트

  • 코드 타입 목록 조회: GET /api/hub/codes/types
  • 코드 타입 메타 조회: GET /api/hub/codes/types/{code_type_code}/meta
  • 코드 목록 조회: GET /api/hub/codes/{code_type_code}
  • 코드 전체 조회: GET /api/hub/codes/{code_type_code}/all
  • 메타 목록 조회: GET /api/hub/metas
  • 메타 점진 조회: GET /api/hub/metas/progressive
  • 메타 단건 조회: GET /api/hub/metas/{meta_id}
  • 메타 키 조회: GET /api/hub/metas/by-key/{meta_key}

4.3 현재 내부 소비용 조회 엔드포인트

  • 코드 타입 전체: GET /api/internal/master-data/codes/{code_type_code}
  • 메타 키 조회: GET /api/internal/master-data/metas/by-key/{meta_key}
  • active 포털 메뉴 목록 조회: GET /api/internal/master-data/portal-menus

4.4 AI 에이전트 표준 조회 엔드포인트

  • 표준 통합 snapshot 조회: GET /api/v1/master/all
  • 인증은 Authorization: Bearer {AI_ACCESS_TOKEN} 형식의 JWT를 사용함.
  • JWT payload는 sub=JUNKBOX_AI_AGENT, role=ROLE_AI 구조를 기준으로 함.
  • AI 전용 JWT는 만료 클레임을 포함하지 않는 장기 로컬 자격 증명으로 관리함.
  • ROLE_AI 토큰은 표준 통합 snapshot API에만 사용하며, 일반 api/hub 비즈니스 API 접근은 권한 의존성 단계에서 차단됨.
  • 통합 snapshot 응답은 exported_at, code_types, codes, metas를 하나의 JSON 객체로 반환함.

4.5 현재 인증 구조

  • 현재 api/hub 계열 조회 API는 소스상 require_module("HUB")를 사용하므로 JWT 인증과 HUB 모듈 권한이 필요함.
  • 현재 api/internal/master-data 계열 조회 API는 HUB_API_INTERNAL_TOKEN_HEADER + HUB_API_INTERNAL_TOKEN 검증을 사용함.
  • 현재 api/v1/master 계열 조회 API는 ROLE_AI JWT 검증을 사용함.

4.6 앱 런타임 소비 구조

  • workout-api, raid-api, rename-api, jeevtrapshared-core.masterdata.MasterDataService를 통해 공통 master-data를 소비함.
  • MasterDataServiceHubMasterDataClientTtlAsyncCache를 조합하여 코드 목록, 메타 값, active 포털 메뉴 목록을 조회함.
  • 앱별 favicon 또는 PWA icon slug는 포털 메뉴의 menu_type_code=APP, icon_type_code=APP_ICON, icon_val 조합에서 해석할 수 있음.
  • APP_ICONicon_valshared-ui 앱 아이콘 asset slug이며, 포털 카드 아이콘과 앱 favicon/PWA 아이콘을 같은 관리 값으로 묶음.
  • 소비 앱은 HUB_API_INTERNAL_TOKEN이 설정된 경우 HUB_INTERNAL_BASE_URLhub-api 내부 master-data API를 호출함.
  • HUB_INTERNAL_BASE_URL은 소비 앱 실행 위치에서 접근 가능한 hub-api 주소와 포트를 가리켜야 함.
  • Python 서버 렌더링 문구는 템플릿 또는 라우터 컨텍스트에 한국어 문구로 직접 작성함.
  • React 화면 문구는 컴포넌트 코드에 한국어 문구로 직접 작성함.
  • jeevtrap Discord UI 문구와 slash command 설명은 앱 내부 카탈로그의 한국어 문구를 사용함.
  • 운영 profile에서 HUB_API_INTERNAL_TOKEN이 비어 있으면 내부 master-data 소비는 실패함.
  • APP_PROFILE=local에서 HUB_API_INTERNAL_TOKEN이 비어 있으면 개발 편의용 local store fallback을 사용할 수 있음.

5. AI 전용 조회 규칙

5.1 표준 인증 입력값

  • AI가 마스터데이터를 읽기 위해 사용하는 표준 자격 정보는 scripts/.env.aiAI_ACCESS_TOKEN임.
  • AI_ACCESS_TOKENROLE_AI role을 가진 장기 JWT 값임.
  • FASTAPI_BASE_URLscripts/fetch_master_data.py가 호출할 hub-api base URL임.
  • 로컬 개발 예시는 http://localhost:18001이며, 운영 배포 후 운영 주소를 사용할 수 있음.
  • scripts/.env.ai는 Git 추적 대상이 아닌 작업자별 비밀 설정 파일임.
  • scripts/.env.ai.template은 공유 가능한 설정 키 예시를 제공함.

5.2 실무 적용 해석

  • AI 기본 경로는 scripts/fetch_master_data.py를 통한 GET /api/v1/master/all 통합 snapshot 조회임.
  • AI는 백엔드를 직접 DB로 찌르지 않으며, hub-api를 단일 진실 공급원으로 사용함.
  • 필요 시 아래 보조 경로도 함께 사용할 수 있음.
  • 사람/관리자 컨텍스트: JWT + require_module("HUB")가 걸린 /api/hub/* 조회 API 사용
  • 서비스 간 내부 컨텍스트: HUB_API_INTERNAL_TOKEN_HEADER가 필요한 /api/internal/master-data/* 사용

5.3 AI 조회 기본 순서

  1. 작업 범위가 코드인지, 메타인지 식별함.
  2. uv run python scripts/fetch_master_data.py로 통합 snapshot을 조회함.
  3. snapshot의 code_types, codes, metas를 기준으로 현재 등록 상태를 확인함.
  4. 기존 값 재사용 여부와 신규 키 필요 여부를 판단함.
  5. 소스 구현을 진행함.
  6. 변경이 필요하면 SQL 파일을 생성함.

6. AI 조회 절차 상세

6.1 텍스트와 마스터데이터 경계

  • 화면 문구, 에러 문구, 피드백 문구, Discord interaction label처럼 사용자가 직접 보는 일반 텍스트는 DB 마스터데이터 조회 대상이 아님.
  • 일반 텍스트는 각 화면과 서비스 코드에 한국어 문구로 직접 작성함.
  • 통일이 필요한 표현은 DB 메시지 키가 아니라 공통 UI 가이드와 현재 화면 문구를 기준으로 맞춤.
  • 로그, 콘솔 출력, 주석, 개발자 디버그 문자열은 사용자 UI 텍스트 기준에 포함하지 않음.

6.2 메타 조회

  • 메타 전체 파악은 통합 snapshot의 metas 배열을 우선 사용함.
  • 특정 설정 키 확인도 snapshot의 meta_key 기준 검색을 우선 사용함.
  • 프롬프트 템플릿, 운영 설정 문자열, 장문 설명성 값은 메타 우선 여부를 먼저 검토함.
  • workout 앱의 운동 계획 생성은 메타 프롬프트를 사용하지 않음.
  • workout 앱의 운동 계획 생성은 workout-api 규칙 엔진이 Workout SQLite 운동 기준정보와 운동 기록을 기준으로 수행함.
  • WORKOUT_COACH_INSTRUCTION, WORKOUT_COACH_USER_TEMPLATE 같은 workout 계획 프롬프트 메타는 현재 workout 런타임 계약에 포함되지 않음.
  • EXCHANGE_RATE 메타는 1달러당 원화 환율을 나타내며 meta_val에는 숫자 문자열만 저장하는 전제를 사용함.
  • 화면에서 USD 기준 금액을 원화로 표시해야 할 때는 EXCHANGE_RATE.meta_val을 숫자로 해석해 곱함.

6.3 공통코드 조회

  • 공통코드 조회는 통합 snapshot의 code_typescodes 객체를 우선 사용함.
  • 필요한 타입은 code_types에서 확인하고, 해당 타입의 실제 코드는 codes[code_type_code]에서 읽음.
  • 관리자 화면 기준의 추가 속성 검토가 필요하면 보조적으로 GET /api/hub/codes/types/{code_type_code}/meta를 사용함.
  • AI_MODEL 공통코드는 AI usage log 추정 비용 계산용 기준 데이터임.
  • AI_MODEL.common_codeprovider:model 형식의 full model id와 일치해야 함.
  • AI_MODEL.attribute01은 입력 토큰 USD 단가, AI_MODEL.attribute02는 출력 토큰 USD 단가이며 둘 다 100만 토큰 기준 숫자값으로 관리함.
  • provider와 model을 별도 변수로 관리하는 런타임에서도 단가 매칭은 런타임에서 조합한 provider:model 문자열과 AI_MODEL.common_code를 직접 비교하는 방식임.
  • litellm:openrouter/deepseek/deepseek-v4-flash는 OpenRouter DeepSeek V4 Flash를 LiteLLM proxy 경유로 사용할 때의 AI_MODEL 식별자임.
  • WORKOUT_ROUTINE_MODE 공통코드는 운동 계획 생성 시 사용자가 선택하는 루틴 구분의 소스 오브 트루스임.
  • workout 운동 계획 화면은 WORKOUT_ROUTINE_MODE 활성 공통코드 라벨을 조회해 모바일 하단 선택 시트 option으로 표시하며, 화면 문구 자체는 메시지 마스터데이터로 관리하지 않음.
  • workout 규칙 엔진은 UPPER, LOWER를 명시 계산 대상으로 사용함.
  • WORKOUT_ROUTINE_MODE에 그 밖의 활성 코드가 남아 있으면 화면 option에는 표시될 수 있으나, workout 규칙 엔진은 알 수 없는 루틴 모드를 상체 루틴으로 정규화함.
  • BODY_PART 공통코드는 workout 운동 기준정보와 운동 선택 필터가 사용하는 운동 부위의 소스 오브 트루스임.
  • WORKOUT_STATUS 공통코드는 workout 세트 상태의 소스 오브 트루스임.
  • RUNNING_STEP 공통코드는 workout 러닝 단계 유형의 소스 오브 트루스임.
  • RUNNING_STEP.common_code는 러닝 단계의 activity_type_code로 저장됨.
  • RUNNING_STEP.common_code_name은 러닝 계획 편집 화면, 러닝 실행 화면, 음성 안내 문구의 단계 유형 표시명으로 사용됨.
  • RUNNING_STEP.sort_order_no는 러닝 단계 유형 선택 목록의 정렬 기준임.
  • 러닝 단계 이름은 별도 텍스트 마스터나 SQLite 컬럼으로 관리하지 않으며 RUNNING_STEP 라벨을 기준으로 표시함.
  • workout 운동 종목 기준정보의 런타임 소스 오브 트루스는 workout SQLite tb_workout_exercise_m임.
  • EXERCISE 공통코드는 workout 운동 기준정보 테이블을 초기 bootstrap할 때 사용할 수 있는 이관 source임.
  • EXERCISE.common_code는 bootstrap 시 exercise_code, common_code_nameexercise_name, common_code_descexercise_desc, parent_common_codebody_part_code로 매핑함.
  • EXERCISE.attribute01은 bootstrap 시 weight_step_kg, attribute02min_weight_kg, attribute03max_weight_kg로 매핑함.
  • workout 운동 관리 화면에서 생성·수정되는 운동 기준정보는 hub 공통코드 EXERCISE를 직접 변경하지 않음.
  • DASHBOARD_STOCK_DOMESTIC 공통코드는 hub 대시보드 국내 주식 관심 목록의 소스 오브 트루스임.
  • DASHBOARD_STOCK_OVERSEAS 공통코드는 hub 대시보드 해외 주식 관심 목록의 소스 오브 트루스임.
  • DASHBOARD_FUND 공통코드는 hub 대시보드 펀드 관심 목록의 소스 오브 트루스임.
  • DASHBOARD_STOCK_DOMESTIC, DASHBOARD_STOCK_OVERSEAS, DASHBOARD_FUNDcommon_code는 외부 조회 식별자, common_code_name은 사용자 표시명으로 사용함.
  • DASHBOARD_STOCK_DOMESTIC.attribute01DASHBOARD_STOCK_OVERSEAS.attribute01은 투자 항목 종류이며 STOCK, INDEX 값을 사용함.
  • DASHBOARD_STOCK_DOMESTIC.attribute02, DASHBOARD_STOCK_OVERSEAS.attribute02, DASHBOARD_FUND.attribute02는 상세 URL로 사용함.
  • DASHBOARD_STOCK_DOMESTIC.attribute03, DASHBOARD_STOCK_OVERSEAS.attribute03, DASHBOARD_FUND.attribute01, DASHBOARD_FUND.attribute03은 현재 대시보드 수집 로직에서 사용하지 않음.
  • DASHBOARD_STOCK_DOMESTIC.common_codeattribute01=STOCK이면 네이버 국내 주식 API의 6자리 종목코드, attribute01=INDEX이면 네이버 국내 지수 API의 지수 코드이며 코스피는 KOSPI 형식을 사용함.
  • DASHBOARD_STOCK_OVERSEAS.common_codeattribute01=STOCK이면 네이버 해외 주식 API의 Reuters code이며 NVDA.O, GOOGL.O 같은 형식을 사용하고, attribute01=INDEX이면 네이버 해외 지수 API의 지수 Reuters code이며 S&P 500은 .INX 형식을 사용함.
  • DASHBOARD_FUND.common_code는 FunETF 펀드 코드이며 provider는 마스터데이터 속성값이 아니라 hub 대시보드 펀드 수집기에서 FUNETF로 고정함.
  • 대시보드 투자 관심 목록의 표시 순서는 공통코드 sort_order_no를 기준으로 함.

6.4 조회 결과 활용 규칙

  • AI는 조회 결과를 기준으로 기존 식별자를 재사용해야 하며, 비슷한 의미의 신규 키를 임의 생성하지 않음.
  • 같은 의미의 코드와 메타를 화면별로 중복 생성하지 않음.
  • 기존 키가 있으면 값만 재사용하거나 SQL로 변경 요청을 산출함.

7. 변경 규칙

7.1 직접 CUD 금지

  • AI는 마스터데이터에 대해 API 기반 POST, PATCH, DELETE를 직접 수행하지 않음.
  • AI는 운영 DB, 로컬 DB 모두에 대해 직접 변경 쿼리를 실행하지 않음.

7.2 SQL 파일 위치와 이름

  • 현재 프로젝트에는 Flyway 또는 Alembic 기반 마이그레이션 폴더가 정착되어 있지 않으므로, AI가 직접 적용하지 않는 마스터데이터 변경 SQL은 프로젝트 루트의 ai-outputs/ 폴더에 생성함.
  • 프로젝트 루트의 ai-outputs/ 폴더는 작업자 로컬 검토 및 수동 반영용 산출물 위치임.
  • 필요한 SQL 산출물은 사용자가 검토한 뒤 별도 운영 절차로 적용함.
  • 파일명 규칙은 {권장파일명}_{yyyymmddhh24miss}.sql 형식을 사용함.
  • 권장 접두사는 masterdata로 고정함.
  • 예시:
ai-outputs/masterdata_add_user_menu_codes_20260517144251.sql
ai-outputs/masterdata_update_ai_prompt_metas_20260517144510.sql
ai-outputs/masterdata_add_workout_status_codes_20260517144733.sql

7.3 SQL 작성 원칙

  • DB는 Hub SQLite를 사용함.
  • 중복 반영 방지를 위해 SQLite INSERT ... ON CONFLICT DO UPDATE 기반 UPSERT를 사용함.
  • 논리 식별자 충돌 기준은 다음을 우선 사용함.
  • 메타: meta_key
  • 공통코드: (code_type_code, common_code)
  • 코드 타입: code_type_code
  • 삭제가 필요하면 하드 삭제보다 is_active=false 비활성화를 우선 검토함.

7.4 SQL 작성 예시 원칙

INSERT INTO tb_meta_m (
meta_key,
meta_val,
description,
is_active,
created_by,
updated_by
) VALUES (
'EXAMPLE_SETTING',
'example',
'예시 설정값',
1,
'ai_masterdata',
'ai_masterdata'
)
ON CONFLICT (meta_key)
DO UPDATE SET
meta_val = EXCLUDED.meta_val,
description = EXCLUDED.description,
is_active = EXCLUDED.is_active,
updated_by = EXCLUDED.updated_by,
updated_at = CURRENT_TIMESTAMP;

8. 식별자 및 데이터 설계 규칙

8.1 텍스트 표현

  • 일반 UI 문구는 message_code를 만들지 않고 한국어 문구를 소스에 직접 작성함.
  • 공통 버튼, 공통 상태, 공통 빈값 문구는 현재 화면에서 쓰는 표현을 우선 맞춤.
  • 문장형 메시지는 하십시오체와 마침표 규칙을 지킴.
  • 기능명이나 화면명을 과도하게 붙여 비슷한 표현을 중복 확산하지 않음.

8.2 메타

  • meta_key는 설정 키 성격을 명확히 드러내는 대문자 스네이크 케이스를 우선 사용함.
  • 장문 텍스트, 프롬프트, 템플릿, 운영 제어값은 메타에 두는 것을 우선 검토함.

8.3 공통코드

  • 코드 타입은 도메인 분류이며, 실제 값은 해당 타입 하위 코드로 관리함.
  • 코드 타입과 실제 코드를 같은 레벨에서 혼용하지 않음.
  • 공통코드 UI 표시 라벨은 common_code_name, 설명은 common_code_desc를 우선 사용함.
  • 코드 타입 UI 표시 라벨은 code_type_code_name, 설명은 code_type_code_desc를 우선 사용함.
  • 순서가 사용자 경험에 직접 영향을 주는 공통코드는 sort_order_no를 정렬 기준으로 사용함.

8.4 포털 메뉴

  • 포털 메뉴는 Hub SQLite tb_portal_menu_m을 소스 오브 트루스로 사용함.
  • 앱 메뉴는 menu_type_code=APP을 사용함.
  • 하위 호환 데이터의 menu_type_code=PROJECT 값은 포털 소비 화면과 정렬 저장에서 APP 그룹으로 해석될 수 있음.
  • 서비스 메뉴는 menu_type_code=SERVICE를 사용함.
  • icon_type_code=TEXTicon_val을 텍스트 아이콘 값으로 사용함.
  • icon_type_code=IMAGEicon_val을 이미지 URL로 사용함.
  • icon_type_code=APP_ICONicon_valshared-ui 앱 아이콘 slug로 사용함.
  • APP_ICON + icon_val은 포털 카드 아이콘, 앱 favicon, PWA 설치 아이콘을 같은 앱 아이콘 세트로 연결하는 관리 계약임.

9. AI 개발 작업 사이클

  1. 작업 지시를 받으면 먼저 어떤 마스터데이터가 필요한지 식별함.
  2. scripts/fetch_master_data.py로 통합 snapshot을 조회해 현재 상태를 확인함.
  3. 기존 키 재사용 가능 여부를 먼저 판단함.
  4. 화면/백엔드 구현을 진행함.
  5. 필요한 마스터데이터 변경분은 프로젝트 루트의 ai-outputs/ 폴더에 SQL 파일로 생성함.
  6. 작업 보고 시 소스 구현 여부와 마스터데이터 반영용 SQL 파일 생성 여부를 함께 알림.

10. JSON 내려받기 전략 권장안

10.1 현재 판단

  • AI 에이전트는 scripts/fetch_master_data.py 실행 한 번으로 마스터데이터 전체 문맥을 확보할 수 있음.
  • 단건 확인과 대량 문맥 수집 모두 통합 snapshot을 우선 사용함.
  • 개별 read-only API는 하위 호환 또는 수동 확인 용도로만 사용함.

10.2 통합 snapshot 사용 권장

  • 여러 화면과 여러 모듈을 한 번에 다루는 AI 작업에서는 개별 API를 여러 번 호출하는 방식보다 읽기 전용 JSON snapshot이 더 효율적임.
  • 권장 실행 명령은 다음과 같음.
uv run python scripts/fetch_master_data.py
  • 이 스크립트는 FASTAPI_BASE_URL/api/v1/master/all을 호출함.
  • 응답 예시:
{
"exported_at": "2026-05-17T14:42:51+09:00",
"code_types": [],
"codes": {
"AI_MODEL": [],
"MENU_TYPE": []
},
"metas": []
}

10.3 권장 결론

  • 기본 원칙은 "통합 snapshot으로 전체 문맥 확보 후, 필요 시 개별 엔드포인트로 세부 확인"임.
  • 이 조합이 가장 안정적이고, AI가 중복 키 생성이나 누락 판단을 줄이기에 좋음.

11. 환경 변수 기준

  • scripts/.env.ai에는 최소한 아래 값을 준비해야 함.
  • FASTAPI_BASE_URL
  • AI_ACCESS_TOKEN
  • 개발 문서 벡터 캐시 동기화와 검색을 함께 사용할 때는 아래 값도 같은 파일에 준비함.
  • VAULT_DATABASE_URL
  • AI_EMBEDDING_API_KEY
  • AI_EMBEDDING_BASE_URL
  • VAULT_EMBEDDING_MODEL

12. 관련 파일

  • 라우터 등록: apps/hub-api/src/junkbox_hub_api/main.py
  • 코드 API: apps/hub-api/src/junkbox_hub_api/api/v1/codes.py
  • 메타 API: apps/hub-api/src/junkbox_hub_api/api/v1/metas.py
  • AI 전용 마스터데이터 API: apps/hub-api/src/junkbox_hub_api/api/v1/ai_masterdata.py
  • 내부 마스터데이터 API: apps/hub-api/src/junkbox_hub_api/api/v1/internal_masterdata.py
  • 권한 의존성: libs/shared-core/src/junkbox_shared_core/security/dependencies.py
  • AI 에이전트 조회 스크립트: scripts/fetch_master_data.py
  • AI 에이전트 환경 변수 예시: scripts/.env.ai.template

13. 관련 문서

  • 시스템 구조는 docs/junkbox/common/guide-jb-core.md를 따름.
  • 공통 저장소 구조는 docs/junkbox/libs/guide-lib-shared-core.md를 따름.
  • hub-api 상세는 docs/junkbox/apps/guide-apps-hub-api.md를 따름.