TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證AI秘書ダン
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
「○○したい」という願望に対して提案・実行してくれるAI秘書システムです。檢視完整 README ↗
「○○したい」という願望に対して提案・実行してくれるAI秘書システムです。
🔄 最新更新(2024年12月26日):
| 機能 | API | 状態 |
|---|---|---|
| タスク一覧を見る | GET /api/v1/tasks | ✅ 動作確認済み |
| お願いを送る | POST /api/v1/wish | ✅ 動作確認済み |
| お願いの状況を確認 | GET /api/v1/task/{id} | ✅ 動作確認済み |
| お願いを実行する | POST /api/v1/task/{id}/confirm | ✅ 動作確認済み |
| ヘルスチェック | GET / | ✅ 動作確認済み |
| 日本語アクションファースト提案 | POST /api/v1/wish | ✅ 動作確認済み |
| LINE Webhook | POST /webhook/line | ⏸️ LINE設定後にテスト可能 |
🔄 ユーザーテーブル統合完了(2024年12月26日)
chat_users テーブルを users テーブルに統合docs/phase2_chat_system.md| 機能 | API | 状態 |
|---|---|---|
| ユーザー登録 | POST /api/v1/chat/register | ✅ 動作確認済み |
| ログイン | POST /api/v1/chat/login | ✅ 動作確認済み |
| プロフィール取得 | GET /api/v1/chat/me | ✅ 動作確認済み |
| プロフィール更新 | PATCH /api/v1/chat/me | ✅ 動作確認済み |
| 招待リンク発行 | POST /api/v1/chat/invite | ✅ 動作確認済み |
| 招待情報取得 | GET /api/v1/chat/invite/{code} | ✅ 動作確認済み |
| 招待承諾 | POST /api/v1/chat/invite/{code}/accept | ✅ 動作確認済み |
| 友達一覧 | GET /api/v1/chat/friends | ✅ 動作確認済み |
| 友達削除 | DELETE /api/v1/chat/friends/{id} | ✅ 動作確認済み |
| ルーム一覧 | GET /api/v1/chat/rooms | ✅ 動作確認済み |
| ルーム作成 | POST /api/v1/chat/rooms | ✅ 動作確認済み |
| ルーム詳細 | GET /api/v1/chat/rooms/{id} | ✅ 動作確認済み |
| ルーム更新 | PATCH /api/v1/chat/rooms/{id} | ✅ 動作確認済み |
| メンバー一覧 | GET /api/v1/chat/rooms/{id}/members | ✅ 動作確認済み |
| メンバー追加 | POST /api/v1/chat/rooms/{id}/members | ✅ 動作確認済み |
| メッセージ送信 | POST /api/v1/chat/rooms/{id}/messages | ✅ 動作確認済み |
| メッセージ取得 | GET /api/v1/chat/rooms/{id}/messages | ✅ 動作確認済み |
| 既読マーク | POST /api/v1/chat/rooms/{id}/read | ✅ 動作確認済み |
| AI設定取得 | GET /api/v1/chat/rooms/{id}/ai | ✅ 動作確認済み |
| AI設定更新 | PATCH /api/v1/chat/rooms/{id}/ai | ✅ 動作確認済み |
| AI要約取得 | GET /api/v1/chat/rooms/{id}/ai/summary | ✅ 動作確認済み |
| WebSocket | WS /api/v1/chat/ws/chat | ✅ 動作確認済み |
| ダンルーム取得 | GET /api/v1/chat/dan | ✅ 実装済み(2024年12月26日) |
| ダンメッセージ取得 | GET /api/v1/chat/dan/messages | ✅ 実装済み |
| ダンにメッセージ送信 | POST /api/v1/chat/dan/messages | ✅ 実装済み |
| ダン既読マーク | POST /api/v1/chat/dan/read | ✅ 実装済み |
| 提案一覧取得 | GET /api/v1/chat/proposals | ✅ 実装済み |
| 提案詳細取得 | GET /api/v1/chat/proposals/{id} | ✅ 実装済み |
| 提案に対応 | POST /api/v1/chat/proposals/{id}/respond | ✅ 実装済み |
| 機能 | ツール | 状態 |
|---|---|---|
| Tavily汎用検索 | tavily_search | ✅ 動作確認済み |
| 電車・新幹線検索 | search_train (Yahoo!乗換案内) | ✅ 動作確認済み |
| 高速バス検索 | search_bus (高速バスネット) | ✅ 動作確認済み |
| 航空機検索 | search_flight (スカイスキャナー) | ✅ 動作確認済み |
| Amazon商品検索 | search_amazon | ✅ 動作確認済み |
| 楽天商品検索 | search_rakuten | ✅ 動作確認済み |
| 価格.com検索 | search_kakaku | ✅ 動作確認済み |
| エージェント統合 | agent.py で検索結果を提案に反映 | ✅ 動作確認済み |
| 機能 | API | 説明 | 状態 |
|---|---|---|---|
| ログイン情報を保存 | POST /api/v1/credentials | Amazon、新幹線予約サイトなどのログイン情報を暗号化して保存。毎回入力不要に | ✅ 動作確認済み |
| 保存済みサービス一覧 | GET /api/v1/credentials | どのサービスのログイン情報が保存されているか確認 | ✅ 動作確認済み |
| ログイン情報を削除 | DELETE /api/v1/credentials/{service} | 不要になったサービスのログイン情報を削除 | ✅ 動作確認済み |
| 実行中にログイン情報提供 | POST /api/v1/task/{id}/provide-credentials | ログインまたは新規登録を選択可能。新規登録時はパスワード自動生成 | ✅ 動作確認済み |
| 実行状況をリアルタイム確認 | GET /api/v1/task/{id}/execution-status | 予約・購入の進捗。認証必要時はauth_optionsでフィールド情報を返す | ✅ 動作確認済み |
| サービス | 機能 | 状態 |
|---|---|---|
| Amazon | 商品をカートに追加(Playwrightによる自動操作) | ✅ 動作確認済み |
| 楽天 | 商品をカートに追加(Playwrightによる自動操作) | ✅ 動作確認済み |
| EX予約 | 新幹線チケット予約(SmartEX実サイト調査済み・OTP認証対応) | ✅ 動作確認済み |
| 高速バス(WILLER) | バス予約(実サイト調査済み・新規登録対応・チャット連携済み) | ✅ 実機テスト成功(2024年12月26日) |
| Smart Fallback | LLMで距離・コスト考慮した最適な代替案を提案(全タスクタイプ対応) | ✅ 新規追加(2024年12月27日) |
| 機能 | API | 状態 |
|---|---|---|
| 認証情報保存 | POST /api/v1/credentials | ✅ 完了 |
| 認証情報取得 | GET /api/v1/credentials | ✅ 完了 |
| 認証情報削除 | DELETE /api/v1/credentials/{service} | ✅ 完了 |
| 暗号化保存 | AES-256-GCM | ✅ 完了 |
| 機能 | API | 状態 |
|---|---|---|
| Gmail連携状態確認 | GET /api/v1/gmail/status | ✅ 動作確認済み |
| Gmail OAuth開始 | POST /api/v1/gmail/setup | ✅ 動作確認済み |
| Gmail手動同期 | POST /api/v1/gmail/sync | ✅ 動作確認済み |
| Gmail連携解除 | DELETE /api/v1/gmail/disconnect | ✅ 動作確認済み |
| 検知メッセージ一覧 | GET /api/v1/detection/messages | ✅ 動作確認済み |
| 検知メッセージ詳細 | GET /api/v1/detection/messages/{id} | ✅ 動作確認済み |
| 添付ファイル一覧 | GET /api/v1/detection/messages/{id}/attachments | ✅ 動作確認済み |
| 添付ファイル取得 | POST /api/v1/detection/messages/{id}/download-attachments | ✅ 動作確認済み |
| 添付ファイルDL | GET /api/v1/detection/attachments/{id} | ✅ 動作確認済み |
| Doneチャット検知 | ChatService内フック(AI有効ルーム自動検知) | ✅ 動作確認済み |
| 機能 | API | 状態 |
|---|---|---|
| PDF解析 | POST /api/v1/content/extract/pdf | ✅ 動作確認済み |
| 画像OCR | POST /api/v1/content/extract/image | ✅ 動作確認済み |
| URL先取得 | POST /api/v1/content/extract/url | ✅ 動作確認済み |
| コンテンツ分類 | POST /api/v1/content/classify | ✅ 動作確認済み |
| 添付ファイル解析 | POST /api/v1/content/analyze/attachment/{id} | ✅ 動作確認済み |
| メッセージ解析 | POST /api/v1/content/analyze/message/{id} | ✅ 動作確認済み |
| 機能 | API/サービス | 状態 |
|---|---|---|
| 請求書情報抽出 | InvoiceExtractor (7A) | ✅ 動作確認済み(2024年12月23日) |
| スケジュール計算 | ScheduleCalculator (7B) | ✅ 動作確認済み(2024年12月23日) |
| 請求書作成API | POST /api/v1/invoices (7C) | ✅ 動作確認済み(2024年12月23日) |
| 請求書一覧API | GET /api/v1/invoices (7C) | ✅ 動作確認済み(2024年12月23日) |
| 請求書承認API | POST /api/v1/invoices/{id}/approve (7C) | ✅ 動作確認済み(2024年12月23日) |
| 請求書却下API | POST /api/v1/invoices/{id}/reject (7C) | ✅ 動作確認済み(2024年12月23日) |
| 支払いスケジューラ | Celery Beat (7D) | ✅ 動作確認済み(2024年12月23日) |
| 機能 | API | 状態 |
|---|---|---|
| 振込先作成 | POST /api/v1/bank-accounts (8B) | ✅ 動作確認済み(2024年12月23日) |
| 振込先一覧取得 | GET /api/v1/bank-accounts (8B) | ✅ 動作確認済み(2024年12月23日) |
| 振込先詳細取得 | GET /api/v1/bank-accounts/{id} (8B) | ✅ 動作確認済み(2024年12月23日) |
| 振込先削除 | DELETE /api/v1/bank-accounts/{id} (8B) | ✅ 動作確認済み(2024年12月23日) |
| 振込先検証 | POST /api/v1/bank-accounts/{id}/verify (8B) | ✅ 動作確認済み(2024年12月23日) |
| 銀行振込Executor | BankTransferExecutor (8A) | ✅ 動作確認済み(2024年12月23日) |
| 支払い実行API | POST /api/v1/invoices/{id}/pay (8A) | ✅ 動作確認済み(2024年12月23日) |
| 支払い状況確認API | GET /api/v1/invoices/{id}/payment-status (8A) | ✅ 動作確認済み(2024年12月23日) |
| 機能 | API | 状態 |
|---|---|---|
| メールOTP抽出 | POST /api/v1/otp/extract/email (9A) | ✅ 動作確認済み(2024年12月23日) |
| 最新OTP取得 | GET /api/v1/otp/latest (9A) | ✅ 動作確認済み(2024年12月23日) |
| OTP使用済みマーク | POST /api/v1/otp/{id}/mark-used (9A) | ✅ 動作確認済み(2024年12月23日) |
| OTP履歴取得 | GET /api/v1/otp/history (9A) | ✅ 動作確認済み(2024年12月23日) |
| SMS設定状態確認 | GET /api/v1/otp/sms/status (9B) | ✅ 動作確認済み(2024年12月23日) |
| SMS Webhook受信 | POST /api/v1/otp/sms/webhook (9B) | ✅ 動作確認済み(2024年12月23日) |
| SMS OTP抽出 | POST /api/v1/otp/extract/sms (9B) | ✅ 動作確認済み(2024年12月23日) |
| 音声OTP抽出 | POST /api/v1/otp/extract/voice (9C) | ✅ 動作確認済み(2024年12月25日) |
| Executor OTP統合 | BaseExecutor._handle_otp_challenge() (9D) | ✅ 動作確認済み(2024年12月23日) |
| 機能 | API | 状態 |
|---|---|---|
| 音声設定取得 | GET /api/v1/voice/settings (10A) | ✅ 動作確認済み |
| 音声設定更新 | PATCH /api/v1/voice/settings (10A) | ✅ 動作確認済み |
| 受電オン/オフ | PATCH /api/v1/voice/inbound (10A) | ✅ 動作確認済み |
| 電話番号ルール一覧 | GET /api/v1/voice/rules (10D) | ✅ 動作確認済み |
| 電話番号ルール追加 | POST /api/v1/voice/rules (10D) | ✅ 動作確認済み |
| 電話番号ルール削除 | DELETE /api/v1/voice/rules/{id} (10D) | ✅ 動作確認済み |
| 通話履歴取得 | GET /api/v1/voice/calls (10B) | ✅ 動作確認済み |
| 通話詳細取得 | GET /api/v1/voice/call/{id} (10B) | ✅ 動作確認済み |
| 架電開始 | POST /api/v1/voice/call (10B) | ✅ 動作確認済み |
| 通話終了 | POST /api/v1/voice/call/{id}/end (10B) | ✅ 動作確認済み |
| 受電Webhook | POST /api/v1/voice/webhook/incoming (10C) | ✅ 動作確認済み |
| 通話状態Webhook | POST /api/v1/voice/webhook/status (10B) | ✅ 動作確認済み |
| 架電TwiML Webhook | POST /api/v1/voice/webhook/outbound (10B) | ✅ 動作確認済み |
| Media Streams WebSocket | WS /api/v1/voice/stream/{call_sid} (10E) | ✅ 動作確認済み |
| 音声フォーマット変換 | μ-law ↔ PCM, リサンプリング (10E) | ✅ 動作確認済み |
| ElevenLabs STT連携 | 音声→テキスト変換 (10E) | ✅ 動作確認済み |
| ElevenLabs TTS連携 | テキスト→音声変換 (10E) | ✅ 動作確認済み |
| Claude応答生成 | AI会話応答 (10E) | ✅ 動作確認済み |
| 双方向AI音声会話 | STT→Claude→TTSパイプライン (10E) | ✅ 動作確認済み |
技術スタック: Twilio Voice + Twilio Media Streams + ElevenLabs + Claude
実現した機能:
必要な設定:
TWILIO_ACCOUNT_SID: TwilioアカウントSIDTWILIO_AUTH_TOKEN: Twilio認証トークンTWILIO_PHONE_NUMBER: Twilio電話番号(050-xxxx-xxxx形式)ELEVENLABS_API_KEY: ElevenLabs APIキーVOICE_WEBHOOK_BASE_URL: Webhook受信URL(ngrok等)# Python仮想環境を作成
python -m venv venv
# 仮想環境を有効化
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# 依存関係をインストール
pip install -r requirements.txt
# Playwrightブラウザをインストール
playwright install chromium
.env ファイルをプロジェクトルートに作成し、以下の変数を設定してください:
# Application
APP_ENV=development
APP_SECRET_KEY=your-secret-key-here-change-in-production
# Supabase
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-supabase-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-supabase-service-role-key
# Anthropic (Claude)
ANTHROPIC_API_KEY=your-anthropic-api-key
# Redis (for Celery)
REDIS_URL=redis://localhost:6379/0
# Gmail API
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
# LINE Messaging API
LINE_CHANNEL_ACCESS_TOKEN=your-line-channel-access-token
LINE_CHANNEL_SECRET=your-line-channel-secret
# Encryption Key (32 bytes)
ENCRYPTION_KEY=your-32-byte-encryption-key-here
Supabaseダッシュボードの SQL Editor で supabase/migrations/001_initial_schema.sql を実行してください。
~/.ai_secretary/gmail_credentials.json に保存https://your-domain.com/webhook/line に設定# Redisを起動(Docker)
docker run -d -p 6379:6379 redis:alpine
# FastAPIサーバーを起動
python main.py
# 別のターミナルでCeleryワーカーを起動
celery -A app.tasks.celery_app worker --loglevel=info --pool=solo
| エンドポイント | メソッド | 説明 |
|---|---|---|
/ | GET | ヘルスチェック |
/api/v1/wish | POST | 願望を処理 |
/api/v1/task/{id} | GET | タスク状態を取得 |
/api/v1/task/{id}/confirm | POST | タスクを実行 |
/api/v1/task/{id}/execution-status | GET | 実行状況をリアルタイム取得 |
/api/v1/task/{id}/provide-credentials | POST | 実行中に認証情報を提供 |
/api/v1/tasks | GET | タスク一覧を取得 |
/api/v1/credentials | POST | 認証情報を保存 |
/api/v1/credentials | GET | 保存済みサービス一覧 |
/api/v1/credentials/{service} | DELETE | 認証情報を削除 |
/webhook/line | POST | LINE Webhook |
# 願望を送信 (bash/curl)
curl -X POST http://localhost:8000/api/v1/wish \
-H "Content-Type: application/json" \
-d '{"wish": "PCを新調したい"}'
# 願望を送信 (PowerShell)
Invoke-RestMethod -Uri "http://localhost:8000/api/v1/wish" -Method POST -ContentType "application/json" -Body '{"wish": "PCを新調したい"}'
// レスポンス例(アクションファースト)
{
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"message": "Action proposed. Please confirm to execute, or request revisions.",
"proposed_actions": ["MDLmakeにLINEで相談メッセージを送信します。"],
"proposal_detail": "【アクション】\nMDLmakeにLINEで相談メッセージを送信します。\n\n【詳細】\n「お世話になっております。PCの新調を検討しています...」\n\n【補足】\n予算や用途は仮定です。訂正があればお知らせください。",
"requires_confirmation": true
}
アクションファースト原則:
D:\Doneダン\
├── main.py # エントリーポイント
├── requirements.txt # 依存関係
├── README.md # このファイル
├── app/
│ ├── __init__.py
│ ├── config.py # 設定
│ ├── api/
│ │ ├── __init__.py
│ │ ├── routes.py # APIルート
│ │ └── line_webhook.py # LINE Webhook
│ ├── agent/
│ │ ├── __init__.py
│ │ └── agent.py # AIエージェント(LangGraph)
│ ├── models/
│ │ ├── __init__.py
│ │ └── schemas.py # Pydanticスキーマ
│ ├── services/
│ │ ├── __init__.py
│ │ ├── encryption.py # 暗号化サービス
│ │ ├── credentials_service.py # 認証情報管理(Phase 3B)
│ │ ├── execution_service.py # 実行エンジン(Phase 3B)
│ │ ├── dynamic_auth.py # 動的認証/新規登録サービス(Phase 3C)
│ │ └── supabase_client.py # DB操作
│ ├── executors/ # Phase 3B: サービス別実行ロジック
│ │ ├── __init__.py
│ │ ├── base.py # 共通実行ロジック・ファクトリー
│ │ ├── amazon_executor.py # Amazon購入(カート追加)
│ │ ├── rakuten_executor.py # 楽天購入(カート追加)
│ │ ├── ex_reservation_executor.py # EX予約(新幹線予約)
│ │ └── highway_bus_executor.py # WILLER高速バス予約
│ ├── tasks/
│ │ ├── __init__.py
│ │ ├── celery_app.py # Celery設定
│ │ └── task_handlers.py # タスクハンドラー
│ └── tools/
│ ├── __init__.py
│ ├── browser.py # Playwright操作
│ ├── email_tool.py # Gmail操作
│ ├── line_tool.py # LINE操作
│ └── search.py # Web検索
└── supabase/
└── migrations/
└── 001_initial_schema.sql # DBスキーマ
| テスト | ディレクトリ | 目的 | 実行タイミング |
|---|---|---|---|
| Unit Tests | tests/ | モック使用、高速テスト | 毎コミット(pre-commit) |
| E2E Tests | tests_e2e/ | 実際のサービスを使用 | 手動・リリース前 |
# 全テスト実行
python -m pytest tests/ -v
# Windows (バッチファイル)
run_tests.bat
# PowerShell
.\run_tests.ps1
E2Eテストは実際のサービスを使用します:
セットアップ:
# 1. テスト用環境ファイルを作成
cp env_test_example.txt .env.test
# 2. .env.test を編集してテスト用Supabaseプロジェクトを設定
# ⚠️ 本番DBとは別のSupabaseプロジェクトを使用すること!
# 3. E2Eテスト実行(ブラウザ表示あり)
pytest tests_e2e/ -v --headed -m e2e
# 4. E2Eテスト実行(ヘッドレスモード)
pytest tests_e2e/ -v -m e2e
注意: E2Eテストは実際の外部サービスにアクセスするため:
新しいAPIを追加する際は、以下のフローで進めてください:
1. API実装
↓
2. 手動でAPIをテスト(ターミナルでcurl/Invoke-RestMethod)
↓
3. 成功したら → 自動テストが通るか確認(pytest)
↓
4. 自動テストが通ったら → ドキュメント更新(下記参照)
↓
5. コミット(1 API = 1 コミット)
コミット時に以下を判断して更新:
| 条件 | 更新するドキュメント |
|---|---|
| API追加/変更 | README.md の該当セクション |
feat: fix: コミット | CHANGELOG.md の [Unreleased] セクション |
| 設計判断(代替案を検討した) | docs/adr/ に新規ADR作成 |
## [Unreleased]
### Added
- タスクのDB永続化 (Commits: `abc1234`, ADR: [001](docs/adr/001_xxx.md))
ADRテンプレート: docs/adr/README.md
重要なポイント:
tests/ 以下に自動テスト化されていますMIT License
| エージェント架電 |
| VoiceExecutor (10F) |
| ✅ 動作確認済み |
| 通話チャット通知 | VoiceService.notify_chat (10F) | ✅ 動作確認済み |
| 電話タスク自動判定 | エージェントがPHONEタスクを自動判定 (10F) | ✅ 動作確認済み(2024年12月28日) |