feat: expand EasyCode software factory workflows

This commit is contained in:
王鹏
2026-07-15 12:48:50 +08:00
parent fcfa4374d7
commit 79dea897bc
1108 changed files with 163774 additions and 21593 deletions

View File

@@ -0,0 +1,73 @@
# Legacy Menu Code Navigation 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:** Prevent legacy business menu codes from being rendered as artificial English parent menus.
**Architecture:** Keep the existing page-design navigation group builder, but
derive parent relationships only from explicit navigation metadata. Preserve
`menu_code` as the stable key for primary groups.
**Tech Stack:** Java 8, Apache Velocity, JUnit 4, Maven
---
### Task 1: Add the regression test
**Files:**
- Test: `ruoyi-generator/src/test/java/com/ruoyi/generator/util/QingTemplateSupportTest.java`
- [ ] **Step 1: Write the failing test**
Create a frontend page design with:
```java
page.setPageCode("announcement_list_page");
page.setMenuCode("announcements");
page.setPageName("\u516c\u544a\u5217\u8868");
page.setLayoutJson("{\"canvas\":\"frontend-list-v1\",\"regions\":[]}");
```
Render `qing/vue-app.vue.vm` and assert that the page name is a clickable
primary menu, while `announcements` is not rendered as a directory.
- [ ] **Step 2: Run the test to verify it fails**
Run:
```text
mvn -pl ruoyi-generator -Dtest=QingTemplateSupportTest#qingPortalTreatsLegacyMenuCodeAsPrimaryMenu test
```
Expected: FAIL because the rendered application contains an
`announcements` directory.
### Task 2: Correct the hierarchy inference
**Files:**
- Modify: `ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java`
- [ ] **Step 1: Write the minimal implementation**
Change `pageDesignParentMenuCode` so it returns only the explicit
`navigation.parentMenuCode`. Do not infer parentage from `menu_code`.
- [ ] **Step 2: Run the regression test**
Run:
```text
mvn -pl ruoyi-generator -Dtest=QingTemplateSupportTest#qingPortalTreatsLegacyMenuCodeAsPrimaryMenu test
```
Expected: PASS.
- [ ] **Step 3: Run related menu hierarchy tests**
Run:
```text
mvn -pl ruoyi-generator -Dtest=QingTemplateSupportTest test
```
Expected: all `QingTemplateSupportTest` tests pass.