2.1 KiB
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:
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:
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:
mvn -pl ruoyi-generator -Dtest=QingTemplateSupportTest#qingPortalTreatsLegacyMenuCodeAsPrimaryMenu test
Expected: PASS.
- Step 3: Run related menu hierarchy tests
Run:
mvn -pl ruoyi-generator -Dtest=QingTemplateSupportTest test
Expected: all QingTemplateSupportTest tests pass.