v1.0
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
from agent.prompt_builder import PromptBuilder
|
||||
from agent.models import ProgramMeta, FileInfo, CopyField
|
||||
|
||||
|
||||
def test_build_basic_prompt():
|
||||
meta = ProgramMeta(
|
||||
program_id='ZAN04MAT', program_name='取消マッチング処理',
|
||||
system_name='残業統計管理システム',
|
||||
pgm_type='メイン', pgm_pattern='マッチング(1:1)',
|
||||
summary_lines=['取消申請のマッチング'], prerequisites=[],
|
||||
files=[], keys=[], modules=[],
|
||||
process_detail='1.初期処理...\n2.主処理...',
|
||||
output_records='### 出力ファイル1...',
|
||||
input_type='file', copy_fields={}, db_tables={}
|
||||
)
|
||||
|
||||
builder = PromptBuilder()
|
||||
prompt = builder.build(
|
||||
meta=meta,
|
||||
rules_text='# マッチング(1:1) データ生成規則\n...',
|
||||
group_descriptions=['两端不一致', '逆方向两端不一致', '中间不一致'],
|
||||
group_count=3
|
||||
)
|
||||
|
||||
assert 'ZAN04MAT' in prompt
|
||||
assert 'マッチング(1:1)' in prompt
|
||||
assert '1.初期処理' in prompt
|
||||
assert '生成するグループ数: 3' in prompt
|
||||
assert 'g1: 两端不一致' in prompt
|
||||
assert 'g2: 逆方向两端不一致' in prompt
|
||||
assert 'g3: 中间不一致' in prompt
|
||||
assert 'JSON形式' in prompt
|
||||
|
||||
|
||||
def test_build_with_copy_fields():
|
||||
fields = {
|
||||
'R01': [
|
||||
CopyField(level=3, name='R01-APPL-ID', raw_name='(A)APPL-ID',
|
||||
pic_type='X(008)', pic_bytes=8),
|
||||
CopyField(level=3, name='R01-EMP-ID', raw_name='(A)EMP-ID',
|
||||
pic_type='9(008)', pic_bytes=8),
|
||||
]
|
||||
}
|
||||
|
||||
meta = ProgramMeta(
|
||||
program_id='TEST', program_name='', system_name='',
|
||||
pgm_type='メイン', pgm_pattern='マッチング(1:1)',
|
||||
summary_lines=[], prerequisites=[],
|
||||
files=[
|
||||
FileInfo(no=1, file_db_name='INPUT-FILE', identifier='R01',
|
||||
dd_name='TESTR01', io='I', copy_group='TESTREC',
|
||||
format='FB', record_len=80, medium='PS', remarks='')
|
||||
],
|
||||
keys=[], modules=[],
|
||||
process_detail='', output_records='',
|
||||
input_type='file', copy_fields=fields, db_tables={}
|
||||
)
|
||||
|
||||
builder = PromptBuilder()
|
||||
prompt = builder.build(
|
||||
meta=meta,
|
||||
rules_text='# 規則',
|
||||
group_descriptions=['テスト'],
|
||||
group_count=1
|
||||
)
|
||||
|
||||
assert 'R01-APPL-ID' in prompt
|
||||
assert 'X(008)' in prompt
|
||||
assert 'R01-EMP-ID' in prompt
|
||||
|
||||
|
||||
def test_build_db_prompt():
|
||||
meta = ProgramMeta(
|
||||
program_id='TESTDB', program_name='DB更新', system_name='',
|
||||
pgm_type='メイン', pgm_pattern='DB更新',
|
||||
summary_lines=[], prerequisites=[],
|
||||
files=[
|
||||
FileInfo(no=1, file_db_name='DB-TABLE', identifier='DB',
|
||||
dd_name='', io='I', copy_group='',
|
||||
format='', record_len=0, medium='DB', remarks='')
|
||||
],
|
||||
keys=[], modules=[],
|
||||
process_detail='', output_records='',
|
||||
input_type='db', copy_fields={}, db_tables={}
|
||||
)
|
||||
|
||||
builder = PromptBuilder()
|
||||
prompt = builder.build(
|
||||
meta=meta,
|
||||
rules_text='# DB更新規則',
|
||||
group_descriptions=['テスト'],
|
||||
group_count=1
|
||||
)
|
||||
|
||||
assert 'DB' in prompt or 'SQL' in prompt
|
||||
assert 'INSERT' in prompt
|
||||
Reference in New Issue
Block a user