Document business effect amount prompt fix
This commit is contained in:
@@ -0,0 +1,50 @@
|
|||||||
|
# Business Effect Amount Prompt Fix Design
|
||||||
|
|
||||||
|
## Problem
|
||||||
|
|
||||||
|
Business blueprint generation can fail with `Business effect amount is invalid`.
|
||||||
|
The validator correctly limits `INCREASE_NUMBER` and `DECREASE_NUMBER` amounts to
|
||||||
|
numeric literals or `${param.field}` placeholders, but neither the initial AI
|
||||||
|
prompt nor the correction prompt states that contract explicitly.
|
||||||
|
|
||||||
|
The dynamic prompt example also contains no numeric effect, so the model may
|
||||||
|
return an empty amount or an arithmetic expression such as `stock - 1`. A single
|
||||||
|
correction attempt receives the same incomplete guidance and can fail again.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
Keep the existing safe DSL and validator unchanged. Add one shared prompt
|
||||||
|
constraint that is included in both initial generation and correction prompts:
|
||||||
|
|
||||||
|
- `INCREASE_NUMBER` and `DECREASE_NUMBER` require `targetTable`, `targetField`,
|
||||||
|
`conditionFields`, and a non-empty `amount`.
|
||||||
|
- `amount`, `minValue`, and `NUMBER_GTE.compareValue` may only be numeric
|
||||||
|
literals or `${param.saved_column}` placeholders.
|
||||||
|
- Arithmetic expressions such as `stock - 1`, SQL fragments, units, and
|
||||||
|
descriptive text are forbidden.
|
||||||
|
- `DECREASE_NUMBER.minValue` may be omitted; the generated runtime already
|
||||||
|
defaults it to zero.
|
||||||
|
|
||||||
|
Do not infer or default a missing amount because that could silently change
|
||||||
|
business behavior.
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
Extract the numeric-expression guidance into a small prompt helper in
|
||||||
|
`AiGenerateServiceImpl`. Call it from both `buildBusinessBlueprintPrompt` and
|
||||||
|
`buildBusinessBlueprintCorrectionPrompt`.
|
||||||
|
|
||||||
|
No DTO, persistence, template, or validator changes are required.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
Add regression assertions proving:
|
||||||
|
|
||||||
|
1. The initial business-blueprint prompt describes the allowed numeric forms
|
||||||
|
and rejects arithmetic expressions.
|
||||||
|
2. A correction prompt produced after an invalid amount contains the same
|
||||||
|
numeric constraint and the validation error.
|
||||||
|
3. Existing valid numeric effects still parse and persist.
|
||||||
|
|
||||||
|
Run the targeted `AiGenerateServiceImplTest` suite, followed by the generator
|
||||||
|
module tests if the targeted suite passes.
|
||||||
Reference in New Issue
Block a user