PRD.md•8.17 kB
# TaskMateAI - PRD (製品要件定義書)
## 概要
TaskMateAIは、AIがModel Context Protocol (MCP)を通じて操作できるタスク管理アプリケーションです。AIは優先順位の高いタスクから順に処理し、進捗を報告し、完了させることができます。複数のエージェントと複数のプロジェクトをサポートし、階層的なタスク管理を実現します。
## 目的
本アプリケーションの目的は、以下の通りです:
1. AIがタスク管理を自律的に行うためのインターフェースを提供する
2. ユーザーが定義したタスクをAIが優先順位に基づいて処理できるようにする
3. タスクの進捗状況を追跡・報告できるようにする
4. 複数のエージェントとプロジェクトによる階層的なタスク管理を可能にする
5. シンプルかつ拡張可能なアーキテクチャを提供する
6. MCP (Model Context Protocol)を通じた操作を可能にする
## ユーザー
主なユーザーは以下の2つです:
1. **エンドユーザー(人間)**: タスクを定義し、AIに処理させる人
2. **AI**: MCPを通じてタスクを取得し、処理を行い、進捗を報告するエージェント
## 機能要件
### 必須機能
1. **タスク管理**
- タスクの作成、取得、更新、削除
- タスクに優先順位を設定
- タスクの状態(todo、in_progress、done)を管理
2. **サブタスク管理**
- タスクにサブタスクを追加、更新
- サブタスクの状態管理
3. **優先順位ベースのタスク取得**
- AIが次に処理すべき最も優先度の高いタスクを取得
4. **進捗報告**
- AIがタスクの進捗状況を報告
- タスクを完了としてマーク
5. **ノート機能**
- タスクに関連するノート(メモ)を追加
6. **エージェント管理**
- 複数のエージェントID別にタスクを分離
- エージェント一覧の取得
7. **プロジェクト管理**
- エージェント内で複数のプロジェクトを管理
- プロジェクト一覧の取得
### オプション機能(将来拡張可能)
1. タスク間の依存関係の管理
2. スケジュール機能
3. タグによる分類
4. マイルストーン機能
5. タスクテンプレート機能
## 非機能要件
1. **パフォーマンス**
- 個人用アプリケーションのため、高度なパフォーマンス最適化は不要
2. **セキュリティ**
- 個人用アプリケーションのため、認証機能は不要
3. **データ永続化**
- JSONファイルによるシンプルなデータ保存
- エージェントおよびプロジェクトごとのファイル分離
4. **プラットフォーム**
- Python 3.12以上の環境で動作すること
- uvパッケージマネージャーをサポート
- WSL環境での動作をサポート
5. **テスト**
- すべての主要機能に対するユニットテストを提供
- ユーザー操作フローをカバーする統合テスト
- 自動化されたテスト実行環境(pytest)
- 95%以上のコードカバレッジを目標
## 技術仕様
### バックエンド
- **言語**: Python 3.12+
- **データストレージ**: JSONファイル
- **通信プロトコル**: MCP (Model Context Protocol)
### 依存パッケージ
- python-dotenv
- pydantic
- mcp-server
- typing-extensions
## インターフェース
### MCP ツール
1. **タスク管理**
- `get_tasks` - タスクリストを取得(ステータスや優先度でフィルタリング可能)
- `create_task` - 新しいタスクを作成(サブタスク付き)
- `complete_task` - タスクを完了としてマーク
2. **サブタスク管理**
- `add_subtask` - 既存タスクにサブタスクを追加
- `update_subtask` - サブタスクのステータスを更新
3. **AI用特殊ツール**
- `get_next_task` - 優先度の高い次のタスクを取得
- `update_progress` - タスクの進捗を更新
4. **ノート管理**
- `add_note` - タスクにノートを追加
5. **エージェント・プロジェクト管理**
- `list_agents` - 利用可能なエージェントIDの一覧を取得
- `list_projects` - 特定のエージェントに関連するプロジェクトの一覧を取得
## データ構造
```
{
"id": 1,
"title": "タスクのタイトル",
"description": "タスクの詳細な説明",
"priority": 3,
"status": "todo", // "todo", "in_progress", "done" のいずれか
"progress": 0, // 0-100 の進捗率
"subtasks": [
{
"id": 1,
"description": "サブタスクの説明",
"status": "todo" // "todo", "in_progress", "done" のいずれか
}
],
"notes": [
{
"id": 1,
"content": "ノートの内容",
"timestamp": "2025-02-28T09:22:53.532808"
}
]
}
```
## ディレクトリ構造
タスクデータは以下の階層で保存されます:
```
output/
├── tasks.json # デフォルトのタスクファイル
├── agent1/
│ ├── tasks.json # agent1のタスクファイル
│ ├── project1/
│ │ └── tasks.json # agent1のproject1のタスクファイル
│ └── project2/
│ └── tasks.json # agent1のproject2のタスクファイル
└── agent2/
├── tasks.json # agent2のタスクファイル
└── projectA/
└── tasks.json # agent2のprojectAのタスクファイル
```
## 制約事項
- 個人用アプリケーションを想定
- 認証機能は実装しない
- 高度なスケーラビリティは考慮しない
## 成功基準
- AIがMCPを通じてタスクを自律的に取得、処理、完了できること
- タスクの優先順位が正しく反映されること
- サブタスクとノートが適切に管理されること
- データが正しく永続化されること
- 複数のエージェントとプロジェクトでタスクを適切に分離管理できること
## 修正予定項目
- タスクテンプレート機能の実装
- タスク間の依存関係管理システムの構築
- スケジュール機能の追加
- タグによるタスク分類システムの導入
- マイルストーン管理機能の実装
## テスト戦略
TaskMateAIでは、以下のテスト戦略を採用しています:
### テスト階層
1. **ユニットテスト**
- 個別の関数やメソッドの機能を検証
- 外部依存をモックやスタブに置き換えて分離
- 境界条件とエッジケースをカバー
2. **統合テスト**
- コンポーネント間の連携を検証
- データフローの正確性を確認
- 主要なユースケースに焦点
### テスト実装
- **自動テスト**: pytestフレームワークを使用
- **テストフィクスチャ**: 再利用可能なテスト環境の構築
- **パラメトリックテスト**: 複数のデータセットに対する効率的なテスト
### テスト対象領域
1. **タスク管理基本機能**
- タスクの読み書き操作
- ID生成ロジック
- ファイルパス生成
2. **MCPツール機能**
- ツール呼び出しインターフェース
- 各ツールの処理ロジック
- エラー処理とエッジケース
3. **エージェントとプロジェクト管理**
- 階層的なファイル構造の処理
- エージェントとプロジェクトの参照機能
- URIパースとリソース管理
### 継続的な改善
テスト戦略は、アプリケーションの成長とともに継続的に進化し、新機能のサポートと既存機能の堅牢性確保を目指します。