Files
jcl-cobol-data-create/AGENTS.md
T
2026-07-12 14:54:50 +08:00

60 lines
3.0 KiB
Markdown

# 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更新・マッチング・キーブレイク等で必須。