Initial commit: LLM Automation Docs & Remediation Engine v2.0

Features:
- Automated datacenter documentation generation
- MCP integration for device connectivity
- Auto-remediation engine with safety checks
- Multi-factor reliability scoring (0-100%)
- Human feedback learning loop
- Pattern recognition and continuous improvement
- Agentic chat support with AI
- API for ticket resolution
- Frontend React with Material-UI
- CI/CD pipelines (GitLab + Gitea)
- Docker & Kubernetes deployment
- Complete documentation and guides

v2.0 Highlights:
- Auto-remediation with write operations (disabled by default)
- Reliability calculator with 4-factor scoring
- Human feedback system for continuous learning
- Pattern-based progressive automation
- Approval workflow for critical actions
- Full audit trail and rollback capability
This commit is contained in:
LLM Automation System
2025-10-17 23:47:28 +00:00
commit 1ba5ce851d
89 changed files with 20468 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: datacenter-config
namespace: datacenter-docs
data:
mcp-server-url: "https://mcp.company.local"
mongodb-database: "datacenter_docs"
log-level: "INFO"
max-tokens: "4096"

View File

@@ -0,0 +1,178 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
namespace: datacenter-docs
spec:
replicas: 3
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: registry.company.local/datacenter-docs/api:latest
ports:
- containerPort: 8000
env:
- name: MONGODB_URL
- name: MONGODB_DATABASE
value: "datacenter_docs"
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mongodb-url
- name: REDIS_URL
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: redis-url
- name: MCP_SERVER_URL
valueFrom:
configMapKeyRef:
name: datacenter-config
key: mcp-server-url
- name: MCP_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mcp-api-key
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: anthropic-api-key
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "1000m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
periodSeconds: 5
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: chat
namespace: datacenter-docs
spec:
replicas: 2
selector:
matchLabels:
app: chat
template:
metadata:
labels:
app: chat
spec:
containers:
- name: chat
image: registry.company.local/datacenter-docs/chat:latest
ports:
- containerPort: 8001
env:
- name: MONGODB_URL
- name: MONGODB_DATABASE
value: "datacenter_docs"
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mongodb-url
- name: REDIS_URL
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: redis-url
- name: MCP_SERVER_URL
valueFrom:
configMapKeyRef:
name: datacenter-config
key: mcp-server-url
- name: MCP_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mcp-api-key
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: anthropic-api-key
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "1000m"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: worker
namespace: datacenter-docs
spec:
replicas: 3
selector:
matchLabels:
app: worker
template:
metadata:
labels:
app: worker
spec:
containers:
- name: worker
image: registry.company.local/datacenter-docs/worker:latest
env:
- name: MONGODB_URL
- name: MONGODB_DATABASE
value: "datacenter_docs"
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mongodb-url
- name: REDIS_URL
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: redis-url
- name: MCP_SERVER_URL
valueFrom:
configMapKeyRef:
name: datacenter-config
key: mcp-server-url
- name: MCP_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mcp-api-key
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: anthropic-api-key
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "2Gi"
cpu: "1000m"

View File

@@ -0,0 +1,172 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
namespace: datacenter-docs
spec:
replicas: 3
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: registry.company.local/datacenter-docs/api:latest
ports:
- containerPort: 8000
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: database-url
- name: REDIS_URL
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: redis-url
- name: MCP_SERVER_URL
valueFrom:
configMapKeyRef:
name: datacenter-config
key: mcp-server-url
- name: MCP_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mcp-api-key
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: anthropic-api-key
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "1000m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
periodSeconds: 5
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: chat
namespace: datacenter-docs
spec:
replicas: 2
selector:
matchLabels:
app: chat
template:
metadata:
labels:
app: chat
spec:
containers:
- name: chat
image: registry.company.local/datacenter-docs/chat:latest
ports:
- containerPort: 8001
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: database-url
- name: REDIS_URL
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: redis-url
- name: MCP_SERVER_URL
valueFrom:
configMapKeyRef:
name: datacenter-config
key: mcp-server-url
- name: MCP_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mcp-api-key
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: anthropic-api-key
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "1000m"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: worker
namespace: datacenter-docs
spec:
replicas: 3
selector:
matchLabels:
app: worker
template:
metadata:
labels:
app: worker
spec:
containers:
- name: worker
image: registry.company.local/datacenter-docs/worker:latest
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: database-url
- name: REDIS_URL
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: redis-url
- name: MCP_SERVER_URL
valueFrom:
configMapKeyRef:
name: datacenter-config
key: mcp-server-url
- name: MCP_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mcp-api-key
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: anthropic-api-key
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "2Gi"
cpu: "1000m"

