# AITBC Extension Manifest
# This file defines the extension metadata and lifecycle configuration

apiVersion: "v1"
kind: "Extension"

# Basic information
metadata:
  name: "{{ cookiecutter.extension_name }}"
  displayName: "{{ cookiecutter.extension_display_name }}"
  description: "{{ cookiecutter.extension_description }}"
  version: "{{ cookiecutter.version }}"
  author: "{{ cookiecutter.author_name }}"
  email: "{{ cookiecutter.author_email }}"
  license: "{{ cookiecutter.license }}"
  homepage: "https://github.com/{{ cookiecutter.github_username }}/{{ cookiecutter.extension_name }}"
  repository: "https://github.com/{{ cookiecutter.github_username }}/{{ cookiecutter.extension_name }}.git"
  documentation: "https://{{ cookiecutter.extension_name }}.readthedocs.io"
  
# Extension classification
spec:
  type: "{{ cookiecutter.extension_type }}"
  category:
    {% if cookiecutter.extension_type == "payment" %}
    - "payment-processor"
    {% elif cookiecutter.extension_type == "erp" %}
    - "erp-connector"
    {% elif cookiecutter.extension_type == "analytics" %}
    - "analytics-tool"
    {% else %}
    - "developer-tool"
    {% endif %}
  
  # AITBC compatibility
  aitbc:
    minVersion: "1.0.0"
    maxVersion: "2.0.0"
    sdkVersion: "^1.0.0"
  
  # Runtime requirements
  runtime:
    python: ">= {{ cookiecutter.python_version }}"
    {% if cookiecutter.use_asyncio %}
    features: ["async"]
    {% endif %}
    
  # Dependencies
  dependencies:
    core:
      - "aitbc-enterprise>=1.0.0"
    {% if cookiecutter.extension_type == "payment" %}
    payments:
      - "stripe>=5.0.0"
    {% elif cookiecutter.extension_type == "erp" %}
    erp:
      - "requests>=2.25.0"
      - "pandas>=1.3.0"
    {% elif cookiecutter.extension_type == "analytics" %}
    analytics:
      - "matplotlib>=3.5.0"
      - "plotly>=5.0.0"
    {% else %}
    devtools:
      - "click>=8.0.0"
    {% endif %}
  
  # Extension configuration schema
  configSchema:
    type: "object"
    properties:
      {% if cookiecutter.extension_type == "payment" %}
      api_key:
        type: "string"
        description: "API key for the payment service"
        sensitive: true
      webhook_secret:
        type: "string"
        description: "Webhook secret for verification"
        sensitive: true
      sandbox:
        type: "boolean"
        description: "Use sandbox environment"
        default: false
      {% elif cookiecutter.extension_type == "erp" %}
      host:
        type: "string"
        description: "ERP system host"
        format: "hostname"
      port:
        type: "integer"
        description: "ERP system port"
        default: 443
      username:
        type: "string"
        description: "ERP username"
        sensitive: true
      password:
        type: "string"
        description: "ERP password"
        sensitive: true
      database:
        type: "string"
        description: "ERP database name"
      {% elif cookiecutter.extension_type == "analytics" %}
      data_source:
        type: "string"
        description: "Data source URL"
      refresh_interval:
        type: "integer"
        description: "Data refresh interval in seconds"
        default: 300
      retention_days:
        type: "integer"
        description: "Data retention period in days"
        default: 90
      {% else %}
      debug_mode:
        type: "boolean"
        description: "Enable debug logging"
        default: false
      log_level:
        type: "string"
        enum: ["DEBUG", "INFO", "WARNING", "ERROR"]
        default: "INFO"
      {% endif %}
    required:
      {% if cookiecutter.extension_type == "payment" %}
      - "api_key"
      {% elif cookiecutter.extension_type == "erp" %}
      - "host"
      - "username"
      - "password"
      - "database"
      {% elif cookiecutter.extension_type == "analytics" %}
      - "data_source"
      {% endif %}
  
  # Health check configuration
  health:
    enabled: true
    endpoint: "/health"
    interval: 30
    timeout: 5
    checks:
      - name: "service_connection"
        type: "external"
        command: "python -c 'import {{ cookiecutter.package_name }}; print(\"OK\")'"
      {% if cookiecutter.extension_type == "payment" %}
      - name: "payment_api"
        type: "http"
        url: "https://api.stripe.com/v1"
        expectedStatus: 200
      {% endif %}
  
  # Metrics configuration
  metrics:
    enabled: true
    endpoint: "/metrics"
    format: "prometheus"
    customMetrics:
      {% if cookiecutter.extension_type == "payment" %}
      - name: "payment_operations_total"
        type: "counter"
        help: "Total number of payment operations"
      - name: "payment_amount_sum"
        type: "histogram"
        help: "Payment amount distribution"
      {% elif cookiecutter.extension_type == "erp" %}
      - name: "sync_operations_total"
        type: "counter"
        help: "Total number of sync operations"
      - name: "sync_records_processed"
        type: "counter"
        help: "Total records processed during sync"
      {% elif cookiecutter.extension_type == "analytics" %}
      - name: "analytics_queries_total"
        type: "counter"
        help: "Total number of analytics queries"
      - name: "data_processing_time"
        type: "histogram"
        help: "Time spent processing analytics data"
      {% endif %}
  
  # Webhook configuration (if applicable)
  {% if cookiecutter.extension_type == "payment" %}
  webhooks:
    enabled: true
    events:
      - "payment.created"
      - "payment.succeeded"
      - "payment.failed"
      - "refund.created"
    endpoint: "/webhooks"
    secret: "{{ cookiecutter.extension_name }}_webhook"
    retryPolicy:
      maxRetries: 3
      backoff: "exponential"
    {% endif %}
  
  # Security configuration
  security:
    {% if cookiecutter.extension_type == "payment" %}
    pciCompliance: true
    dataEncryption: true
    {% elif cookiecutter.extension_type == "erp" %}
    tlsRequired: true
    auditLogging: true
    {% endif %}
    permissions:
      - "read:transactions"
      - "write:transactions"
      {% if cookiecutter.extension_type == "erp" %}
      - "read:customers"
      - "write:customers"
      {% endif %}

