Files
yidaima/RuoYi-Vue/docs/superpowers/plans/2026-06-18-strict-business-action-condition-fields.md

52 lines
2.6 KiB
Markdown

# Strict Business Action Condition Fields Implementation Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Reject business-action condition fields that do not belong to their configured target table and stop generated SQL from falling back to unrelated request fields.
**Architecture:** Keep `conditionFields` as target-table SQL columns. Normalize and validate against a table-scoped column map, require explicit conditions for condition-based effects, and render those validated fields directly in the Qing runtime template.
**Tech Stack:** Java 8, Spring Boot, Jackson, Apache Velocity, JUnit 4, Maven.
---
### Task 1: Add table-scoped validation regression tests
**Files:**
- Modify: `ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/AiGenerateServiceImplTest.java`
- [ ] Add a business blueprint where `book_info` contains `id` but another table contains `book_id`.
- [ ] Configure a rule targeting `book_info` with `conditionFields: ["book_id"]`.
- [ ] Assert generation throws `ServiceException` identifying `book_info.book_id`.
- [ ] Run the targeted test and confirm it fails before implementation.
### Task 2: Enforce target-table field ownership
**Files:**
- Modify: `ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/AiGenerateServiceImpl.java`
- Modify: `ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/AiBusinessBlueprintValidator.java`
- [ ] Normalize rule and effect condition fields using columns from their own `targetTable`.
- [ ] Validate target fields, condition fields, and effect value keys against their own target table.
- [ ] Require explicit condition fields for update and numeric effects.
- [ ] Run the targeted service tests and confirm they pass.
### Task 3: Remove runtime compatibility fallbacks
**Files:**
- Modify: `ruoyi-generator/src/main/resources/qing/serviceImpl.java.vm`
- Modify: `ruoyi-generator/src/test/java/com/ruoyi/generator/util/QingTemplateSupportTest.java`
- Modify: `sql/qing_templates.sql`
- Modify: `sql/db.sql`
- [ ] Render only `conditionFields`.
- [ ] Remove `conditionColumns` and request-field fallback behavior.
- [ ] Assert generated helpers build `where id = ?` for valid conditions.
- [ ] Synchronize bundled templates with SQL seed copies.
### Task 4: Verify
- [ ] Run `mvn -pl ruoyi-generator -Dtest=AiGenerateServiceImplTest,QingTemplateSupportTest test`.
- [ ] Run `mvn -pl ruoyi-generator test`.
- [ ] Inspect the final diff to ensure unrelated user changes remain untouched.