View File

@@ -0,0 +1,39 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: datacenter-docs
namespace: datacenter-docs
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- docs.company.local
secretName: datacenter-docs-tls
rules:
- host: docs.company.local
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api
port:
number: 8000
- path: /chat
pathType: Prefix
backend:
service:
name: chat
port:
number: 8001
- path: /
pathType: Prefix
backend:
service:
name: frontend
port:
number: 80

View File

@@ -0,0 +1,151 @@
---
apiVersion: v1
kind: Service
metadata:
name: mongodb
namespace: datacenter-docs
labels:
app: mongodb
spec:
ports:
- port: 27017
targetPort: 27017
name: mongodb
clusterIP: None
selector:
app: mongodb
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongodb
namespace: datacenter-docs
spec:
serviceName: mongodb
replicas: 3 # MongoDB replica set
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mongodb
image: mongo:7.0
command:
- mongod
- "--replSet"
- "rs0"
- "--bind_ip_all"
- "--auth"
ports:
- containerPort: 27017
name: mongodb
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mongodb-root-user
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mongodb-root-password
- name: MONGO_INITDB_DATABASE
value: "datacenter_docs"
volumeMounts:
- name: mongodb-data
mountPath: /data/db
- name: mongodb-config
mountPath: /data/configdb
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "2000m"
livenessProbe:
exec:
command:
- mongosh
- --eval
- "db.adminCommand('ping')"
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
exec:
command:
- mongosh
- --eval
- "db.adminCommand('ping')"
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
volumeClaimTemplates:
- metadata:
name: mongodb-data
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: standard
resources:
requests:
storage: 20Gi
- metadata:
name: mongodb-config
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: standard
resources:
requests:
storage: 1Gi
---
# MongoDB initialization job (optional, for replica set setup)
apiVersion: batch/v1
kind: Job
metadata:
name: mongodb-init
namespace: datacenter-docs
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: init
image: mongo:7.0
command:
- /bin/bash
- -c
- |
sleep 30
mongosh --host mongodb-0.mongodb.datacenter-docs.svc.cluster.local \
--username $MONGO_ROOT_USER --password $MONGO_ROOT_PASSWORD \
--authenticationDatabase admin \
--eval '
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongodb-0.mongodb.datacenter-docs.svc.cluster.local:27017" },
{ _id: 1, host: "mongodb-1.mongodb.datacenter-docs.svc.cluster.local:27017" },
{ _id: 2, host: "mongodb-2.mongodb.datacenter-docs.svc.cluster.local:27017" }
]
})
'
env:
- name: MONGO_ROOT_USER
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mongodb-root-user
- name: MONGO_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: datacenter-secrets
key: mongodb-root-password

View File

@@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: datacenter-docs
labels:
name: datacenter-docs

View File

@@ -0,0 +1,32 @@
# Template for Kubernetes Secrets
# IMPORTANT: Do not commit this file with real values!
# Create actual secret with:
# kubectl create secret generic datacenter-secrets \
# --from-literal=mongodb-url='mongodb://admin:password@mongodb:27017' \
# --from-literal=mongodb-root-user='admin' \
# --from-literal=mongodb-root-password='secure_password' \
# --from-literal=redis-url='redis://:password@redis:6379/0' \
# --from-literal=mcp-api-key='your-mcp-key' \
# --from-literal=anthropic-api-key='sk-ant-api03-xxx' \
# -n datacenter-docs
apiVersion: v1
kind: Secret
metadata:
name: datacenter-secrets
namespace: datacenter-docs
type: Opaque
stringData:
# MongoDB
mongodb-url: "mongodb://admin:CHANGE_ME@mongodb:27017"
mongodb-root-user: "admin"
mongodb-root-password: "CHANGE_ME"
# Redis
redis-url: "redis://:CHANGE_ME@redis:6379/0"
# MCP Server
mcp-api-key: "CHANGE_ME"
# Anthropic Claude
anthropic-api-key: "sk-ant-api03-CHANGE_ME"

View File

@@ -0,0 +1,26 @@
---
apiVersion: v1
kind: Service
metadata:
name: api
namespace: datacenter-docs
spec:
selector:
app: api
ports:
- port: 8000
targetPort: 8000
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
name: chat
namespace: datacenter-docs
spec:
selector:
app: chat
ports:
- port: 8001
targetPort: 8001
type: ClusterIP