Zum Inhalt

Polycrate API 0.12.0

Release-Datum: 17. Februar 2026
Typ: Feature-Release

Highlights

Das groesste Feature-Release seit 0.11.0. Version 0.12.0 fuehrt den App-Katalog als First-Class ManagedObject ein, implementiert AI-gestuetzte Maintenance-Erkennung via OpenAI und staerkt die Infrastruktur-Modellierung mit dem Provider Model und der Workspace-Pop-Pflicht.

  • CatalogueApp -- Plattformweiter App-Katalog als eigenstaendiges ManagedObject mit Baserow-Import
  • AI Maintenance Detection -- Automatische Erkennung von Provider-Maintenances aus Status-Feeds via OpenAI
  • Provider Model -- Externe Anbieter als eigenes ManagedObject mit Pop/DataSource-Verknuepfung
  • Workspace Pop Required -- Pop als Pflichtfeld fuer Workspaces mit Condition-basiertem Monitoring
  • Artifact Metadata Extraction -- Automatische Extraktion von Metadaten aus block.poly bei Polycrate-Discovery

Artefakte

Docker Images

docker pull cargo.ayedo.cloud/polycrate/polycrate-api:0.12.0

Deployment

polycrate run polycrate-api install

Neue Features

CatalogueApp -- App-Katalog als ManagedObject

Der plattformweite App-Katalog (bisher in Baserow) ist jetzt ein eigenstaendiges ManagedObject in der Polycrate API. Jede CatalogueApp ist mit einem ArtifactPackage (kind=polycrate) verknuepft und erbt darueber Metadaten wie Icon, Beschreibung und Repository-URLs.

Funktionsumfang:

  • CatalogueApp Model mit Seriennummer, Claim, Pricing, Dependencies, Screenshot-Upload (S3)
  • V2 Dynamic Table (List View) mit allen relevanten Spalten
  • Alpine.js Detail View mit Version Switcher, Changelog und README Rendering
  • ArtifactDerivedFieldsMixin fuer Metadaten vom neuesten Artifact
  • CRUD via Django Forms (Paradigma A) im Drawer
  • Baserow-Import via Management Command (import_catalogue_from_baserow)
  • K8sApp FK auf CatalogueApp mit Auto-Zuordnung in Reconciliation
  • API Filter: draft, is_new, zero_downtime, has_artifact_package, Preis-Range

AI-gestuetzte Maintenance-Erkennung

Provider-Status-Meldungen (RSS/API) werden automatisch via OpenAI analysiert und als Maintenance-Drafts erstellt. Die gesamte Logik laeuft in der Note-Reconciliation -- kein separater Celery Task noetig.

Funktionsumfang:

  • MaintenanceDetectionService mit OpenAI-Integration (austauschbar: Ollama, vLLM, Azure)
  • Konfiguration ueber SystemConfig UI (Kategorie "Integration: OpenAI")
  • Idempotenz via analysis_results JSONField auf Note (content_hash Vergleich)
  • Automatisches Pop-Matching (exakt, contains, city/region)
  • Maintenance-Lifecycle: Create als Draft, Update bei Follow-up-Meldungen
  • Confidence-Threshold konfigurierbar (Default: 0.5)
  • Note in Reconciliation Registry (10 Minuten Intervall)
  • Neue Felder auf Maintenance: pop, source_note, source_datasource, source_item_id
  • Neue Felder auf Note: analysis_results (generisches JSONField fuer AI-Prozessoren)

Provider Model

Externe Anbieter (Hetzner, OVH, etc.) als eigenstaendiges ManagedObject im pops App. Provider sind mit Pops und DataSources verknuepft und bilden die Grundlage fuer die AI Maintenance Detection.

Funktionsumfang:

  • Provider Model mit kind, legal_name, slug, logo, contact-Felder
  • Pop hat provider_entity FK zu Provider (required, PROTECT)
  • DataSource hat provider_entity FK zu Provider
  • API, UI, Drawer Table, Admin-Registrierung

Workspace Pop Required

Das Pop-Feld ist fuer Workspaces jetzt pflicht -- per Soft-Enforcement auf Form- und API-Ebene. Bestehende Workspaces ohne Pop erhalten eine Warning-Condition.

Funktionsumfang:

  • Forms: pop required in Create + Edit
  • Serializer: PopSimpleSerializer (read) + pop_id (write, required)
  • Conditions: WORKSPACE_POP_MISSING und WORKSPACE_POP_ARCHIVED
  • Reconciliation prueft Pop-Zuordnung und Pop-Archivierungsstatus

Artifact Metadata Extraction

Die Polycrate-Discovery parst jetzt block.poly YAML und extrahiert Metadaten-Felder in die korrespondierenden Artifact-Model-Felder. Damit werden die ueber ArtifactDerivedFieldsMixin exponierten Felder korrekt befuellt.

Extrahierte Felder: icon_url, website_url, license, app_version, description, display_name, source_urls, default_config

Management Command: extract_artifact_metadata fuer bestehende Artifacts (mit --dry-run, --force, --kind)

Conditional Reconciliation

Reconciliation mit konfigurierbaren Intervallen und Queryset-Filtern. Models koennen ueber get_reconciliation_queryset() steuern, welche Objekte reconciled werden -- und ueber should_reconcile() ob ein individuelles Objekt verarbeitet wird.

Funktionsumfang:

  • get_reconciliation_queryset() Classmethod auf ManagedObject
  • should_reconcile() Instance-Methode
  • Konfigurierbare Intervalle per Model in der Reconciliation Registry
  • Priority-basierte Verarbeitung

Weitere Verbesserungen

  • Sidebar-Menuestruktur-Redesign -- Breadcrumbs in Topbar, ueberarbeitete Gruppenstruktur
  • Bottombar JS-Paradigma -- Edit/Delete Buttons fuer JS-basierte Models (Paradigma B) in der generischen Bottombar
  • K8sApp Block-Version-Spalte -- Version des Polycrate-Blocks in der K8sApp V2 Table
  • Polycrate Changelog Component -- Wiederverwendbare Alpine.js Component fuer CHANGELOG.poly Rendering

polycrate-api Block

Block-Version: 0.6.0

polycrate pull cargo.ayedo.cloud/ayedo/k8s/polycrate-api
polycrate run polycrate-api install

Migration

Datenbank-Migrationen

Dieses Release enthaelt Migrationen fuer:

  • artifacts -- CatalogueApp Model
  • k8s -- catalogue_app FK auf K8sApp
  • maintenances -- pop, source_note, source_datasource, source_item_id
  • notes -- analysis_results JSONField
  • pops -- Provider Model, provider_entity FK auf Pop
make migrate

Neue Python Dependencies

  • openai>=1.0.0 -- OpenAI API Client fuer AI Maintenance Detection

CatalogueApp Import aus Baserow

Nach dem Deployment kann der App-Katalog aus Baserow importiert werden:

make manage CMD="import_catalogue_from_baserow --token=<BASEROW_API_TOKEN>"

Artifact Metadata Backfill

Bestehende Polycrate-Artifacts erhalten Metadaten aus ihren block.poly Specs:

make manage CMD="extract_artifact_metadata --kind polycrate"

OpenAI-Integration konfigurieren

Die AI Maintenance Detection ist per Default deaktiviert. Aktivierung ueber die SystemConfig UI unter "Integration: OpenAI":

  1. OPENAI_INTEGRATION_ENABLED = True
  2. OPENAI_API_KEY setzen (oder lokaler Provider ohne Key)
  3. OPENAI_MAINTENANCE_DETECTION_ENABLED = True