# ai.card 開発ガイド (Claude Code用)

## プロジェクト概要
**ai.card** - atproto基盤のカードゲームシステム。iOS/Web/APIで構成され、ユーザーデータ主権を実現。

## 現在の状態 (2025/01/06)
- ✅ MCP Server実装完了
- ✅ SQLiteデータベース稼働中
- ✅ 基本的なガチャ・カード管理機能
- 🔧 atproto連携は一時無効化
- 📱 iOS/Web実装待ち

## 開発環境セットアップ

### 必要なもの
- Python 3.13
- Node.js (Web開発用)
- Docker (PostgreSQL用、オプション)
- Xcode (iOS開発用)

### 初回セットアップ
```bash
# 1. プロジェクトディレクトリ
cd /Users/syui/ai/gpt/card

# 2. 仮想環境構築
./setup_venv.sh

# 3. データベース初期化
cd api
~/.config/syui/ai/card/venv/bin/python init_db.py

# 4. サーバー起動
cd ..
./start_server.sh
```

## 開発時の作業分担提案

### ai.gptプロジェクトで起動 (MCP/バックエンド作業)
**適している作業:**
- MCPサーバー機能の追加・修正
- データベーススキーマ変更
- API エンドポイント追加
- バックエンドロジック実装

**起動方法:**
```bash
cd /Users/syui/ai/gpt
# Claude Codeをここで起動
# ai.card/api/ を編集対象にする
```

### ai.cardプロジェクトで起動 (フロントエンド作業)
**適している作業:**
- iOS アプリ開発 (Swift/SwiftUI)
- Web フロントエンド開発 (React/TypeScript)
- UI/UX デザイン実装
- クライアント側ロジック

**起動方法:**
```bash
cd /Users/syui/ai/gpt/card
# Claude Codeをここで起動
# ios/ または web/ を編集対象にする
```

## ディレクトリ構造
```
ai.card/
├── api/               # バックエンド (Python/FastAPI)
│   ├── app/
│   │   ├── main.py         # エントリポイント
│   │   ├── mcp_server.py   # MCPサーバー実装
│   │   ├── models/         # データモデル
│   │   ├── routes/         # APIルート
│   │   └── services/       # ビジネスロジック
│   └── requirements.txt
├── ios/               # iOSアプリ (Swift)
│   └── AiCard/
├── web/               # Webフロントエンド (React)
│   └── src/
├── docs/              # ドキュメント
├── setup_venv.sh      # 環境構築スクリプト
└── start_server.sh    # サーバー起動スクリプト
```

## 主要な技術スタック

### バックエンド
- **言語**: Python 3.13
- **フレームワーク**: FastAPI + fastapi-mcp
- **データベース**: SQLite (開発) / PostgreSQL (本番予定)
- **ORM**: SQLAlchemy 2.0

### フロントエンド
- **iOS**: Swift 5.9 + SwiftUI
- **Web**: React + TypeScript + Vite
- **スタイリング**: CSS Modules

## 現在の課題と制約

### 依存関係の問題
1. **atproto**: `SessionString` APIが変更されたため一部機能無効化
2. **supabase**: httpxバージョン競合で無効化
3. **PostgreSQL**: ネイティブ拡張のコンパイル問題でSQLite使用中

### 回避策
- atproto機能はモック実装で代替
- データベースはSQLiteで開発継続
- 本番環境ではDockerでPostgreSQL使用予定

## API仕様

### MCP Tools (9個)
1. **get_user_cards(did: str)** - ユーザーのカード一覧取得
2. **draw_card(did: str, is_paid: bool)** - ガチャでカード取得
3. **get_card_details(card_id: int)** - カード詳細情報
4. **analyze_card_collection(did: str)** - コレクション分析
5. **get_unique_registry()** - ユニークカード登録状況
6. **sync_cards_atproto(did: str)** - atproto同期(無効化中)
7. **get_gacha_stats()** - ガチャ統計情報

### REST API
- `/api/v1/cards/*` - カード管理
- `/api/v1/auth/*` - 認証(モック実装)
- `/api/v1/sync/*` - 同期機能

## 今後の開発予定

### Phase 1: 基盤強化
- [ ] PostgreSQL移行(Docker利用)
- [ ] atproto最新版対応
- [ ] テストコード追加

### Phase 2: クライアント実装
- [ ] iOS アプリ基本機能
- [ ] Web フロントエンド
- [ ] リアルタイムガチャ演出

### Phase 3: 本格運用
- [ ] Cloudflare デプロイ
- [ ] ユーザーデータ主権実装
- [ ] ai.verse連携

## 注意事項
- サーバーは`--reload`モードで起動中(ファイル変更で自動再起動)
- データベースは `~/.config/syui/ai/card/aicard.db`
- 仮想環境は `~/.config/syui/ai/card/venv/`
- エラーログはターミナルに出力される

## デバッグ用コマンド
```bash
# データベース確認
sqlite3 ~/.config/syui/ai/card/aicard.db ".tables"

# API動作確認
curl http://localhost:8000/health
curl "http://localhost:8000/get_gacha_stats"

# ログ確認
tail -f /var/log/aicard.log  # 未実装
```

## 参考リンク
- [AI エコシステム統合設計書](/Users/syui/ai/gpt/CLAUDE.md)
- [MCP統合作業報告](./docs/MCP_INTEGRATION_SUMMARY.md)
- [API仕様書](http://localhost:8000/docs) ※サーバー起動時のみ