diff --git a/document/solutions/solution-basic.md.hbs b/document/solutions/solution-basic.md.hbs new file mode 100644 index 0000000..d278f1e --- /dev/null +++ b/document/solutions/solution-basic.md.hbs @@ -0,0 +1,35 @@ +# {{get (get (get solution 0) "data") "name"}} - Solution Design Document + +{{#each solution}} + +## Solution + +{{#with (get data "solution")}} +Name: {{name}} +Problem Statement: {{problem_statement}} +{{/with}} + +## Project + +{{#each (get data "project")}} +- Name: {{name}} +- Budget: {{budget}} +- Guide: {{guide}} +{{/each}} + +## Applications + +| Name | Type | Framework | +|------|------|-----------| +{{#each (get data "applications")}} +| {{name}} | {{type}} | {{framework}} | +{{/each}} + +## Stakeholders + +| Name | Title | Role | +|------|-------|------| +{{#each (get data "stakeholders")}} +| {{name}} | {{title}} | {{role}} | +{{/each}} +{{/each}} diff --git a/document/solutions/solution-design.md.hbs b/document/solutions/solution-design.md.hbs new file mode 100644 index 0000000..8e57409 --- /dev/null +++ b/document/solutions/solution-design.md.hbs @@ -0,0 +1,417 @@ +# {{get (get (get business_requirements 0) "data") "name"}} - Solution Design Document + +{{toc}} + +**Generated:** {{generated_date}} +**Version:** 1.0 +**Status:** Draft + +--- + +# Executive Summary + +This document provides a high-level solution design +for **{{get (get (get business_requirements 0) "data") "name"}}**. +It consolidates specifications across business requirements, security, APIs, databases, and deployment configurations. + +{{overviewDiagram "DIAGRAM"}} + +--- + +# 1. Business Requirements + +{{#if has_business_requirements}} +{{#each business_requirements}} +## {{get data "name"}} + +**Description:** {{get data "description"}} + +### Requirements + +{{#each (get data "requirements")}} +- **{{id}}**: {{title}} + - {{description}} + - Priority: {{priority}} +{{/each}} + +### Features + +{{#each (get data "features")}} +#### {{name}} +{{#each components}} +- {{this}} +{{/each}} +{{/each}} + +### Stakeholders + +| Name | Title | Role | +|------|-------|------| +{{#each (get data "stakeholders")}} +| {{name}} | {{title}} | {{role}} | +{{/each}} +{{/each}} +{{else}} +*No business requirements specifications found.* +{{/if}} + +--- + +# 2. Non-Functional Requirements + +{{#if has_nfr}} +{{#each non_functional_requirements}} + +### NFR Summary + +| ID | Category | Title | Target | +|----|----------|-------|--------| +{{#each (get data "requirements")}} +| {{id}} | {{category}} | {{title}} | {{target}} | +{{/each}} + +{{/each}} +{{else}} +*No NFR specifications found.* +{{/if}} + +--- + +# 3. Security Architecture + +{{#if has_security}} +{{#each security}} + +## Encryption + +- **At Rest:** {{get (get data "encryption") "at_rest"}} +- **In Transit:** {{get (get data "encryption") "in_transit"}} + +## Compliance + +{{#each (get (get data "compliance") "standards")}} +- **{{name}}** ({{#each regions}}{{this}}{{/each}}) +{{/each}} + +## Threat Model + +| Threat | Severity | Mitigation | +|--------|----------|------------| +{{#each (get (get data "threat_model") "threats")}} +| {{name}} | {{severity}} | {{mitigation}} | +{{/each}} + +{{/each}} +{{else}} +*No security specifications found.* +{{/if}} + +--- + +# 4. Authentication & Authorization + +{{#if has_authentication}} +## Authentication + +{{#each authentication}} +### Methods + +{{#each (get data "methods")}} +- **{{type}}**: {{#if enabled}}Enabled{{else}}Disabled{{/if}} +{{/each}} + +### Session Configuration + +- Token Type: {{get (get data "session") "type"}} +- Access Token Expiry: {{get (get data "session") "access_token_expiry"}} +- Refresh Token Expiry: {{get (get data "session") "refresh_token_expiry"}} +{{/each}} +{{/if}} + +{{#if has_authorization}} +## Authorization + +{{#each authorization}} +### Model: {{upper (get data "model")}} + +### Roles + +| Role | Description | Permissions | +|------|-------------|-------------| +{{#each (get data "roles")}} +| {{name}} | {{description}} | {{join permissions ", "}} | +{{/each}} +{{/each}} +{{/if}} + +{{sequenceDiagram "Authentication Flow"}} + +--- + +# 5. Database Design + +{{#if has_database}} +{{#each database}} + +## Database: {{get data "type"}} + +- **Engine:** {{get data "engine"}} +- **Version:** {{get data "version"}} + +### Schemas + +{{#each (get data "schemas")}} +#### Schema: {{name}} + +{{#each tables}} +**Table: {{name}}** + +| Column | Type | Constraints | +|--------|------|-------------| +{{#each columns}} +| {{name}} | {{type}} | {{#if primary_key}}PK{{/if}}{{#if unique}}UNIQUE{{/if}}{{#if not_null}}NOT NULL{{/if}}{{#if foreign_key}}FK: {{foreign_key}}{{/if}} | +{{/each}} +{{/each}} +{{/each}} + +### Replication & Backup + +- **Replication Type:** {{get (get data "replication") "type"}} +- **Replicas:** {{get (get data "replication") "replicas"}} +- **Backup Frequency:** {{get (get data "backup") "frequency"}} +- **Retention:** {{get (get data "backup") "retention"}} + +{{/each}} + +{{dbDiagram "SAMPLE"}} + +{{else}} +*No database specifications found.* +{{/if}} + +--- + +# 6. API Specifications + +{{#if has_openapi}} +{{#each openapi}} + +## Published APIs + +{{#each (get (get data "apis") "published")}} +### {{name}} ({{version}}) + +**Base Path:** `{{base_path}}` + +| Method | Path | Description | Used | Impact | Auth Required | +|--------|------|-------------|------|--------|---------------| +{{#each endpoints}} +| {{method}} | {{path}} | {{description}} | {{#if used}}Yes{{else}}No{{/if}} | {{impact}} | {{#if auth_required}}Yes{{else}}No{{/if}} | +{{/each}} +{{/each}} + +## Consumed APIs (External) + +{{#each (get (get data "apis") "consumed")}} +### **{{name}}** ({{provider}}): `{{base_url}}` + +| Method | Path | Description | Used | Impact | Auth Required | +|--------|------|-------------|------|--------|---------------| +{{#each endpoints}} +| {{method}} | {{path}} | {{description}} | {{#if used}}Yes{{else}}No{{/if}} | {{impact}} | {{#if auth_required}}Yes{{else}}No{{/if}} | +{{/each}} + +{{/each}} + +{{/each}} + +{{sequenceDiagram "API Request Flow"}} + +{{else}} +*No API specifications found.* +{{/if}} + +--- + +# 7. Message Queues (OpenSync) + +{{#if has_opensync}} +{{#each opensync}} + +## Broker: {{get data "broker"}} ({{get data "version"}}) + +### Published Queues + +| Queue | Exchange | Routing Key | Description | +|-------|----------|-------------|-------------| +{{#each (get (get data "queues") "published")}} +| {{name}} | {{exchange}} | {{routing_key}} | {{description}} | +{{/each}} + +### Consumed Queues + +| Queue | Exchange | Handler | Description | +|-------|----------|---------|-------------| +{{#each (get (get data "queues") "consumed")}} +| {{name}} | {{exchange}} | {{handler}} | {{description}} | +{{/each}} + +### Dead Letter Queue + +- **Enabled:** {{get (get data "dlq") "enabled"}} +- **Max Retries:** {{get (get data "dlq") "max_retries"}} + +{{/each}} + +{{sequenceDiagram "Message Queue Flow"}} + +{{else}} +*No message queue specifications found.* +{{/if}} + +--- + +# 8. Observability + +## Telemetry + +{{#if has_telemetry}} +{{#each telemetry}} +### Metrics + +- **Provider:** {{get (get data "metrics") "provider"}} +- **Endpoint:** {{get (get data "metrics") "endpoint"}} + +#### Custom Metrics + +{{#each (get (get data "metrics") "custom_metrics")}} +- `{{name}}` ({{type}}): {{description}} +{{/each}} + +### Distributed Tracing + +- **Provider:** {{get (get data "traces") "provider"}} +- **Sampling Rate:** {{get (get data "traces") "sampling_rate"}} +{{/each}} +{{else}} +*No telemetry specifications found.* +{{/if}} + +## Analytics + +{{#if has_analytics}} +{{#each analytics}} +### Events Tracked + +{{#each (get (get data "tracking") "events")}} +- **{{name}}**: {{join properties ", "}} +{{/each}} +{{/each}} +{{else}} +*No analytics specifications found.* +{{/if}} + +## Logging + +{{#if has_logging}} +{{#each logging}} +### Log Destinations + +{{#each (get data "destinations")}} +- **{{name}}** ({{type}}): Level = {{level}} +{{/each}} + +### Retention Policy + +- Hot Storage: {{get (get data "retention") "hot"}} +- Warm Storage: {{get (get data "retention") "warm"}} +- Cold Storage: {{get (get data "retention") "cold"}} +{{/each}} +{{else}} +*No logging specifications found.* +{{/if}} + +--- + +# 9. Deployment Architecture + +{{#if has_deployment}} +{{#each deployment}} + +## Container Configuration + +- **Base Image:** {{get (get data "docker") "base_image"}} + +## Kubernetes Resources + +### Deployments + +{{#each (get (get data "kubernetes") "deployments")}} +#### {{name}} + +- **Replicas:** {{replicas}} +- **Image:** {{image}} +- **CPU Request/Limit:** {{get (get resources "requests") "cpu"}} / {{get (get resources "limits") "cpu"}} +- **Memory Request/Limit:** {{get (get resources "requests") "memory"}} / {{get (get resources "limits") "memory"}} +{{/each}} + +### Auto-Scaling + +- **Enabled:** {{get (get (get data "kubernetes") "autoscaling") "enabled"}} +- **Min/Max Replicas:** {{get (get (get data "kubernetes") "autoscaling") "min_replicas"}} - {{get (get (get data "kubernetes") "autoscaling") "max_replicas"}} + +{{/each}} +{{else}} +*No deployment specifications found.* +{{/if}} + +--- + +# 10. Service Level Agreements + +{{#if has_service_level}} +{{#each service_level}} + +## SLA + +- **Availability Target:** {{get (get data "sla") "availability"}} + +## Service Level Objectives + +| Objective | Target | Window | +|-----------|--------|--------| +{{#each (get data "slo")}} +| {{name}} | {{target}} | {{window}} | +{{/each}} + +## Error Budget + +- **Monthly Budget:** {{get (get data "error_budget") "monthly_budget"}} +- **Alert Threshold:** {{get (get data "error_budget") "alerting_threshold"}} + +{{/each}} +{{else}} +*No service level specifications found.* +{{/if}} + +--- + +# Appendix + +## A. Specification Files Summary + +| File | Type | +|------|------| +{{#each all_files}} +| {{name}} | {{type}} | +{{/each}} + +## B. Document History + +| Version | Date | Author | Changes | +|---------|------|--------|---------| +| 1.0 | {{generated_date}} | {{generator_product}} | Initial generation | + +--- + +*This document was automatically generated by **{{generator_product}}** v{{generator_version}} on {{generated_at}}* diff --git a/document/solutions/solution-impact.md.hbs b/document/solutions/solution-impact.md.hbs new file mode 100644 index 0000000..3f01b2d --- /dev/null +++ b/document/solutions/solution-impact.md.hbs @@ -0,0 +1,77 @@ +# {{get (get (get solution 0) "data") "name"}} - Solution Impact Document (SID) +{{#each solution}} + +## Solution + +{{#with (get data "solution") }} +Name: {{name}} +Problem Statement: {{problem_statement}} +Solution Id: {{identifier}} +{{/with}} +Program Id: {{get (get data "program") "identifier"}} + +**This impact solution design is still in draft** + +## Project + +{{#each (get data "project")}} +- Name: {{name}} +- Identifier: {{identifier}} +- Budget: {{budget}} +- Guide: {{guide}} +{{/each}} + +## Applications + +| Name | ID | Type | Framework | +|------|----|------|-----------| +{{#each (get data "applications")}} +| {{name}} | {{identifier}} | {{type}} | {{framework}} | +{{/each}} + +## Impact + +The impact of the solution is rated as follows for each domain + +| Domain | Impact | Commentary | Additional | +|--------|--------|------------|------------| +{{#each (get data "impacts")}} +| {{domain}} | {{impact}} | {{comment}} | {{additional_info}} | +{{/each}} + +--- + +## Program + +{{#with (get data "program") }} +The **{{name}}** program details are: + +- Budget: {{budget}} +- Identifier: {{identifier}} +- Sponsor: {{get (get data "program") "sponsor"}} +- Domain: {{get (get data "program") "domain"}} +- Business case: {{get (get data "program") "guide"}} + +| Phase | Timeframe | Commentary | +|-------|-----------|------------| +{{#each phases}} +| {{name}} | {{timeframe}} | {{comment}} | +{{/each}} + +{{mdDiagram "overview_diagram.md" name}} +{{/with}} + +--- + +## Stakeholders + +| Name | Title | Role | +|------|-------|------| +{{#each (get data "stakeholders")}} +| {{name}} | {{title}} | {{role}} | +{{/each}} +{{/each}} + +## Patterns + +No new patterns are proposed diff --git a/rediops/default/sections/tool.json b/rediops/default/sections/tool.json index 62aeea9..9a0690a 100644 --- a/rediops/default/sections/tool.json +++ b/rediops/default/sections/tool.json @@ -1,4 +1,4 @@ { - "name": "tool", - "description": "retrieve tool definitions from rediOps" + "name": "dependency.tool", + "description": "retrieve tool definitions from rediOps dependency section" } \ No newline at end of file