Files
yidaima/RuoYi-Vue/docs/superpowers/plans/2026-07-11-plugin-permission-target-executor.md

4.8 KiB

Plugin Permission Target Executor Implementation Plan

For agentic workers: Implement task-by-task with tests first. Steps use checkbox (- [ ]) syntax for tracking.

Goal: Deliver reviewed RuoYi permission contributions through a real, idempotent JDBC adapter with target ownership and conservative compensation.

Architecture: A strict JSON parser produces a semantic permission document. permission-jdbc:v1 reuses the isolated target connection and durable lease receipt, while a dedicated repository owns fixed prepared statements for sys_menu, sys_role_menu, and target ownership tables.

Tech Stack: Java 8, Spring Boot 2.5, JDBC, Fastjson2, MySQL 5.7-compatible SQL, H2 MySQL mode, JUnit 4, Vue 2.

Task 1: Permission Document Contract

Files:

  • Create: ruoyi-generator/src/main/java/com/ruoyi/generator/factory/plugin/execution/permission/PluginPermissionDocument.java

  • Create: ruoyi-generator/src/main/java/com/ruoyi/generator/factory/plugin/execution/permission/PluginPermissionDocumentParser.java

  • Test: ruoyi-generator/src/test/java/com/ruoyi/generator/factory/plugin/execution/permission/PluginPermissionDocumentParserTest.java

  • Write failing tests for a valid document, canonical roles, unknown fields, invalid identifiers, duplicate roles, and contribution-key mismatch.

  • Implement strict bounded JSON parsing and semantic fingerprints.

  • Run parser tests.

Task 2: Target Ownership Schema And Repository

Files:

  • Modify: sql/factory_plugin_sql_target.sql

  • Create: ruoyi-generator/src/main/java/com/ruoyi/generator/factory/plugin/execution/permission/PluginPermissionTargetRepository.java

  • Test: ruoyi-generator/src/test/java/com/ruoyi/generator/factory/plugin/PluginRegistrySchemaScriptTest.java

  • Add permission and role-grant ownership tables with active/removed lifecycle state.

  • Write fixed prepared-statement apply and compensate operations.

  • Reject unowned permission collisions, identity drift, missing owned grants, child resources, and unmanaged grants.

  • Keep removed ownership tombstones for replay safety.

Task 3: Real Permission Executor

Files:

  • Create: ruoyi-generator/src/main/java/com/ruoyi/generator/factory/plugin/execution/permission/PermissionJdbcPluginContributionTargetExecutor.java

  • Test: ruoyi-generator/src/test/java/com/ruoyi/generator/factory/plugin/execution/permission/PermissionJdbcPluginContributionTargetExecutorTest.java

  • Write failing H2 tests for apply/deduplication, compensation, collision rejection, and unmanaged-grant protection.

  • Support only PERMISSION + backend + idempotent=true and APPLY/ROLLBACK.

  • Reuse durable receipt leases and deterministic external receipts.

  • Sanitize every target failure.

Task 4: First Permission Delivery Plugin

Files:

  • Create: ruoyi-generator/src/main/java/com/ruoyi/generator/factory/plugin/delivery/PreviewPermissionBaselinePlugin.java

  • Create: ruoyi-generator/src/main/resources/plugin-delivery/preview-permission/generator-delivery-verify.json

  • Create: ruoyi-generator/src/main/resources/plugin-delivery/preview-permission/rollback-generator-delivery-verify.json

  • Test: ruoyi-generator/src/test/java/com/ruoyi/generator/factory/plugin/delivery/PreviewPermissionBaselinePluginTest.java

  • Publish one trusted reversible permission contribution.

  • Prove Registry, Transition Plan, trusted content resolution, apply, duplicate delivery, role grant, and compensation end to end.

Task 5: Probe And Admin Status

Files:

  • Modify: ruoyi-generator/src/main/java/com/ruoyi/generator/factory/plugin/execution/sql/PluginSqlTargetProbeService.java

  • Modify: ruoyi-generator/src/main/java/com/ruoyi/generator/factory/plugin/model/PluginSqlTargetProbeStatus.java

  • Modify: ruoyi-generator/src/test/java/com/ruoyi/generator/factory/plugin/execution/sql/PluginSqlTargetProbeServiceTest.java

  • Modify: ruoyi-ui/src/views/generator/plugin/index.vue

  • Modify: ruoyi-ui/test/pluginRegistryView.test.mjs

  • Require permission ownership tables only when permission-jdbc:v1 is configured.

  • Expose a non-secret permission-schema readiness state.

  • Treat SQL and permission JDBC routes as sharing isolated target readiness.

  • Run probe, static UI tests, and production build.

Task 6: Documentation And Regression

Files:

  • Modify: docs/superpowers/specs/2026-07-10-ai-software-factory-roadmap.md

  • Modify: docs/superpowers/plans/2026-07-11-plugin-permission-target-executor.md

  • Document activation, schema ownership, compensation boundaries, and remaining menu adapter work.

  • Run focused Plugin/permission/SQL/Outbox tests.

  • Run generator full regression against the 18 known baseline failures.

  • Run admin critical tests, frontend static tests, and production build.

  • Confirm EasyCode and RuoYi UI endpoints return HTTP 200.