task-d.7.9
This commit is contained in:
749
plans/task-d.7.9.md
Normal file
749
plans/task-d.7.9.md
Normal file
@@ -0,0 +1,749 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user