7.8 KiB
Business Blueprint Draft 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: Add a safe business blueprint draft flow so AI can return business actions such as borrow and return alongside generated table design.
Architecture: Extend the existing DatabaseDesignResponse draft contract with businessActions, normalize and validate action metadata in the backend, persist it on front_project, expose it to the Vue workbench, and pass it into generated project Velocity context. The MVP stores blueprint JSON on the project draft and keeps actual code expansion template-ready rather than hardcoding generated business methods in this pass.
Tech Stack: Java 8, Spring Boot, MyBatis, Fastjson2/Jackson, JUnit 4/Mockito, Vue 3, Element Plus, Velocity.
File Structure
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessActionDesign.java: new DTO for one business action draft.ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessActionEffectDesign.java: new DTO for normalized effects such as update/insert/status change.ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/DatabaseDesignResponse.java: addList<BusinessActionDesign> businessActions.ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/FrontProject.java: addbusinessBlueprint.ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenProject.java: add transientbusinessActions.ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/AiBusinessBlueprintValidator.java: new validator for action codes, table references, request fields, rule/effect limits, and safe strings.ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/AiGenerateServiceImpl.java: prompt for business actions, parse aliases, normalize actions, validate blueprint, and persist JSON.ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectServiceImpl.java: save/load blueprint JSON with database draft.ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectConverter.java: copy business actions intoGenProject.ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java: exposebusinessActionsto project-level templates.ruoyi-generator/src/main/resources/mapper/front/FrontProjectMapper.xml: mapbusiness_blueprint.sql/front_workbench.sqlandsql/db.sql: addbusiness_blueprint longtext.easycode-web/src/views/GenerateView.vue: show business blueprint draft returned by AI and saved with the database design.- Backend tests in
AiGenerateServiceImplTest,FrontProjectServiceImplTest,FrontProjectPreviewServiceImplTest.
Task 1: Backend Blueprint DTO And Validation
Files:
-
Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessActionDesign.java -
Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessActionEffectDesign.java -
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/DatabaseDesignResponse.java -
Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/AiBusinessBlueprintValidator.java -
Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/AiGenerateServiceImplTest.java -
Step 1: Write failing tests
Add tests asserting AI returns businessActions, unsafe action codes are normalized, and actions referencing missing tables are rejected.
- Step 2: Run tests and verify RED
Run: mvn -pl ruoyi-generator -Dtest=AiGenerateServiceImplTest test
Expected: compile/test failure because getBusinessActions() and validator classes do not exist.
- Step 3: Add DTOs and validator
Add action fields: code, name, ownerTable, method, path, transaction, requestFields, rules, effects.
Add effect fields: type, targetTable, targetField, value, description.
Validator rules: max 12 actions, code/path safe, owner table exists, request fields exist in any table, effect tables exist, rule/effect text length bounded.
- Step 4: Run tests and verify GREEN
Run: mvn -pl ruoyi-generator -Dtest=AiGenerateServiceImplTest test
Expected: PASS.
Task 2: Persist And Reload Blueprint Draft
Files:
-
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/FrontProject.java -
Modify:
ruoyi-generator/src/main/resources/mapper/front/FrontProjectMapper.xml -
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectServiceImpl.java -
Modify:
sql/front_workbench.sql -
Modify:
sql/db.sql -
Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/FrontProjectServiceImplTest.java -
Step 1: Write failing tests
Add tests asserting saveDatabase() writes businessBlueprint JSON and getDatabase() returns businessActions.
- Step 2: Run tests and verify RED
Run: mvn -pl ruoyi-generator -Dtest=FrontProjectServiceImplTest test
Expected: failure because businessBlueprint is not mapped or returned.
- Step 3: Implement persistence
Add business_blueprint longtext to front project SQL, map it in MyBatis, add FrontProject.businessBlueprint, serialize request.getBusinessActions() on save, and deserialize on get.
- Step 4: Run tests and verify GREEN
Run: mvn -pl ruoyi-generator -Dtest=FrontProjectServiceImplTest test
Expected: PASS.
Task 3: Expose Blueprint To Preview Generation
Files:
-
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenProject.java -
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectConverter.java -
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java -
Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/FrontProjectPreviewServiceImplTest.java -
Step 1: Write failing test
Add a test that converts a front draft with one business action and asserts GenProject.businessActions is passed into the generation service and project Velocity context can read it.
- Step 2: Run test and verify RED
Run: mvn -pl ruoyi-generator -Dtest=FrontProjectPreviewServiceImplTest test
Expected: compile/test failure because GenProject.getBusinessActions() does not exist.
- Step 3: Implement conversion and Velocity context
Add transient businessActions to GenProject, copy it in FrontProjectConverter, and put businessActions plus hasBusinessActions into VelocityUtils.prepareContextProject.
- Step 4: Run test and verify GREEN
Run: mvn -pl ruoyi-generator -Dtest=FrontProjectPreviewServiceImplTest test
Expected: PASS.
Task 4: Show Blueprint Draft In Workbench
Files:
-
Modify:
easycode-web/src/views/GenerateView.vue -
Step 1: Add frontend normalization
Extend normalizeDatabase() with businessActions: Array.isArray(data.businessActions) ? data.businessActions : [].
- Step 2: Add compact UI
Add a full-width panel under database design that lists action name, method, path, owner table, rules, and effects. Keep it read-only for this MVP.
- Step 3: Build frontend
Run: use the existing Node build command for easycode-web if dependencies are available.
Expected: build passes, or dependency/network blocker is reported.
Task 5: Full Verification
Files:
-
No new files.
-
Step 1: Run focused backend tests
Run: mvn -pl ruoyi-generator -Dtest=AiGenerateServiceImplTest,FrontProjectServiceImplTest,FrontProjectPreviewServiceImplTest test
Expected: PASS.
- Step 2: Run final status check
Run: git status --short
Expected: only intended files modified.