3.0 KiB
3.0 KiB
AGENTS.md
项目
COBOL テストデータ生成 Agent。詳細設計書・COPYBOOK・ソースコードを解析し、DeepSeek API でテストデータ JSON/SQL を生成する。
- 言語: Python 3.9+
- 依存:
requests>=2.28.0 - テスト:
pytest - 入力元:
D:\cobol-tna-system(COBOL プロジェクト)
コマンド
# テスト実行
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 エントリポイント |
ルール追加方法
rules/pgm_pattern/に.mdファイルを追加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更新・マッチング・キーブレイク等で必須。