# AGENTS.md ## 项目 COBOL テストデータ生成 Agent。詳細設計書・COPYBOOK・ソースコードを解析し、DeepSeek API でテストデータ JSON/SQL を生成する。 - 言語: Python 3.9+ - 依存: `requests>=2.28.0` - テスト: `pytest` - 入力元: `D:\cobol-tna-system` (COBOL プロジェクト) ## コマンド ```bash # テスト実行 python -m pytest tests/ -v # 単一プログラム実行 python main.py --design "D:\cobol-tna-system\詳細設計書\詳細設計書_XXX.md" \ --source "D:\cobol-tna-system\src\XXX.cbl" \ --file-db-md "D:\cobol-tna-system\詳細設計書\COPY句定義書.md" \ --cpy "D:\cobol-tna-system\cpy" \ --db-md "D:\cobol-tna-system\詳細設計書\DB定義書.md" \ --output "output" ``` ## アーキテクチャ パイプライン: `InputParser → RuleLoader → PromptBuilder → APIClient → OutputWriter` | モジュール | 役割 | |-----------|------| | `agent/models.py` | 全データクラス定義 | | `agent/markdown_utils.py` | Markdown テーブル解析 | | `agent/input_parser.py` | 設計書 + COPYBOOK + DB定義 解析 | | `agent/rule_loader.py` | PGMパターン→ルール.md マッチング | | `agent/prompt_builder.py` | API プロンプト組立 | | `agent/api_client.py` | DeepSeek API + 3回リトライ | | `agent/output_writer.py` | JSON/SQL ファイル出力 | | `main.py` | CLI エントリポイント | ## ルール追加方法 1. `rules/pgm_pattern/` に `.md` ファイルを追加 2. `agent/rule_loader.py` の `PGM_PATTERN_MAP` にエントリ追加 ルールマッチング: まず `PGM_PATTERN_MAP` の完全一致 → 見つからなければルールファイル名(.md除く)が PGMパターン文字列に含まれるかチェック。半角/全角括弧違いに注意(`()` vs `()`)。 ## よくある落とし穴 - **`—` (全角ダッシュ) のパース**: 設計書テーブルの `レコード長` 列などで `—` が使われると `int()` が失敗する。`input_parser.py` では `try/except` で 0 にフォールバック。 - **同一COPYBOOKの複数REPLACING**: `ZAN01REC` が `R01`/`R02` 両方で使われる場合、`_extract_copy_replacing()` はリスト `[(copy_name, prefix), ...]` を返し、`_parse_copybooks()` が識別子でマッチする。 - **PGMタイプ = サブ はスキップ**: `generate()` 関数で `meta.pgm_type == 'サブ'` の場合 `ValueError`。 - **入力タイプ判定**: `使用ファイル一覧` の `I/O` 列に `'I'` を含む行の `媒体` 列を見る。`PS`=ファイル、`DB`=DB、両方=混合。 - **APIキー**: コード内にハードコード (`sk-6156cccdc9c14d949cf5bfc5afc67a03`)。モデルは `deepseek-v4-flash`。 ## 多keyテスト キーが複数項目のプログラムでは、ルールに「多keyテスト」が含まれる。基準データの各キー項目を1つだけ変えたN件の追加レコードを生成し、キー比較が正しいことを検証する。DB更新・マッチング・キーブレイク等で必須。