# Deployment configuration
deployment:
  type: "docker"
  
  # Docker configuration
  docker:
    image: "{{ cookiecutter.github_username }}/{{ cookiecutter.extension_name }}:{{ cookiecutter.version }}"
    ports:
      - "8080:8080"
    environment:
      - "AITBC_ENV=production"
      - "LOG_LEVEL=INFO"
    volumes:
      - "/data/{{ cookiecutter.extension_name }}:/app/data"
    resources:
      limits:
        cpu: "500m"
        memory: "512Mi"
      requests:
        cpu: "100m"
        memory: "128Mi"
  
  # Kubernetes configuration (optional)
  kubernetes:
    enabled: false
    replicas: 2
    service:
      type: "ClusterIP"
      port: 80
    ingress:
      enabled: false
      host: "{{ cookiecutter.extension_name }}.aitbc.local"
  
  # Scaling configuration
  scaling:
    minReplicas: 1
    maxReplicas: 10
    targetCPUUtilization: 70
    targetMemoryUtilization: 80

# Testing configuration
testing:
  frameworks:
    - "pytest"
    - "pytest-asyncio"  # if asyncio enabled
  coverage:
    enabled: true
    threshold: 80
  environments:
    - name: "unit"
      command: "pytest tests/unit/"
    - name: "integration"
      command: "pytest tests/integration/"
    - name: "e2e"
      command: "pytest tests/e2e/"

# Documentation
documentation:
  type: "sphinx"
  theme: "sphinx_rtd_theme"
  build:
    command: "sphinx-build -b html docs docs/_build"
  deploy:
    type: "github-pages"
    branch: "gh-pages"

# Release configuration
release:
  type: "semantic"
  branches:
    main: "main"
    develop: "develop"
    release: "release/*"
  changelog:
    enabled: true
    file: "CHANGELOG.md"
  artifacts:
    - "dist/*.whl"
    - "dist/*.tar.gz"

# Support information
support:
  website: "https://{{ cookiecutter.extension_name }}.aitbc.io"
  documentation: "https://{{ cookiecutter.extension_name }}.readthedocs.io"
  issues: "https://github.com/{{ cookiecutter.github_username }}/{{ cookiecutter.extension_name }}/issues"
  discussions: "https://github.com/{{ cookiecutter.github_username }}/{{ cookiecutter.extension_name }}/discussions"
  email: "{{ cookiecutter.author_email }}"
  slack: "#{{ cookiecutter.extension_name }}-support"
