cisd/docs/plans/2026-03-10-standard-init-script-templates-plan.md
2026-03-11 14:23:11 +08:00

116 lines
4.6 KiB
Markdown

# Standard Init Script Templates Implementation Plan
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
**Goal:** Add standard CISD post-init script templates to the repository and document how TMS should reference them after deployment to `/home/tms/bin`.
**Architecture:** Keep the runtime command model unchanged in TMS. Add script templates under the repository so deployment has a clear source of truth, then point `application.yml.example` and `README.md` to the deployed absolute paths. Tests only verify the repository artifacts and expected command content, not real database or nginx execution.
**Tech Stack:** Shell scripts, Spring Boot config examples, JUnit 5 filesystem assertions
---
### Task 1: Add repository script templates
**Files:**
- Create: `/Users/waner/Work/CISD/文档/tms-framework/scripts/standard-init/apply_standard_db.sh`
- Create: `/Users/waner/Work/CISD/文档/tms-framework/scripts/standard-init/start_standard_apps.sh`
- Create: `/Users/waner/Work/CISD/文档/tms-framework/scripts/standard-init/start_standard_nginx.sh`
- Create: `/Users/waner/Work/CISD/文档/tms-framework/scripts/standard-init/check_standard_runtime.sh`
- Test: `/Users/waner/Work/CISD/文档/tms-framework/src/test/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutorTest.java`
**Step 1: Write the failing test**
Add tests that assert the four script files exist in `scripts/standard-init/` and contain the expected key commands:
- DB script references `SCHEMA-DDL.sql`, `CMEP.sql`, `UP-ORG-INFO.sql`
- App start script references `start_cmsp.sh` and `start_cmtp.sh`
- Nginx start script references `/usr/local/nginx/sbin/nginx`
- Post-check script references CMSP/CMTP/nginx process checks and `organization.json`
**Step 2: Run test to verify it fails**
Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest#shouldExposeStandardInitScriptTemplates test`
Expected: FAIL because the scripts do not exist yet.
**Step 3: Write minimal implementation**
Create the four scripts with:
- `#!/bin/bash`
- `set -euo pipefail`
- environment variable placeholders for preset credentials where needed
- comments limited to critical operational assumptions
**Step 4: Run test to verify it passes**
Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest#shouldExposeStandardInitScriptTemplates test`
Expected: PASS
**Step 5: Commit**
```bash
git add scripts/standard-init src/test/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutorTest.java
git commit -m "feat: add standard init script templates"
```
### Task 2: Wire deployment-facing config examples
**Files:**
- Modify: `/Users/waner/Work/CISD/文档/tms-framework/config/application.yml.example`
- Modify: `/Users/waner/Work/CISD/文档/tms-framework/README.md`
- Test: `/Users/waner/Work/CISD/文档/tms-framework/src/test/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutorTest.java`
**Step 1: Write the failing test**
Add a test that asserts:
- `application.yml.example` points the four command properties to `/home/tms/bin/*.sh`
- `README.md` documents the repository source path `scripts/standard-init/` and the target deploy path `/home/tms/bin`
**Step 2: Run test to verify it fails**
Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest#shouldDocumentStandardInitScriptTemplateDeployment test`
Expected: FAIL because the docs/config are not updated yet.
**Step 3: Write minimal implementation**
Update example config and README with:
- exact deployed command values
- copy/deploy note from `scripts/standard-init/` to `/home/tms/bin`
- required environment variables for DB script
**Step 4: Run test to verify it passes**
Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest#shouldDocumentStandardInitScriptTemplateDeployment test`
Expected: PASS
**Step 5: Commit**
```bash
git add config/application.yml.example README.md src/test/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutorTest.java
git commit -m "docs: wire standard init script template deployment"
```
### Task 3: Final verification
**Files:**
- Verify only
**Step 1: Run focused tests**
Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest test`
Expected: PASS
**Step 2: Run init test suite**
Run: `mvn -q -Dtest=InitServiceTest,ConfigurableInitStepExecutorTest test`
Expected: PASS
**Step 3: Run compile**
Run: `mvn -q -DskipTests compile`
Expected: PASS
**Step 4: Review git diff**
Run: `git diff -- scripts/standard-init config/application.yml.example README.md src/test/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutorTest.java`
Expected: only script templates, config example, README, and tests changed.