apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

metadata:
  name: bakery-ia-dev

# Note: Removed global namespace to prevent monitoring namespace conflict
# All base resources already have namespace: bakery-ia defined

resources:
  - ../../base
  # Monitoring disabled for dev to save resources
  # - ../../base/components/monitoring
  - dev-ingress.yaml

# Exclude nominatim from dev to save resources
# Using scale to 0 for StatefulSet to prevent pod creation
patches:
  # Override specific ConfigMap values for development
  - target:
      kind: ConfigMap
      name: bakery-config
    patch: |-
      - op: replace
        path: /data/ENVIRONMENT
        value: "development"
      - op: replace
        path: /data/DEBUG
        value: "true"
      - op: replace
        path: /data/LOG_LEVEL
        value: "DEBUG"
      - op: replace
        path: /data/AUTO_RELOAD
        value: "true"
      - op: replace
        path: /data/PROFILING_ENABLED
        value: "true"
      - op: replace
        path: /data/MOCK_EXTERNAL_APIS
        value: "false"
      - op: replace
        path: /data/TESTING
        value: "false"
      - op: replace
        path: /data/DOMAIN
        value: "localhost"
      - op: replace
        path: /data/API_DOCS_ENABLED
        value: "true"
      - op: replace
        path: /data/CORS_ORIGINS
        value: "http://frontend-service:3000,http://localhost:3000,http://localhost:3001,http://localhost,http://127.0.0.1:3000,http://127.0.0.1:3001,http://bakery-ia.local,https://localhost,https://127.0.0.1"
      - op: replace
        path: /data/VITE_ENVIRONMENT
        value: "development"
      - op: replace
        path: /data/VITE_API_URL
        value: "/api"
      - op: replace
        path: /data/STRIPE_PUBLISHABLE_KEY
        value: "pk_test_your_stripe_publishable_key_here"
      - op: replace
        path: /data/SQUARE_ENVIRONMENT
        value: "sandbox"
      - op: replace
        path: /data/TOAST_ENVIRONMENT
        value: "sandbox"
      - op: replace
        path: /data/LIGHTSPEED_ENVIRONMENT
        value: "sandbox"
      - op: replace
        path: /data/RATE_LIMIT_ENABLED
        value: "false"
      - op: replace
        path: /data/DB_FORCE_RECREATE
        value: "false"
      - op: add
        path: /data/DEVELOPMENT_MODE
        value: "true"
      - op: add
        path: /data/DEBUG_LOGGING
        value: "true"
      - op: add
        path: /data/SKIP_MIGRATION_VERSION_CHECK
        value: "false"
  - target:
      kind: StatefulSet
      name: nominatim
    patch: |-
      - op: replace
        path: /spec/replicas
        value: 0
  # Suspend nominatim-init job in dev (not needed when nominatim is scaled to 0)
  - target:
      kind: Job
      name: nominatim-init
    patch: |-
      - op: replace
        path: /spec/suspend
        value: true
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: auth-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: redis
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: rabbitmq
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "256Mi"
            cpu: "300m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: auth-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "128Mi"
            cpu: "50m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: frontend
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/imagePullPolicy
        value: Never
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "128Mi"
            cpu: "100m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: gateway
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/imagePullPolicy
        value: Never
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "128Mi"
            cpu: "100m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: alert-processor-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  # Database patches
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: external-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: forecasting-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: inventory-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: notification-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: orders-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: pos-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: production-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: recipes-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: sales-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: suppliers-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: tenant-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: training-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: ai-insights-db
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  # Service patches
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: external-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: forecasting-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: inventory-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: notification-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: orders-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: pos-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: production-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: recipes-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: sales-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: suppliers-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: tenant-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "64Mi"
            cpu: "25m"
          limits:
            memory: "256Mi"
            cpu: "200m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: training-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "256Mi"
            cpu: "100m"
          limits:
            memory: "1Gi"
            cpu: "500m"
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: ai-insights-service
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          requests:
            memory: "128Mi"
            cpu: "50m"
          limits:
            memory: "512Mi"
            cpu: "300m"

secretGenerator:
  - name: dev-secrets
    literals:
      - DEV_MODE=true

labels:
  - includeSelectors: true
    pairs:
      environment: development
      tier: local

images:
  - name: bakery/auth-service
    newTag: dev
  - name: bakery/tenant-service
    newTag: dev
  - name: bakery/training-service
    newTag: dev
  - name: bakery/forecasting-service
    newTag: dev
  - name: bakery/sales-service
    newTag: dev
  - name: bakery/external-service
    newTag: dev
  - name: bakery/notification-service
    newTag: dev
  - name: bakery/inventory-service
    newTag: dev
  - name: bakery/recipes-service
    newTag: dev
  - name: bakery/suppliers-service
    newTag: dev
  - name: bakery/pos-service
    newTag: dev
  - name: bakery/orders-service
    newTag: dev
  - name: bakery/production-service
    newTag: dev
  - name: bakery/alert-processor
    newTag: dev
  - name: bakery/ai-insights-service
    newTag: dev
  - name: bakery/demo-session-service
    newTag: dev
  - name: bakery/gateway
    newTag: dev
  - name: bakery/dashboard
    newTag: dev

replicas:
  - name: auth-service
    count: 1
  - name: tenant-service
    count: 1
  - name: training-service
    count: 1
  - name: forecasting-service
    count: 1
  - name: sales-service
    count: 1
  - name: external-service
    count: 1
  - name: notification-service
    count: 1
  - name: inventory-service
    count: 1
  - name: recipes-service
    count: 1
  - name: suppliers-service
    count: 1
  - name: pos-service
    count: 1
  - name: orders-service
    count: 1
  - name: production-service
    count: 1
  - name: alert-processor-service
    count: 1
  - name: ai-insights-service
    count: 1
  - name: demo-session-service
    count: 1
  - name: gateway
    count: 1
  - name: frontend
    count: 1
