auto-commit 2.0.0

AI-powered Git commit message generator - supports OpenAI, DeepSeek, and Gemini
Documentation

## 要件定義書(初版)

### システム概要
* **システム名**: auto-commit-改
* **システムの目的**: 既存の`auto-commit`ツールをベースに、使用するLLMをOpenAIからDeepSeekに変更し、コミットメッセージのフォーマットを柔軟にカスタマイズ可能にすることで、開発者の生産性をさらに向上させる。
* **対象利用者**: Gitを利用して開発を行うすべてのソフトウェア開発者。
* [cite_start]**配備環境**: 利用者のローカル開発環境(Windows, macOS, Linux) [cite: 8]。

### 機能要件

#### 基本機能要件(必須)
* **FR001: DeepSeek APIによるコミットメッセージ生成**
    * [cite_start]**説明**: ステージングされたファイルの差分(`git diff --staged`)を基に、DeepSeek APIを利用してコミットメッセージ(タイトルと説明文)を自動生成する [cite: 7]。
    * **受入基準**:
        * `OPENAI_API_KEY` の代わりに `DEEPSEEK_API_KEY` 環境変数を読み込む。
        * DeepSeek APIのエンドポイントに対して、差分情報をペイロードとして送信できる。
        * APIからのレスポンスをパースし、コミットメッセージとして整形できる。
    * **優先度**: 高

* **FR002: カスタムコミットメッセージフォーマット**
    * [cite_start]**説明**: 利用者がCLIの引数等で指定したフォーマットに基づき、最終的なコミットメッセージを組み立てる機能 [cite: 8]。
    * **受入基準**:
        * `--format`のようなCLI引数で、プレースホルダー(例: `{title}`, `{description}`)を含む文字列を受け取れる。
        * LLMが生成したタイトルと説明文を、指定されたフォーマットに埋め込んで最終的なコミットメッセージを生成できる。
        * フォーマットが指定されない場合は、デフォルトのフォーマット(例: `タイトル\n\n説明`)を適用する。
    * **優先度**: 高

* **FR003: 既存機能の維持**
    * [cite_start]**説明**: 元の`auto-commit`が持つ、ドライラン、メッセージのレビュー、強制コミットといった機能は引き続き利用できる [cite: 7]。
    * **受入基準**:
        * [cite_start]`--dry-run`フラグでコミットせずにメッセージを出力できる [cite: 7]。
        * [cite_start]`--review`フラグで生成されたメッセージをコミット前に編集できる [cite: 7]。
        * [cite_start]`--force`フラグで確認プロンプトをスキップできる [cite: 7]。
    * **優先度**: 高

### 非機能要件
* **性能・応答性**:
    * **応答時間**: `auto-commit`実行からDeepSeek APIの応答を含め、コミットメッセージが提案されるまでの時間は10秒以内を目指す。
* **セキュリティ**:
    * [cite_start]**認証**: APIキーは環境変数から読み込み、コード内にハードコーディングしない [cite: 12]。
* **ユーザビリティ**:
    * [cite_start]**エラーハンドリング**: APIキーが設定されていない場合や、API通信に失敗した際に、利用者に分かりやすいエラーメッセージを表示する [cite: 13]。
* **保守性・拡張性**:
    * **コード標準**: Rustの標準的なフォーマット(`cargo fmt`)に従う。
    * [cite_start]**モジュール設計**: `main.rs`のロジックを、API通信、Git操作、引数解析などの関心事に応じて適切にモジュール分割し、可読性を向上させる [cite: 14]。
* **開発環境・CI/CD**:
    * **バージョン管理**: Gitを使用し、Conventional Commitsの規約に則ってコミットメッセージを記述する。
    * [cite_start]**ビルド自動化**: `cargo build --release`で各ターゲット(linux, windows, macos)向けのバイナリをビルドできる状態を維持する [cite: 8]。