Files
2026-07-12 14:54:50 +08:00

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 エントリポイント

ルール追加方法

  1. rules/pgm_pattern/.md ファイルを追加
  2. agent/rule_loader.pyPGM_PATTERN_MAP にエントリ追加

ルールマッチング: まず PGM_PATTERN_MAP の完全一致 → 見つからなければルールファイル名(.md除く)が PGMパターン文字列に含まれるかチェック。半角/全角括弧違いに注意(() vs ())。

よくある落とし穴

  • (全角ダッシュ) のパース: 設計書テーブルの レコード長 列などで が使われると int() が失敗する。input_parser.py では try/except で 0 にフォールバック。
  • 同一COPYBOOKの複数REPLACING: ZAN01RECR01/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更新・マッチング・キーブレイク等で必須。