Seeding wioth some data
commit
07cf729d8e
|
|
@ -0,0 +1,5 @@
|
|||
# Solutions
|
||||
|
||||
The solution documenation for various initatives are listed in the
|
||||
solution folder.
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Test solution
|
||||
|
||||
This solution location is just an area for testing
|
||||
the solution documentation for **qaskx-cli** tool
|
||||
|
||||
qaskx-cli -W ~/projects.design/todo.design/solutions/test rediops design -d ./specs -t ./design\solution-design.md.hbs -o ./todo-solution.md -v
|
||||
|
|
@ -0,0 +1,411 @@
|
|||
# {{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
|
||||
the **{{get (get (get business_requirements 0) "data") "name"}}**
|
||||
platform. It consolidates
|
||||
specifications across business requirements, security, APIs, databases, and deployment configurations.
|
||||
|
||||
{{overviewDiagram}}
|
||||
|
||||
---
|
||||
|
||||
# 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}}
|
||||
|
||||
{{/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}}
|
||||
|
||||
{{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}}*
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
spec_type: analytics
|
||||
name: Analytics Configuration
|
||||
version: "1.0"
|
||||
|
||||
provider: segment
|
||||
|
||||
tracking:
|
||||
events:
|
||||
- name: page_viewed
|
||||
properties:
|
||||
- page_name
|
||||
- referrer
|
||||
- session_id
|
||||
|
||||
- name: product_viewed
|
||||
properties:
|
||||
- product_id
|
||||
- product_name
|
||||
- category
|
||||
- price
|
||||
|
||||
- name: add_to_cart
|
||||
properties:
|
||||
- product_id
|
||||
- quantity
|
||||
- cart_value
|
||||
|
||||
- name: purchase_completed
|
||||
properties:
|
||||
- order_id
|
||||
- total
|
||||
- items_count
|
||||
- payment_method
|
||||
|
||||
user_traits:
|
||||
- user_id
|
||||
- email
|
||||
- signup_date
|
||||
- subscription_tier
|
||||
|
||||
dashboards:
|
||||
- name: Sales Overview
|
||||
metrics:
|
||||
- daily_revenue
|
||||
- orders_count
|
||||
- average_order_value
|
||||
- conversion_rate
|
||||
|
||||
- name: User Engagement
|
||||
metrics:
|
||||
- daily_active_users
|
||||
- session_duration
|
||||
- pages_per_session
|
||||
- bounce_rate
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
spec_type: authentication
|
||||
name: Authentication Configuration
|
||||
version: "1.0"
|
||||
|
||||
methods:
|
||||
- type: email_password
|
||||
enabled: true
|
||||
password_policy:
|
||||
min_length: 12
|
||||
require_uppercase: true
|
||||
require_lowercase: true
|
||||
require_numbers: true
|
||||
require_special: true
|
||||
max_age_days: 90
|
||||
|
||||
- type: oauth2
|
||||
enabled: true
|
||||
providers:
|
||||
- name: google
|
||||
client_id_env: GOOGLE_CLIENT_ID
|
||||
scopes: [email, profile]
|
||||
- name: github
|
||||
client_id_env: GITHUB_CLIENT_ID
|
||||
scopes: [user:email]
|
||||
|
||||
- type: mfa
|
||||
enabled: true
|
||||
options:
|
||||
- totp
|
||||
- sms
|
||||
- email
|
||||
|
||||
session:
|
||||
type: jwt
|
||||
access_token_expiry: 15m
|
||||
refresh_token_expiry: 7d
|
||||
secure_cookie: true
|
||||
same_site: strict
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
spec_type: authorization
|
||||
name: Authorization Model
|
||||
version: "1.0"
|
||||
|
||||
model: RBAC
|
||||
|
||||
roles:
|
||||
- name: admin
|
||||
description: Full system access
|
||||
permissions:
|
||||
- "*"
|
||||
|
||||
- name: seller
|
||||
description: Manage own products and orders
|
||||
permissions:
|
||||
- products:create
|
||||
- products:read
|
||||
- products:update
|
||||
- products:delete:own
|
||||
- orders:read:own
|
||||
- analytics:read:own
|
||||
|
||||
- name: customer
|
||||
description: Browse and purchase products
|
||||
permissions:
|
||||
- products:read
|
||||
- cart:*
|
||||
- orders:create
|
||||
- orders:read:own
|
||||
- profile:*:own
|
||||
|
||||
- name: guest
|
||||
description: Browse only
|
||||
permissions:
|
||||
- products:read
|
||||
|
||||
permissions:
|
||||
products:
|
||||
- create
|
||||
- read
|
||||
- update
|
||||
- delete
|
||||
orders:
|
||||
- create
|
||||
- read
|
||||
- update
|
||||
- cancel
|
||||
users:
|
||||
- create
|
||||
- read
|
||||
- update
|
||||
- delete
|
||||
- ban
|
||||
|
||||
resource_policies:
|
||||
- resource: products
|
||||
owner_field: seller_id
|
||||
actions:
|
||||
update: owner_only
|
||||
delete: owner_only
|
||||
- resource: orders
|
||||
owner_field: customer_id
|
||||
actions:
|
||||
read: owner_or_admin
|
||||
cancel: owner_only
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
spec_type: business_requirements
|
||||
name: E-Commerce Platform
|
||||
version: "1.0"
|
||||
description: Online marketplace for digital products
|
||||
|
||||
requirements:
|
||||
- id: BR-001
|
||||
title: User Registration
|
||||
description: Users must be able to create accounts with email verification
|
||||
priority: high
|
||||
acceptance_criteria:
|
||||
- Email validation required
|
||||
- Password strength enforcement
|
||||
- Email verification link sent
|
||||
|
||||
- id: BR-002
|
||||
title: Product Catalog
|
||||
description: Display products with search and filtering capabilities
|
||||
priority: high
|
||||
acceptance_criteria:
|
||||
- Category-based navigation
|
||||
- Full-text search
|
||||
- Price range filtering
|
||||
|
||||
- id: BR-003
|
||||
title: Shopping Cart
|
||||
description: Users can add/remove items and proceed to checkout
|
||||
priority: high
|
||||
acceptance_criteria:
|
||||
- Persistent cart across sessions
|
||||
- Quantity modification
|
||||
- Price calculation with discounts
|
||||
|
||||
features:
|
||||
- name: User Management
|
||||
components:
|
||||
- Registration
|
||||
- Login
|
||||
- Profile management
|
||||
- Password reset
|
||||
|
||||
- name: Product Management
|
||||
components:
|
||||
- Product listing
|
||||
- Product details
|
||||
- Reviews and ratings
|
||||
- Inventory tracking
|
||||
|
||||
- name: Order Management
|
||||
components:
|
||||
- Cart management
|
||||
- Checkout flow
|
||||
- Order tracking
|
||||
- Order history
|
||||
|
||||
stakeholders:
|
||||
- name: Product Owner
|
||||
role: Decision maker
|
||||
- name: Development Team
|
||||
role: Implementation
|
||||
- name: End Users
|
||||
role: Consumers
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
spec_type: database
|
||||
name: Database Configuration
|
||||
version: "1.0"
|
||||
|
||||
type: postgresql
|
||||
engine: PostgreSQL 15
|
||||
engine_version: "15.4"
|
||||
|
||||
configuration:
|
||||
max_connections: 200
|
||||
shared_buffers: 256MB
|
||||
work_mem: 4MB
|
||||
maintenance_work_mem: 64MB
|
||||
|
||||
schemas:
|
||||
- name: users
|
||||
tables:
|
||||
- name: users
|
||||
columns:
|
||||
- name: id
|
||||
type: uuid
|
||||
primary_key: true
|
||||
- name: email
|
||||
type: varchar(255)
|
||||
unique: true
|
||||
not_null: true
|
||||
- name: password_hash
|
||||
type: varchar(255)
|
||||
not_null: true
|
||||
- name: created_at
|
||||
type: timestamp
|
||||
default: now()
|
||||
indexes:
|
||||
- columns: [email]
|
||||
unique: true
|
||||
|
||||
- name: products
|
||||
tables:
|
||||
- name: products
|
||||
columns:
|
||||
- name: id
|
||||
type: uuid
|
||||
primary_key: true
|
||||
- name: seller_id
|
||||
type: uuid
|
||||
foreign_key: users.id
|
||||
- name: name
|
||||
type: varchar(255)
|
||||
- name: price
|
||||
type: decimal(10,2)
|
||||
- name: status
|
||||
type: varchar(50)
|
||||
indexes:
|
||||
- columns: [seller_id]
|
||||
- columns: [status, created_at]
|
||||
|
||||
replication:
|
||||
type: streaming
|
||||
replicas: 2
|
||||
sync_mode: async
|
||||
|
||||
backup:
|
||||
frequency: daily
|
||||
retention: 30 days
|
||||
type: point_in_time
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
spec_type: deployment
|
||||
name: Deployment Configuration
|
||||
version: "1.0"
|
||||
|
||||
docker:
|
||||
base_image: node:20-alpine
|
||||
build_stages:
|
||||
- name: builder
|
||||
commands:
|
||||
- COPY package*.json ./
|
||||
- RUN npm ci
|
||||
- COPY . .
|
||||
- RUN npm run build
|
||||
- name: runtime
|
||||
commands:
|
||||
- COPY --from=builder /app/dist ./dist
|
||||
- CMD ["node", "dist/main.js"]
|
||||
|
||||
kubernetes:
|
||||
namespace: production
|
||||
|
||||
deployments:
|
||||
- name: api-server
|
||||
replicas: 3
|
||||
image: app/api:latest
|
||||
resources:
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 1Gi
|
||||
health_checks:
|
||||
liveness:
|
||||
path: /health
|
||||
port: 8080
|
||||
initial_delay: 30
|
||||
readiness:
|
||||
path: /ready
|
||||
port: 8080
|
||||
|
||||
services:
|
||||
- name: api-service
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
target_port: 8080
|
||||
|
||||
ingress:
|
||||
host: api.example.com
|
||||
tls: true
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
|
||||
autoscaling:
|
||||
enabled: true
|
||||
min_replicas: 3
|
||||
max_replicas: 10
|
||||
metrics:
|
||||
- type: cpu
|
||||
target_utilization: 70
|
||||
- type: memory
|
||||
target_utilization: 80
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
spec_type: logging
|
||||
name: Logging Configuration
|
||||
version: "1.0"
|
||||
|
||||
destinations:
|
||||
- name: stdout
|
||||
type: console
|
||||
format: json
|
||||
level: info
|
||||
|
||||
- name: elasticsearch
|
||||
type: elasticsearch
|
||||
hosts:
|
||||
- https://logs.example.com:9200
|
||||
index_pattern: "app-logs-%{+YYYY.MM.dd}"
|
||||
level: debug
|
||||
|
||||
- name: cloudwatch
|
||||
type: aws_cloudwatch
|
||||
log_group: /app/production
|
||||
region: us-east-1
|
||||
level: warn
|
||||
|
||||
format:
|
||||
type: json
|
||||
fields:
|
||||
- timestamp
|
||||
- level
|
||||
- message
|
||||
- service
|
||||
- trace_id
|
||||
- span_id
|
||||
- user_id
|
||||
- request_id
|
||||
|
||||
retention:
|
||||
hot: 7 days
|
||||
warm: 30 days
|
||||
cold: 90 days
|
||||
|
||||
redaction:
|
||||
enabled: true
|
||||
fields:
|
||||
- password
|
||||
- token
|
||||
- credit_card
|
||||
- ssn
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
spec_type: non_functional_requirements
|
||||
name: Platform NFRs
|
||||
version: "1.0"
|
||||
|
||||
requirements:
|
||||
- id: NFR-001
|
||||
category: performance
|
||||
title: Response Time
|
||||
description: API response time must be under 200ms for 95th percentile
|
||||
metric: p95_latency
|
||||
target: "< 200ms"
|
||||
|
||||
- id: NFR-002
|
||||
category: scalability
|
||||
title: Concurrent Users
|
||||
description: System must support 10,000 concurrent users
|
||||
metric: concurrent_connections
|
||||
target: ">= 10000"
|
||||
|
||||
- id: NFR-003
|
||||
category: availability
|
||||
title: Uptime SLA
|
||||
description: System availability must be 99.9%
|
||||
metric: uptime_percentage
|
||||
target: ">= 99.9%"
|
||||
|
||||
- id: NFR-004
|
||||
category: security
|
||||
title: Data Encryption
|
||||
description: All data at rest and in transit must be encrypted
|
||||
requirements:
|
||||
- TLS 1.3 for transit
|
||||
- AES-256 for storage
|
||||
|
||||
- id: NFR-005
|
||||
category: reliability
|
||||
title: Data Durability
|
||||
description: No data loss in case of single node failure
|
||||
requirements:
|
||||
- Multi-region replication
|
||||
- Daily backups
|
||||
- Point-in-time recovery
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
spec_type: opensync
|
||||
name: Message Queue Configuration
|
||||
version: "1.0"
|
||||
|
||||
broker: rabbitmq
|
||||
broker_version: "3.12"
|
||||
|
||||
queues:
|
||||
published:
|
||||
- name: order.created
|
||||
description: Emitted when a new order is created
|
||||
exchange: orders
|
||||
routing_key: order.created
|
||||
payload_schema:
|
||||
type: object
|
||||
properties:
|
||||
order_id:
|
||||
type: string
|
||||
customer_id:
|
||||
type: string
|
||||
items:
|
||||
type: array
|
||||
total:
|
||||
type: number
|
||||
|
||||
- name: payment.completed
|
||||
description: Emitted when payment is confirmed
|
||||
exchange: payments
|
||||
routing_key: payment.completed
|
||||
payload_schema:
|
||||
type: object
|
||||
properties:
|
||||
payment_id:
|
||||
type: string
|
||||
order_id:
|
||||
type: string
|
||||
amount:
|
||||
type: number
|
||||
|
||||
consumed:
|
||||
- name: inventory.updated
|
||||
description: Consumed to update product availability
|
||||
exchange: inventory
|
||||
routing_key: inventory.#
|
||||
handler: InventoryHandler
|
||||
|
||||
- name: notification.send
|
||||
description: Consumed to send notifications
|
||||
exchange: notifications
|
||||
routing_key: notification.*
|
||||
handler: NotificationHandler
|
||||
|
||||
dlq:
|
||||
enabled: true
|
||||
max_retries: 3
|
||||
retry_delay: 5000
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
spec_type: security
|
||||
name: Security Specifications
|
||||
version: "1.0"
|
||||
|
||||
encryption:
|
||||
at_rest:
|
||||
algorithm: AES-256-GCM
|
||||
key_management: AWS KMS
|
||||
in_transit:
|
||||
protocol: TLS 1.3
|
||||
certificate_authority: Let's Encrypt
|
||||
|
||||
data_protection:
|
||||
pii_fields:
|
||||
- email
|
||||
- phone
|
||||
- address
|
||||
- payment_info
|
||||
retention_policy:
|
||||
active_data: 3 years
|
||||
deleted_data: 30 days
|
||||
anonymization:
|
||||
enabled: true
|
||||
method: k-anonymity
|
||||
|
||||
compliance:
|
||||
standards:
|
||||
- name: GDPR
|
||||
regions: [EU]
|
||||
requirements:
|
||||
- Right to be forgotten
|
||||
- Data portability
|
||||
- Consent management
|
||||
- name: PCI-DSS
|
||||
level: 1
|
||||
requirements:
|
||||
- Secure cardholder data
|
||||
- Access control
|
||||
- Network monitoring
|
||||
|
||||
threat_model:
|
||||
threats:
|
||||
- name: SQL Injection
|
||||
mitigation: Parameterized queries
|
||||
severity: high
|
||||
- name: XSS
|
||||
mitigation: Output encoding, CSP headers
|
||||
severity: high
|
||||
- name: CSRF
|
||||
mitigation: CSRF tokens
|
||||
severity: medium
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
spec_type: service_level
|
||||
name: Service Level Agreements
|
||||
version: "1.0"
|
||||
|
||||
sla:
|
||||
availability: 99.9%
|
||||
support_response:
|
||||
critical: 15 minutes
|
||||
high: 1 hour
|
||||
medium: 4 hours
|
||||
low: 24 hours
|
||||
|
||||
slo:
|
||||
- name: API Availability
|
||||
target: 99.95%
|
||||
measurement: uptime_percentage
|
||||
window: 30 days
|
||||
|
||||
- name: API Latency (p99)
|
||||
target: 500ms
|
||||
measurement: response_time_p99
|
||||
window: 1 hour
|
||||
|
||||
- name: Error Rate
|
||||
target: 0.1%
|
||||
measurement: error_percentage
|
||||
window: 1 hour
|
||||
|
||||
- name: Throughput
|
||||
target: 10000 rps
|
||||
measurement: requests_per_second
|
||||
window: 1 minute
|
||||
|
||||
sli:
|
||||
- name: request_latency
|
||||
type: histogram
|
||||
good_events: latency < 200ms
|
||||
total_events: all_requests
|
||||
|
||||
- name: availability
|
||||
type: ratio
|
||||
good_events: successful_requests
|
||||
total_events: all_requests
|
||||
|
||||
- name: error_rate
|
||||
type: ratio
|
||||
good_events: non_error_requests
|
||||
total_events: all_requests
|
||||
|
||||
error_budget:
|
||||
monthly_budget: 43.2 minutes
|
||||
alerting_threshold: 50%
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
spec_type: openapi
|
||||
name: API Specifications
|
||||
version: "1.0"
|
||||
|
||||
apis:
|
||||
published:
|
||||
- name: Products API
|
||||
version: v1
|
||||
base_path: "/api/v1/products"
|
||||
endpoints:
|
||||
- method: GET
|
||||
path: /
|
||||
used: true
|
||||
impact: modify
|
||||
description: List all products
|
||||
query_params:
|
||||
- name: page
|
||||
type: integer
|
||||
- name: limit
|
||||
type: integer
|
||||
- name: category
|
||||
type: string
|
||||
response: ProductList
|
||||
|
||||
- method: GET
|
||||
path: /{id}
|
||||
used: true
|
||||
impact: no change
|
||||
description: Get product by ID
|
||||
response: Product
|
||||
|
||||
- method: POST
|
||||
path: /
|
||||
used: true
|
||||
impact: config
|
||||
description: Create new product
|
||||
auth_required: true
|
||||
roles: [seller, admin]
|
||||
request: CreateProduct
|
||||
response: Product
|
||||
|
||||
- name: Orders API
|
||||
version: v1
|
||||
base_path: /api/v1/orders
|
||||
endpoints:
|
||||
- method: POST
|
||||
path: /
|
||||
used: false
|
||||
impact: no change
|
||||
description: Create new order
|
||||
auth_required: true
|
||||
request: CreateOrder
|
||||
response: Order
|
||||
|
||||
- method: GET
|
||||
path: /{id}
|
||||
used: true
|
||||
impact: no change
|
||||
description: Get order by ID
|
||||
auth_required: true
|
||||
response: Order
|
||||
|
||||
- name: Dynamic navigation
|
||||
specification: "https://apicuriows.shaun.sku61.com/sharing/b50006fc-510a-466c-bfa7-3ba808f52d47?content=true"
|
||||
specification_include: false
|
||||
base_path: /api/dyna_menu
|
||||
|
||||
consumed:
|
||||
- name: Payment Gateway
|
||||
provider: Stripe
|
||||
base_url: "https://api{environment}.stripe.com/v1"
|
||||
endpoints:
|
||||
- method: POST
|
||||
path: /v1/payment_intents
|
||||
description: Create payment intent
|
||||
|
||||
- name: Email Service
|
||||
provider: SendGrid
|
||||
base_url: "https://api{environment}.sendgrid.com/v2"
|
||||
endpoints:
|
||||
- method: POST
|
||||
path: /v3/mail/send
|
||||
description: Send transactional email
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
spec_type: telemetry
|
||||
name: Observability Configuration
|
||||
version: "1.0"
|
||||
|
||||
metrics:
|
||||
provider: prometheus
|
||||
endpoint: /metrics
|
||||
|
||||
custom_metrics:
|
||||
- name: http_requests_total
|
||||
type: counter
|
||||
labels: [method, path, status]
|
||||
description: Total HTTP requests
|
||||
|
||||
- name: order_processing_duration
|
||||
type: histogram
|
||||
buckets: [0.1, 0.5, 1, 2, 5]
|
||||
description: Order processing time in seconds
|
||||
|
||||
- name: active_sessions
|
||||
type: gauge
|
||||
description: Current number of active user sessions
|
||||
|
||||
traces:
|
||||
provider: jaeger
|
||||
sampling_rate: 0.1
|
||||
propagation: w3c
|
||||
|
||||
spans:
|
||||
- name: http_request
|
||||
attributes: [method, path, user_id]
|
||||
- name: database_query
|
||||
attributes: [query_type, table]
|
||||
- name: external_api_call
|
||||
attributes: [service, endpoint]
|
||||
|
||||
instrumentation:
|
||||
auto_instrument:
|
||||
- http
|
||||
- database
|
||||
- redis
|
||||
custom_spans:
|
||||
- order_processing
|
||||
- payment_processing
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"spec_type": "business_requirements",
|
||||
"name": "JSON Test Application",
|
||||
"version": "1.0",
|
||||
"description": "Testing JSON specification format",
|
||||
"requirements": [
|
||||
{
|
||||
"id": "BR-JSON-001",
|
||||
"title": "JSON Support",
|
||||
"description": "System must support JSON specification files",
|
||||
"priority": "high"
|
||||
}
|
||||
],
|
||||
"features": [
|
||||
{
|
||||
"name": "JSON Parsing",
|
||||
"components": ["Parser", "Validator", "Generator"]
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue