From bd91a559630b8394eaa8cb8fdb3178f3f977e852 Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Thu, 31 Jul 2025 21:32:03 +0900 Subject: [PATCH] =?UTF-8?q?Add:=20260=5F=EC=95=84=EC=9D=B4=ED=85=9C?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EB=AC=B8=EC=84=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20-=20=EC=99=B8=EB=B6=80=EB=8F=84=EA=B5=AC=20?= =?UTF-8?q?=ED=86=B5=ED=95=A9=EA=B3=BC=20=EA=B6=8C=ED=95=9C=EA=B4=80?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 200_core_design에 아이템 시스템 문서 추가 - 4가지 아이템 유형 정의 (API, 도구, 데이터, 강화) - 인벤토리 관리 시스템 설계 - 외부 도구 통합 예시 (GenSpark, Notion 등) - README.md와 프로젝트 종합 문서 업데이트 --- 000_프로젝트_종합_v3.md | 1 + ...템_외부도구_통합과_권한관리.md | 238 ++++++++++++++++++ README.md | 1 + 3 files changed, 240 insertions(+) create mode 100644 200_core_design/260_아이템시스템_외부도구_통합과_권한관리.md diff --git a/000_프로젝트_종합_v3.md b/000_프로젝트_종합_v3.md index 1210d53..da03b89 100644 --- a/000_프로젝트_종합_v3.md +++ b/000_프로젝트_종합_v3.md @@ -253,6 +253,7 @@ class RobeingMemory: 2. **Part 2: 핵심 설계** (200_core_design) - 스탯과 성장 시스템 - 기억 모듈과 감정 엔진 + - 아이템 시스템과 외부 도구 3. **Part 3: 기술 아키텍처** (300_architecture) - 마이크로서비스와 컨테이너 diff --git a/200_core_design/260_아이템시스템_외부도구_통합과_권한관리.md b/200_core_design/260_아이템시스템_외부도구_통합과_권한관리.md new file mode 100644 index 0000000..a06944b --- /dev/null +++ b/200_core_design/260_아이템시스템_외부도구_통합과_권한관리.md @@ -0,0 +1,238 @@ +# 260. 아이템 시스템: 외부도구 통합과 권한 관리 + +## 개요 + +로빙의 능력을 확장하는 "아이템" 개념은 게임의 장비 시스템처럼 작동합니다. 각 아이템은 로빙에게 새로운 능력을 부여하거나 기존 능력을 강화하며, 레벨과 스탯에 따라 사용 가능 여부가 결정됩니다. + +> "도구를 장착하고 해제하는 것처럼, 로빙은 필요에 따라 능력을 확장할 수 있다." + +## 아이템 유형과 분류 + +### 1. API 아이템 (외부 서비스 접근권) +```python +class APIItem: + name: str # "Google Calendar API" + type: str = "api" # 아이템 유형 + level_req: int # 최소 요구 레벨 + stat_req: Dict # 최소 요구 스탯 + cooldown: int # 재사용 대기시간 + usage_limit: int # 일일 사용 제한 +``` + +**예시 아이템:** +- **Gmail API** (Lv.3): 이메일 읽기/쓰기 +- **Notion API** (Lv.5): 문서 관리 및 데이터베이스 조작 +- **OpenAI GPT-4** (Lv.8): 고급 텍스트 생성 +- **Google Cloud Vision** (Lv.10): 이미지 분석 + +### 2. 도구 아이템 (실행 가능한 외부 프로그램) +```python +class ToolItem: + name: str # "Code Executor" + execute_method: str # "api" | "webhook" | "script" + endpoint: str # 실행 엔드포인트 + permissions: List # 필요 권한 목록 +``` + +**예시 아이템:** +- **GenSpark Runner** (Lv.7): AI 코드 생성 및 실행 +- **Replit Executor** (Lv.6): 온라인 코드 실행 환경 +- **Jupyter Notebook** (Lv.9): 데이터 분석 환경 +- **Docker Container** (Lv.12): 격리된 실행 환경 + +### 3. 데이터 아이템 (특수 지식 베이스) +```python +class DataItem: + name: str # "법률 지식 팩" + data_type: str # "vector_db" | "graph" | "structured" + size_mb: int # 데이터 크기 + memory_cost: int # Memory 스탯 소모량 +``` + +**예시 아이템:** +- **도메인 전문 지식** (Lv.4): 특정 산업 용어집 +- **회사 내부 문서** (Lv.5): 프라이빗 데이터 +- **코드 스니펫 라이브러리** (Lv.6): 재사용 가능 코드 +- **규제 컴플라이언스 DB** (Lv.10): 법규 데이터베이스 + +### 4. 강화 아이템 (임시 능력치 부스트) +```python +class BuffItem: + name: str # "집중력 부스터" + stat_boost: Dict # {"compute": +10, "memory": +5} + duration: int # 지속시간 (초) + stack_limit: int # 중첩 가능 횟수 +``` + +**예시 아이템:** +- **카페인 부스트** (Lv.1): Compute +5 (30분) +- **명상 모드** (Lv.3): Empathy +10 (1시간) +- **하이퍼 포커스** (Lv.7): 모든 스탯 +3 (15분) +- **플로우 상태** (Lv.15): Leadership +20 (10분) + +## 아이템 관리 시스템 + +### 인벤토리 구조 +```python +class Inventory: + max_slots: int = 20 # 레벨에 따라 증가 + equipped: Dict[str, Item] # 현재 장착 아이템 + storage: List[Item] # 보관 중인 아이템 + + def can_equip(self, item: Item, robing_stats: Stats) -> bool: + """아이템 장착 가능 여부 확인""" + return ( + robing_stats.level >= item.level_req and + all(robing_stats[stat] >= req for stat, req in item.stat_req.items()) + ) +``` + +### 장착/해제 메커니즘 +1. **장착 전 검증** + - 레벨 요구사항 확인 + - 스탯 요구사항 확인 + - 슬롯 가용성 확인 + - 충돌하는 아이템 확인 + +2. **장착 효과** + - 즉시 능력 활성화 + - 스탯 보너스 적용 + - 새로운 명령어 해금 + +3. **해제 조건** + - 수동 해제 + - 시간 만료 (임시 아이템) + - 스탯 하락으로 인한 강제 해제 + +### 아이템 획득 방법 +1. **레벨업 보상**: 특정 레벨 달성 시 자동 지급 +2. **퀘스트 완료**: 특정 작업 수행 시 획득 +3. **구매**: 크레딧이나 경험치로 구매 +4. **사용자 제공**: 관리자가 직접 부여 + +## 외부 도구 통합 예시 + +### GenSpark 통합 (코드 생성 및 실행) +```python +class GenSparkItem(ToolItem): + def __init__(self): + super().__init__( + name="GenSpark Code Runner", + level_req=7, + stat_req={"compute": 30, "memory": 25} + ) + + async def execute(self, prompt: str) -> str: + """GenSpark API를 통한 코드 실행""" + # 1. 코드 생성 요청 + # 2. 샌드박스에서 실행 + # 3. 결과 반환 + pass +``` + +### Notion 통합 (문서 관리) +```python +class NotionItem(APIItem): + async def create_page(self, title: str, content: str): + """Notion 페이지 생성""" + pass + + async def update_database(self, db_id: str, data: Dict): + """Notion 데이터베이스 업데이트""" + pass +``` + +## 권한과 보안 + +### OAuth 기반 인증 +```python +class OAuthManager: + async def authorize(self, service: str, user_id: str): + """OAuth 플로우 시작""" + # 1. 인증 URL 생성 + # 2. 사용자 승인 대기 + # 3. 토큰 저장 + pass +``` + +### API 키 암호화 저장 +```python +from cryptography.fernet import Fernet + +class SecureStorage: + def __init__(self): + self.cipher = Fernet(settings.ENCRYPTION_KEY) + + def store_api_key(self, item_id: str, api_key: str): + """API 키 암호화 후 저장""" + encrypted = self.cipher.encrypt(api_key.encode()) + # PostgreSQL에 저장 +``` + +### 사용량 제한과 모니터링 +```python +class UsageTracker: + daily_limits = { + "gpt-4": 100, + "gmail_api": 1000, + "notion_api": 500 + } + + async def check_limit(self, item_id: str, user_id: str) -> bool: + """일일 사용 한도 확인""" + usage = await self.get_daily_usage(item_id, user_id) + return usage < self.daily_limits.get(item_id, float('inf')) +``` + +## 아이템 시너지와 콤보 + +### 시너지 예시 +1. **연구원 세트** + - Notion API + GenSpark + Jupyter = 연구 속도 +50% + - 자동으로 코드 실행 결과를 문서화 + +2. **커뮤니케이터 세트** + - Gmail API + Calendar API + Slack = 소통 효율 +100% + - 일정 기반 자동 이메일 발송 + +3. **분석가 세트** + - BigQuery + Tableau API + GPT-4 = 인사이트 품질 +75% + - 데이터 분석 후 자동 시각화 + +## 미래 확장 가능성 + +### 아이템 진화 시스템 +- 사용 빈도에 따른 아이템 레벨업 +- 아이템 간 합성으로 새로운 아이템 생성 +- 사용자 커스텀 아이템 제작 + +### 아이템 거래소 +- 사용자 간 아이템 공유 +- 아이템 대여 시스템 +- 희귀 아이템 경매 + +### AI 추천 시스템 +- 사용 패턴 분석 기반 아이템 추천 +- 작업 유형별 최적 아이템 세트 제안 +- 시너지 효과 예측 및 제안 + +## 구현 로드맵 + +### Phase 1 (현재) +- 기본 API 아이템 5개 구현 +- 간단한 인벤토리 시스템 +- 수동 장착/해제 + +### Phase 2 (2개월 내) +- 20+ 아이템 추가 +- 자동 장착 추천 +- 사용량 모니터링 + +### Phase 3 (6개월 내) +- 아이템 시너지 시스템 +- 커스텀 아이템 제작 +- 아이템 거래소 베타 + +--- + +*"아이템은 로빙의 가능성을 무한대로 확장한다. 마치 스마트폰의 앱처럼."* \ No newline at end of file diff --git a/README.md b/README.md index 1feeb9c..f8c3c72 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ - [230. 감정윤리 필터: LLM 후처리와 정체성](./200_core_design/230_감정윤리_필터_LLM후처리와_정체성.md) - [240. 스킬 시스템: 함수형 자동화와 컨텍스트](./200_core_design/240_스킬시스템_함수형_자동화와_컨텍스트.md) - [250. 스킬 사례 분석: PDF, 뉴스, 회의](./200_core_design/250_스킬_사례_분석_PDF_뉴스_회의.md) +- [260. 아이템 시스템: 외부도구 통합과 권한 관리](./200_core_design/260_아이템시스템_외부도구_통합과_권한관리.md) #### Part 3: 기술 아키텍처 (300_architecture) - [310. 전체 시스템 구조: 컨테이너와 마이크로서비스](./300_architecture/310_전체_시스템_구조_컨테이너와_마이크로서비스.md)