73 lines
4.1 KiB
Markdown
73 lines
4.1 KiB
Markdown
# Frontend Action Slots 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 generic page-slot binding layer so generated frontend menus can receive specific business actions on list rows or detail page buttons.
|
|
|
|
**Architecture:** Extend the existing blueprint DTOs and safe business-action DSL. Keep backend action generation table-owned, but add frontend slot grouping for Velocity templates and compatibility fallback for legacy projects.
|
|
|
|
**Tech Stack:** Java 8, Spring Boot, Jackson/Fastjson2, Velocity, JUnit 4, Mockito, Vue3, Element Plus.
|
|
|
|
---
|
|
|
|
### Task 1: Add DTOs And Request Propagation
|
|
|
|
**Files:**
|
|
- Create: `ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/AppPageDesign.java`
|
|
- Create: `ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessActionUiBindingDesign.java`
|
|
- Modify: `ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/AppBlueprintDesign.java`
|
|
- Modify: `ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessActionDesign.java`
|
|
- Modify: `ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateBusinessBlueprintRequest.java`
|
|
- Modify: `ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/AiGenerationTaskWorker.java`
|
|
- Test: `ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/AiGenerationTaskServiceImplTest.java`
|
|
|
|
- [ ] Add failing test that proves app blueprint is available when a `business_blueprint` task executes.
|
|
- [ ] Run `mvn -pl ruoyi-generator -Dtest=AiGenerationTaskServiceImplTest test` and verify RED.
|
|
- [ ] Add DTO fields and copy `source.getAppBlueprint()` into `GenerateBusinessBlueprintRequest`.
|
|
- [ ] Re-run the targeted test and verify GREEN.
|
|
|
|
### Task 2: Prompt And Validation
|
|
|
|
**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`
|
|
- Test: `ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/AiGenerateServiceImplTest.java`
|
|
|
|
- [ ] Add failing tests for valid `uiBindings` and unknown `pageCode`.
|
|
- [ ] Run `mvn -pl ruoyi-generator -Dtest=AiGenerateServiceImplTest test` and verify RED.
|
|
- [ ] Include app blueprint JSON and page-slot instructions in the business blueprint prompt.
|
|
- [ ] Normalize empty binding collections and validate page codes, slots, components, targets, and input mappings.
|
|
- [ ] Re-run targeted tests and verify GREEN.
|
|
|
|
### Task 3: Slot Grouping For Velocity
|
|
|
|
**Files:**
|
|
- Modify: `ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenProjectServiceImpl.java`
|
|
- Test: `ruoyi-generator/src/test/java/com/ruoyi/generator/service/GenProjectServiceImplTest.java`
|
|
|
|
- [ ] Add failing test that expects `slotBusinessActions` to group actions by `pageCode:slot`.
|
|
- [ ] Run `mvn -pl ruoyi-generator -Dtest=GenProjectServiceImplTest test` and verify RED.
|
|
- [ ] Build `slotBusinessActions` in `prepareVelocityContext` for table templates.
|
|
- [ ] Keep `tableBusinessActions` as compatibility fallback.
|
|
- [ ] Re-run targeted tests and verify GREEN.
|
|
|
|
### Task 4: Vue3 Template Slots
|
|
|
|
**Files:**
|
|
- Modify: `sql/business_blueprint_templates.sql`
|
|
- Modify: `sql/db.sql`
|
|
- Test: `ruoyi-generator/src/test/java/com/ruoyi/generator/service/GenProjectServiceImplTest.java`
|
|
|
|
- [ ] Add failing template assertions for `list.rowActions` and `detail.primaryActions`.
|
|
- [ ] Run `mvn -pl ruoyi-generator -Dtest=GenProjectServiceImplTest test` and verify RED.
|
|
- [ ] Update Vue3 list template to render row slot actions.
|
|
- [ ] Update Vue3 detail template to render detail primary actions.
|
|
- [ ] Sync the same template seed into `sql/db.sql`.
|
|
- [ ] Re-run targeted tests and verify GREEN.
|
|
|
|
### Task 5: Verification
|
|
|
|
- [ ] Run `mvn -pl ruoyi-generator -Dtest=AiGenerateServiceImplTest,AiGenerationTaskServiceImplTest,GenProjectServiceImplTest test`.
|
|
- [ ] Run relevant frontend unit tests if changed files require it.
|
|
- [ ] Inspect `git diff --stat` to ensure only expected files changed.
|