Add: 260_아이템시스템 문서 추가 - 외부도구 통합과 권한관리
- 200_core_design에 아이템 시스템 문서 추가 - 4가지 아이템 유형 정의 (API, 도구, 데이터, 강화) - 인벤토리 관리 시스템 설계 - 외부 도구 통합 예시 (GenSpark, Notion 등) - README.md와 프로젝트 종합 문서 업데이트
This commit is contained in:
parent
af4f64e0ff
commit
bd91a55963
@ -253,6 +253,7 @@ class RobeingMemory:
|
||||
2. **Part 2: 핵심 설계** (200_core_design)
|
||||
- 스탯과 성장 시스템
|
||||
- 기억 모듈과 감정 엔진
|
||||
- 아이템 시스템과 외부 도구
|
||||
|
||||
3. **Part 3: 기술 아키텍처** (300_architecture)
|
||||
- 마이크로서비스와 컨테이너
|
||||
|
||||
238
200_core_design/260_아이템시스템_외부도구_통합과_권한관리.md
Normal file
238
200_core_design/260_아이템시스템_외부도구_통합과_권한관리.md
Normal file
@ -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개월 내)
|
||||
- 아이템 시너지 시스템
|
||||
- 커스텀 아이템 제작
|
||||
- 아이템 거래소 베타
|
||||
|
||||
---
|
||||
|
||||
*"아이템은 로빙의 가능성을 무한대로 확장한다. 마치 스마트폰의 앱처럼."*
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user