- 移除 nemo-node-animation.tsx (無人引用,已被 NemoClaw 取代) - Migration YAML: 修復 $$ 在 YAML heredoc 被 shell 解析問題 改用單引號字串 DO '' 語法 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
89 lines
3.5 KiB
YAML
89 lines
3.5 KiB
YAML
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: migrate-knowledge-entries
|
|
namespace: awoooi-prod
|
|
labels:
|
|
app: awoooi-migration
|
|
phase: "kb-1"
|
|
spec:
|
|
ttlSecondsAfterFinished: 300
|
|
backoffLimit: 1
|
|
template:
|
|
spec:
|
|
restartPolicy: Never
|
|
containers:
|
|
- name: migrate
|
|
image: postgres:15-alpine
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- |
|
|
echo "=========================================="
|
|
echo "Knowledge Base Phase 1 - CREATE TABLE"
|
|
echo "=========================================="
|
|
|
|
DB_HOST=$(echo $DATABASE_URL | sed 's/.*@\([^:]*\):.*/\1/')
|
|
DB_PORT=$(echo $DATABASE_URL | sed 's/.*:\([0-9]*\)\/.*/\1/')
|
|
DB_NAME=$(echo $DATABASE_URL | sed 's/.*\/\([^?]*\).*/\1/')
|
|
DB_USER=$(echo $DATABASE_URL | sed 's/.*\/\/\([^:]*\):.*/\1/')
|
|
DB_PASS=$(echo $DATABASE_URL | sed 's/.*:\/\/[^:]*:\([^@]*\)@.*/\1/')
|
|
|
|
echo "Connecting to: $DB_HOST:$DB_PORT/$DB_NAME"
|
|
|
|
export PGPASSWORD="$DB_PASS"
|
|
|
|
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" <<'EOSQL'
|
|
|
|
-- 建立 Enum types (IF NOT EXISTS)
|
|
-- Create enum types if not exist (safe for re-run)
|
|
DO 'BEGIN CREATE TYPE entrytype AS ENUM (''incident_case'', ''runbook'', ''best_practice'', ''postmortem''); EXCEPTION WHEN duplicate_object THEN NULL; END';
|
|
DO 'BEGIN CREATE TYPE entrysource AS ENUM (''ai_extracted'', ''human''); EXCEPTION WHEN duplicate_object THEN NULL; END';
|
|
DO 'BEGIN CREATE TYPE entrystatus AS ENUM (''draft'', ''review'', ''approved'', ''archived''); EXCEPTION WHEN duplicate_object THEN NULL; END';
|
|
|
|
-- 建立 knowledge_entries table
|
|
CREATE TABLE IF NOT EXISTS knowledge_entries (
|
|
id VARCHAR(36) PRIMARY KEY,
|
|
title VARCHAR(255) NOT NULL,
|
|
content TEXT NOT NULL,
|
|
entry_type entrytype NOT NULL,
|
|
category VARCHAR(100) NOT NULL,
|
|
tags JSONB DEFAULT '[]'::jsonb NOT NULL,
|
|
source entrysource NOT NULL,
|
|
status entrystatus NOT NULL DEFAULT 'draft',
|
|
related_incident_id VARCHAR(30),
|
|
related_playbook_id VARCHAR(255),
|
|
view_count INTEGER NOT NULL DEFAULT 0,
|
|
created_by VARCHAR(100),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- 建立 Indexes
|
|
CREATE INDEX IF NOT EXISTS ix_knowledge_entry_type ON knowledge_entries(entry_type);
|
|
CREATE INDEX IF NOT EXISTS ix_knowledge_category ON knowledge_entries(category);
|
|
CREATE INDEX IF NOT EXISTS ix_knowledge_status ON knowledge_entries(status);
|
|
CREATE INDEX IF NOT EXISTS ix_knowledge_created_at ON knowledge_entries(created_at);
|
|
|
|
-- 驗證
|
|
SELECT column_name, data_type
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'knowledge_entries'
|
|
ORDER BY ordinal_position;
|
|
|
|
EOSQL
|
|
|
|
echo "=========================================="
|
|
echo "Knowledge Base migration completed!"
|
|
echo "=========================================="
|
|
envFrom:
|
|
- secretRef:
|
|
name: awoooi-secrets
|
|
resources:
|
|
requests:
|
|
memory: "64Mi"
|
|
cpu: "100m"
|
|
limits:
|
|
memory: "128Mi"
|
|
cpu: "200m"
|