0. 目的
このページは「トークン取得 → テンプレート解析 → AIプレビュー → 一括生成 → Salesforce通知」の旧オンプレ運用手順に合わせて、AWS版で何が使えるかを確認するための画面です。
旧オンプレ画面と同じ手順で確認できるよう、AWS版の実装済みAPIと未実装APIを並べて表示しています。
このページは「トークン取得 → テンプレート解析 → AIプレビュー → 一括生成 → Salesforce通知」の旧オンプレ運用手順に合わせて、AWS版で何が使えるかを確認するための画面です。
| Method | Path | 状態 | 認証 | 用途 |
|---|---|---|---|---|
| POST | /oauth2/token | 廃止 | 不要 | AWS版ではアプリ内発行しない。Microsoft Entra IDで取得 |
| GET | /api/health | 実装済み | Bearer (write) | 認証込みの稼働確認 |
| POST | /api/analyze-template | 実装済み | Bearer (write) | DOCX差し込み項目抽出 |
| POST | /api/ai-preview | 実装済み | Bearer (write) | AI文章プレビュー |
| POST | /api/generate-letter-batch | 実装済み | Bearer (write) | 一括生成・品質チェック・ZIPメール送信 |
| POST | /api/salesforce/letter-batch-response | 未実装 | Bearer (write) | 生成結果をSalesforceへ通知。AWS版MVP外 |
| GET | /r/{token} | 実装済み | 不要(公開) | QRスキャンの記録 + 外部フォームへリダイレクト |
| GET | /healthz | 実装済み | 不要 | ALB ヘルスチェック |
旧オンプレ: アプリ自身がclient_credentials tokenを発行。
AWS版: Microsoft Entra ID の token endpoint を直接使います。devのブラウザテストではCORS回避用に /dev/token プロキシを用意していますが、本番クライアントが使うAPIではありません。
認証: 不要 / ALBターゲットグループのヘルスチェック用
Response 200
{ "status": "ok" }
認証: Bearer JWT 必須
Response 200
{ "status": "ok", "environment": "dev" }
旧オンプレ: DOCXをアップロードして、差し込み項目を抽出。
Request (application/json)
{
"file_type": "letter",
"file_name": "template.docx",
"file_data": "<BASE64_DOCX>"
}
Response 200
{
"status": "success",
"data": {
"file_type": "letter",
"file_name": "template.docx",
"placeholders": ["企業名", "AI_TEXT", "QR_CODE"],
"placeholder_count": 3
},
"message": "テンプレート解析が完了しました"
}
認証: Bearer JWT 必須(roleに push:write)
Request (application/json)
{
"prompt": "株式会社サンプル向けにM&A提案文を作成してください",
"substituted_values": {
"企業名": "株式会社サンプル",
"業種": "製造業"
}
}
認証: Bearer JWT 必須(roleに push:write)
Request (application/json)
{
"request_id": "ma-20260428-001",
"user": { "name": "宇都宮", "email": "utsunomiya@knowing-lab.com" },
"mail_to": "letter-gen@ma-cp.com",
"template_files": {
"letter": ["<BASE64_LETTER_DOCX>"]
},
"generation_types": ["letter"],
"mappings": {
"letter": { "企業名": "Name", "QR_CODE": "QR_CODE" }
},
"companies": [
{
"task_id": "TODO12345",
"company_data": { "Name": "株式会社テスト" },
"qr_url": "TODO12345"
}
],
"has_ai_text": false,
"has_qr_code": true,
"output_format": "external_storage"
}
Response 200
{
"status": "success",
"data": {
"file_urls": { "all": "X:\\\\...\\\\宇都宮_20260428_153000.zip" },
"expiration_date": "2026-05-14T03:00:00Z",
"generated_count": 1,
"excluded_count": 0,
"file_info": { ... },
"quality_check_results": { ... },
"total_tokens_used": 97,
"processing_time_ms": 1234
},
"message": "手紙生成と品質チェックが完了しました"
}
旧オンプレ: generate-letter-batch の結果をSalesforceへ通知。
AWS版: 未実装です。現時点では /api/generate-letter-batch のレスポンスを呼び出し元が受け取り、必要に応じてSalesforce側で扱います。
認証: 不要(QRスキャナから公開アクセス)
QRトークンを引いて、qr_scans に記録してから target_url へ 302リダイレクト。未知のtokenは MA_QR_FALLBACK_URL へ302。
下のフォームから直接APIを叩けます。本番環境では/dev/tokenプロキシが無効化されているのでトークン取得セクションは動きません。
旧オンプレの /oauth2/token の代わりに、AWS版ではMicrosoft Entra IDから JWT を取得します。この画面では dev only の /dev/token プロキシを経由します。
DOCXテンプレート内の差し込み項目を抽出します。
プロンプト1個だけ送って Azure OpenAI の応答を確認。手紙生成のフルフローを回さずに AI 単独テストが可能。
旧画面と同じく、テンプレートファイルと payload_json を分けて入力します。AWS版APIはJSON/Base64受信のため、送信時にこの画面が添付ファイルをBase64化して template_files へ入れます。
application/json です。ファイル未選択時は payload_json 内の template_files をそのまま使います。旧オンプレ画面では一括生成レスポンスをSalesforceへ通知するための操作でした。AWS版ではまだ実装していません。
注意: ブラウザは302をたどるので最終リダイレクト先が表示されます。「新しいタブで開く」ボタンは新しいタブで開きます。