# 仕様QA

Chatwork・GitHub Issue・手動入力からの質問に対して、プロジェクト仕様書をもとに AI が自動回答する機能。

## URL

- 管理画面: `/qa`
- Chatwork Webhook: `/api/qa/chatwork-webhook`
- GitHub Webhook: `/api/qa/github-webhook`

## 仕組み

1. 質問を受け取る（手動入力 / Chatwork Webhook / GitHub Webhook）
2. FEATURES.md、CODING_RULE.md、docs/ 内の全ドキュメントを読み込み、システムプロンプトに含める
3. Claude API に質問を送信し、仕様書に基づいた回答を生成
4. 回答を DB に保存し、元のプラットフォームに返信（Chatwork / GitHub）

## Chatwork 連携

### Webhook 設定

1. Chatwork の「API設定」→「Webhook」で新しい Webhook を作成
2. URL: `https://your-domain.com/api/qa/chatwork-webhook`
3. イベント: メッセージ作成
4. 対象ルーム: QA を受け付けるルームを選択

### トリガー

以下のいずれかで始まるメッセージが QA として処理されます:

- `[QA] 質問内容`
- `質問: 質問内容`
- `質問：質問内容`（全角コロンも可）

### 回答形式

```
[info][title]QA回答[/title]回答内容[/info]
```

## GitHub 連携

### Webhook 設定

1. リポジトリの Settings → Webhooks → Add webhook
2. URL: `https://your-domain.com/api/qa/github-webhook`
3. Content type: `application/json`
4. Secret: `.env` の `GITHUB_WEBHOOK_SECRET` と同じ値
5. イベント: Issues のみ

### トリガー

以下のいずれかのラベルが付いた Issue が対象:

- `qa`
- `question`

Issue が作成された時（opened）、または上記ラベルが付与された時（labeled）に自動回答します。

### 回答形式

Issue のコメントとして以下の形式で投稿:

```markdown
## QA自動回答

回答内容

---
*この回答はプロジェクト仕様書に基づいてAIが自動生成しました。内容に誤りがある場合はお知らせください。*
```

## 環境変数

| 変数名 | 必須 | 説明 |
|--------|------|------|
| `ANTHROPIC_API_KEY` | 必須 | Claude API キー（AI 回答生成に使用） |
| `CHATWORK_API_TOKEN` | Chatwork 返信時 | Chatwork API トークン |
| `CHATWORK_WEBHOOK_TOKEN` | 任意 | Chatwork Webhook 署名検証用トークン |
| `GITHUB_TOKEN` | GitHub コメント時 | GitHub Personal Access Token |
| `GITHUB_WEBHOOK_SECRET` | 任意 | GitHub Webhook 署名検証用シークレット |

## DB テーブル

### qa_questions

| カラム | 型 | 説明 |
|--------|------|------|
| id | bigint | 主キー |
| source | string | 質問元（chatwork / github / manual） |
| source_id | string | Chatwork message_id / GitHub issue number |
| source_url | string | GitHub issue URL |
| question | text | 質問内容 |
| answer | text | AI 回答 |
| status | string | pending / answered / failed |
| asked_by | string | 質問者名 |
| created_at | timestamp | 作成日時 |
| updated_at | timestamp | 更新日時 |
