750 lines
8.1 KiB
Markdown
750 lines
8.1 KiB
Markdown
# Task D.7.9 – Installation Profiles & Setup Plugin Registry
|
||
|
||
## Objective
|
||
|
||
Transform the ALLA OS Setup Platform into a fully extensible platform by introducing Installation Profiles and a Setup Plugin Registry.
|
||
|
||
The current Setup Platform (D.7.1–D.7.10) already supports:
|
||
|
||
- Readiness
|
||
- Verification
|
||
- CSV Templates
|
||
- CSV Preview
|
||
- CSV Commit
|
||
- Setup Wizard
|
||
- Setup State
|
||
- Seed Manifest
|
||
- Reset / Reseed
|
||
- Golden Dataset
|
||
|
||
D.7.9 must remove remaining CRM-specific assumptions so future modules (CRM, HR, Asset, Inventory, Purchase, Service, etc.) can integrate into the Setup Platform without modifying the core wizard.
|
||
|
||
No existing setup behavior may regress.
|
||
|
||
---
|
||
|
||
# Review Before Implementation
|
||
|
||
Review
|
||
|
||
- AGENTS.md
|
||
- plans/task-d.7.md
|
||
- plans/task-d.7.1.md
|
||
- plans/task-d.7.2.md
|
||
- plans/task-d.7.3.md
|
||
- plans/task-d.7.4.md
|
||
- plans/task-d.7.5.md
|
||
- plans/task-d.7.6.md
|
||
- plans/task-d.7.7.md
|
||
- plans/task-d.7.8.md
|
||
- plans/task-d.7.10.md
|
||
|
||
Review
|
||
|
||
docs/setup/*
|
||
|
||
Review
|
||
|
||
setup/templates/*
|
||
|
||
Review
|
||
|
||
setup/golden-dataset/*
|
||
|
||
Review
|
||
|
||
src/features/setup/**
|
||
|
||
---
|
||
|
||
# Objective
|
||
|
||
Replace hardcoded setup behavior with configuration-driven module registration.
|
||
|
||
The Setup Platform must become reusable by every ALLA OS module.
|
||
|
||
---
|
||
|
||
# Implementation Scope
|
||
|
||
Create
|
||
|
||
src/features/setup/plugins/
|
||
|
||
Recommended structure
|
||
|
||
src/features/setup/plugins/
|
||
|
||
plugin-registry.ts
|
||
|
||
plugin-types.ts
|
||
|
||
installation-profile.ts
|
||
|
||
crm/
|
||
|
||
crm-setup-plugin.ts
|
||
|
||
crm-installation-profile.ts
|
||
|
||
foundation/
|
||
|
||
foundation-plugin.ts
|
||
|
||
---
|
||
|
||
# Installation Profiles
|
||
|
||
Introduce Installation Profiles.
|
||
|
||
Supported profiles
|
||
|
||
minimal
|
||
|
||
crm_starter
|
||
|
||
crm_demo
|
||
|
||
production
|
||
|
||
restore_backup
|
||
|
||
custom
|
||
|
||
Each profile defines
|
||
|
||
- visible wizard steps
|
||
- required templates
|
||
- verification checks
|
||
- setup sequence
|
||
- supported reset scopes
|
||
- reseed targets
|
||
- default options
|
||
|
||
Profile interface
|
||
|
||
```ts
|
||
export interface InstallationProfile {
|
||
|
||
id:string;
|
||
|
||
name:string;
|
||
|
||
description:string;
|
||
|
||
wizardSteps:string[];
|
||
|
||
requiredTemplates:string[];
|
||
|
||
verificationChecks:string[];
|
||
|
||
resetScopes:string[];
|
||
|
||
reseedTargets:string[];
|
||
|
||
defaultOptions:Record<string,unknown>;
|
||
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
# Setup Plugin Interface
|
||
|
||
Create
|
||
|
||
plugin-types.ts
|
||
|
||
```ts
|
||
export interface SetupPlugin {
|
||
|
||
id:string;
|
||
|
||
version:string;
|
||
|
||
displayName:string;
|
||
|
||
description:string;
|
||
|
||
installationProfiles():InstallationProfile[];
|
||
|
||
templates():SetupTemplateDefinition[];
|
||
|
||
wizardSteps():SetupWizardStep[];
|
||
|
||
readinessChecks():SetupReadinessCheck[];
|
||
|
||
verificationChecks():SetupVerificationCheck[];
|
||
|
||
previewValidators():CsvPreviewValidator[];
|
||
|
||
importHandlers():CsvImporter[];
|
||
|
||
resetScopes():ResetScopeDefinition[];
|
||
|
||
reseedTargets():ReseedTargetDefinition[];
|
||
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
# Plugin Registry
|
||
|
||
Create
|
||
|
||
plugin-registry.ts
|
||
|
||
Responsibilities
|
||
|
||
Register plugins
|
||
|
||
Resolve plugins
|
||
|
||
Resolve installation profiles
|
||
|
||
Resolve templates
|
||
|
||
Resolve verification checks
|
||
|
||
Resolve reset scopes
|
||
|
||
Resolve reseed targets
|
||
|
||
Resolve wizard steps
|
||
|
||
Example
|
||
|
||
registerPlugin(new FoundationPlugin());
|
||
|
||
registerPlugin(new CrmSetupPlugin());
|
||
|
||
---
|
||
|
||
# Foundation Plugin
|
||
|
||
Move common setup behavior into Foundation Plugin.
|
||
|
||
Foundation Plugin owns
|
||
|
||
Readiness
|
||
|
||
Verification
|
||
|
||
Setup State
|
||
|
||
Seed Manifest
|
||
|
||
CSV Framework
|
||
|
||
Reset Framework
|
||
|
||
Golden Dataset framework
|
||
|
||
No CRM assumptions.
|
||
|
||
---
|
||
|
||
# CRM Setup Plugin
|
||
|
||
CRM Plugin owns
|
||
|
||
CRM Templates
|
||
|
||
CRM CSV Importers
|
||
|
||
CRM Verification
|
||
|
||
CRM Wizard Steps
|
||
|
||
CRM Reset Scope
|
||
|
||
CRM Golden Dataset registration
|
||
|
||
CRM Approval registration
|
||
|
||
CRM Document Sequence registration
|
||
|
||
CRM Reports registration
|
||
|
||
---
|
||
|
||
# Dynamic Wizard
|
||
|
||
Current wizard should stop hardcoding steps.
|
||
|
||
Instead
|
||
|
||
Plugin Registry
|
||
|
||
↓
|
||
|
||
Installation Profile
|
||
|
||
↓
|
||
|
||
Resolve Wizard Steps
|
||
|
||
↓
|
||
|
||
Render Wizard
|
||
|
||
Adding a module must not require editing the wizard.
|
||
|
||
---
|
||
|
||
# Dynamic Verification
|
||
|
||
Current verification service should allow plugins to register checks.
|
||
|
||
Instead of
|
||
|
||
CRM Check
|
||
|
||
Approval Check
|
||
|
||
PDF Check
|
||
|
||
Hardcoded
|
||
|
||
Use
|
||
|
||
Plugin Registry
|
||
|
||
↓
|
||
|
||
Collect Checks
|
||
|
||
↓
|
||
|
||
Execute
|
||
|
||
↓
|
||
|
||
Aggregate Report
|
||
|
||
---
|
||
|
||
# Dynamic Readiness
|
||
|
||
Allow plugins to register readiness checks.
|
||
|
||
Example
|
||
|
||
Storage Plugin
|
||
|
||
↓
|
||
|
||
Storage Check
|
||
|
||
PDF Plugin
|
||
|
||
↓
|
||
|
||
Template Check
|
||
|
||
CRM Plugin
|
||
|
||
↓
|
||
|
||
CRM Readiness
|
||
|
||
---
|
||
|
||
# Dynamic Template Registry
|
||
|
||
Extend
|
||
|
||
setup/templates/templates.json
|
||
|
||
Support
|
||
|
||
plugin
|
||
|
||
profile
|
||
|
||
visibility
|
||
|
||
Example
|
||
|
||
{
|
||
"file":"customers.csv",
|
||
"plugin":"crm",
|
||
"profiles":[
|
||
"crm_demo",
|
||
"production"
|
||
]
|
||
}
|
||
|
||
Wizard automatically filters templates.
|
||
|
||
---
|
||
|
||
# Dynamic Navigation
|
||
|
||
Wizard should display
|
||
|
||
Installed Modules
|
||
|
||
Foundation
|
||
|
||
CRM
|
||
|
||
Approval
|
||
|
||
Storage
|
||
|
||
Future
|
||
|
||
HR
|
||
|
||
Asset
|
||
|
||
Inventory
|
||
|
||
Purchase
|
||
|
||
Modules not installed
|
||
|
||
↓
|
||
|
||
Hidden
|
||
|
||
---
|
||
|
||
# Profile Resolution
|
||
|
||
Selecting
|
||
|
||
crm_demo
|
||
|
||
Automatically
|
||
|
||
Enable
|
||
|
||
CRM plugin
|
||
|
||
Foundation plugin
|
||
|
||
Demo dataset
|
||
|
||
CRM templates
|
||
|
||
CRM verification
|
||
|
||
Demo reset
|
||
|
||
Disable
|
||
|
||
Restore Backup steps
|
||
|
||
Selecting
|
||
|
||
minimal
|
||
|
||
Only
|
||
|
||
Foundation
|
||
|
||
Verification
|
||
|
||
No CRM
|
||
|
||
---
|
||
|
||
# API Updates
|
||
|
||
Extend
|
||
|
||
GET /api/setup/templates
|
||
|
||
Include
|
||
|
||
plugin
|
||
|
||
profile
|
||
|
||
visible
|
||
|
||
supported
|
||
|
||
Update
|
||
|
||
GET /api/setup/readiness
|
||
|
||
Collect plugin readiness.
|
||
|
||
Update
|
||
|
||
POST /api/setup/verify
|
||
|
||
Collect plugin verification.
|
||
|
||
No API breaking changes.
|
||
|
||
---
|
||
|
||
# Setup Wizard Updates
|
||
|
||
Wizard
|
||
|
||
↓
|
||
|
||
Load Installation Profiles
|
||
|
||
↓
|
||
|
||
User selects profile
|
||
|
||
↓
|
||
|
||
Resolve Plugin Graph
|
||
|
||
↓
|
||
|
||
Build Wizard
|
||
|
||
↓
|
||
|
||
Render Steps
|
||
|
||
↓
|
||
|
||
Run Setup
|
||
|
||
Wizard must no longer contain CRM-specific logic.
|
||
|
||
---
|
||
|
||
# Golden Dataset Integration
|
||
|
||
Allow every plugin to register
|
||
|
||
Golden Dataset
|
||
|
||
Example
|
||
|
||
CRM
|
||
|
||
↓
|
||
|
||
setup/golden-dataset/crm/
|
||
|
||
Future
|
||
|
||
HR
|
||
|
||
↓
|
||
|
||
setup/golden-dataset/hr/
|
||
|
||
Asset
|
||
|
||
↓
|
||
|
||
setup/golden-dataset/asset/
|
||
|
||
---
|
||
|
||
# Future Module Example
|
||
|
||
Adding
|
||
|
||
Asset
|
||
|
||
Should require only
|
||
|
||
registerPlugin(
|
||
|
||
AssetSetupPlugin
|
||
|
||
);
|
||
|
||
No modification
|
||
|
||
Wizard
|
||
|
||
Verification
|
||
|
||
Reset
|
||
|
||
Template Registry
|
||
|
||
CSV Engine
|
||
|
||
---
|
||
|
||
# Out Of Scope
|
||
|
||
New business module
|
||
|
||
HR implementation
|
||
|
||
Asset implementation
|
||
|
||
Inventory implementation
|
||
|
||
Purchase implementation
|
||
|
||
Plugin marketplace
|
||
|
||
External plugin loading
|
||
|
||
Remote plugins
|
||
|
||
Installation package download
|
||
|
||
Backup restore implementation
|
||
|
||
CRM business behavior changes
|
||
|
||
---
|
||
|
||
# Deliverables
|
||
|
||
Required
|
||
|
||
src/features/setup/plugins/plugin-types.ts
|
||
|
||
src/features/setup/plugins/plugin-registry.ts
|
||
|
||
src/features/setup/plugins/installation-profile.ts
|
||
|
||
src/features/setup/plugins/foundation/foundation-plugin.ts
|
||
|
||
src/features/setup/plugins/crm/crm-setup-plugin.ts
|
||
|
||
src/features/setup/plugins/crm/crm-installation-profile.ts
|
||
|
||
Update
|
||
|
||
Setup Wizard
|
||
|
||
Readiness Service
|
||
|
||
Verification Service
|
||
|
||
Template Metadata Service
|
||
|
||
Template Registry
|
||
|
||
Optional
|
||
|
||
docs/setup/setup-plugin-development.md
|
||
|
||
docs/setup/installation-profiles.md
|
||
|
||
---
|
||
|
||
# Acceptance Criteria
|
||
|
||
✓ Installation Profiles exist.
|
||
|
||
✓ Plugin Registry exists.
|
||
|
||
✓ Foundation Plugin exists.
|
||
|
||
✓ CRM Plugin exists.
|
||
|
||
✓ Wizard builds dynamically from selected profile.
|
||
|
||
✓ Wizard no longer hardcodes CRM steps.
|
||
|
||
✓ Readiness collects plugin checks.
|
||
|
||
✓ Verification collects plugin checks.
|
||
|
||
✓ Template registry supports plugin ownership.
|
||
|
||
✓ Template registry supports profile visibility.
|
||
|
||
✓ Golden Dataset supports plugin registration.
|
||
|
||
✓ Future modules can integrate by registering one plugin.
|
||
|
||
✓ Existing Setup Wizard behavior remains unchanged.
|
||
|
||
✓ Existing APIs remain backward compatible.
|
||
|
||
✓ Existing CSV Preview/Commit logic is unaffected.
|
||
|
||
✓ Typecheck passes.
|
||
|
||
✓ Existing setup integration tests continue to pass.
|
||
|
||
---
|
||
|
||
# Suggested Verification
|
||
|
||
Run
|
||
|
||
npm run typecheck
|
||
|
||
npm run test:setup
|
||
|
||
Verify
|
||
|
||
Minimal Profile
|
||
|
||
↓
|
||
|
||
Foundation only
|
||
|
||
CRM Starter
|
||
|
||
↓
|
||
|
||
CRM steps only
|
||
|
||
CRM Demo
|
||
|
||
↓
|
||
|
||
CRM + Demo dataset
|
||
|
||
Production
|
||
|
||
↓
|
||
|
||
Production profile
|
||
|
||
Confirm
|
||
|
||
Readiness still PASS
|
||
|
||
Verification still PASS
|
||
|
||
CSV Preview unchanged
|
||
|
||
CSV Commit unchanged
|
||
|
||
Setup Resume unchanged
|
||
|
||
Golden Dataset unchanged
|
||
|
||
Register a temporary mock plugin
|
||
|
||
↓
|
||
|
||
Confirm
|
||
|
||
Wizard automatically includes plugin steps
|
||
|
||
Verification automatically executes plugin checks
|
||
|
||
Template API exposes plugin templates
|
||
|
||
Without modifying Setup Wizard source code.
|
||
|
||
---
|
||
|
||
# Completion Criteria
|
||
|
||
After D.7.9
|
||
|
||
The ALLA OS Setup Platform is officially module-driven.
|
||
|
||
All future modules (CRM, HR, Asset, Purchase, Inventory, Service, Calendar, etc.) must integrate through the Setup Plugin Registry rather than extending the Setup Wizard directly.
|
||
|
||
D.7.9 marks the architectural freeze of Setup Platform v1.0.
|