Files
yidaima/RuoYi-Vue/docs/superpowers/plans/2026-07-11-preview-sql-delivery-rehearsal.md

4.4 KiB

Preview SQL Delivery Rehearsal Implementation Plan

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

Goal: Add the first reviewed real SQL delivery Plugin, a non-secret manual target probe, and an end-to-end isolated rehearsal.

Architecture: A normal installed FeaturePlugin owns immutable classpath apply/rollback SQL. Existing Plan 1.2 and sql-jdbc:v1 execute it. A separate read-only probe validates the guarded target connection and receipt ledger without executing a contribution.

Tech Stack: Java 8, Spring Boot 2.5, JDBC, Druid MySQL AST, H2 1.4.200, JUnit 4, Mockito, Vue 2.

Global Constraints

  • Installing the Plugin must not publish or execute it automatically.
  • The SQL target remains disabled by default.
  • Probe and Registry APIs must never expose URL, username, password, SQLState, or driver errors.
  • Tests use the real SQL resources, planner, resolver, parser, Executor, and H2 target ledger.
  • Existing plaintext development credentials and TLS verification settings remain out of scope by explicit user decision.

Task 1: Delivery Plugin Contract

Files:

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

  • Create: ruoyi-generator/src/main/resources/plugin-delivery/preview-baseline/V1__preview_delivery_baseline.sql

  • Create: ruoyi-generator/src/main/resources/plugin-delivery/preview-baseline/U1__preview_delivery_baseline.sql

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

  • Write failing tests for trusted manifest identity, declared payload/resource identity, idempotence, reversibility, and parser acceptance.

  • Implement the installed Plugin and dedicated apply/rollback resources.

  • Run the Plugin contract tests and confirm they pass.

Task 2: End-To-End Preview Rehearsal

Files:

  • Modify: ruoyi-generator/src/test/java/com/ruoyi/generator/factory/plugin/delivery/PreviewDatabaseBaselinePluginTest.java

  • Write a failing H2 test for Plan 1.2 apply, trusted re-resolution, execution, duplicate delivery, and compensation.

  • Reuse production planner, resolver, SQL parser, Executor, and target ledger in the test.

  • Confirm one marker row, one apply execution, one compensation execution, and final table removal.

Task 3: Read-Only Target Probe

Files:

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

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

  • Modify: ruoyi-generator/src/main/java/com/ruoyi/generator/controller/FeaturePluginController.java

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

  • Test: ruoyi-generator/src/test/java/com/ruoyi/generator/controller/FeaturePluginControllerTest.java

  • Write failing tests for disabled, invalid, ready, unreachable, and ledger-unavailable states.

  • Implement the guarded zero-row receipt-ledger probe and generic status messages.

  • Expose the permission-protected probe endpoint and prove the response model has no secret fields.

  • Run probe and controller tests and confirm they pass.

Task 4: Admin Probe State

Files:

  • Modify: ruoyi-ui/src/api/generator/plugin.js

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

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

  • Write a failing static contract for the probe API, loading state, result state, and non-secret rendering.

  • Add the manual probe command and concise last-result label to the Registry status band.

  • Run frontend static tests and the production build.

Task 5: Documentation And Regression

Files:

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

  • Modify: docs/superpowers/plans/2026-07-11-preview-sql-delivery-rehearsal.md

  • Document the first delivery Plugin, activation order, probe semantics, and remaining production boundary.

  • Run focused Plugin/SQL/probe tests.

  • Run the generator full regression and compare with the 18 documented baseline failures.

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

  • Confirm EasyCode and RuoYi UI endpoints return HTTP 200.