{
  "schemaVersion": 1,
  "project": {
    "name": "Open-Source-BI-Pilot (BIS-Vorlage v1)",
    "goal": "Bericht, Rechte und Wiederherstellung mit denselben Sollwerten prüfen. Beispiel-Muss-Kriterien vor dem Pilot anpassen; keine vorausgefüllten Produktnoten.",
    "sources": "Synthetischer Monatsfall: Jan Nord 1000/600; Jan Süd 3000/2400; Feb Nord 2000/1200; Feb Süd 1000/800 (Umsatz/direkte Kosten in EUR).",
    "owners": "Verantwortliche für Daten, Anwendung, Rechte und Vertretung ergänzen."
  },
  "candidates": [
    {
      "id": "candidate-1",
      "name": "Metabase",
      "provider": "Metabase",
      "edition": "Open Source — Version ergänzen"
    },
    {
      "id": "candidate-2",
      "name": "Apache Superset",
      "provider": "Apache Superset",
      "edition": "Open Source — Version ergänzen"
    },
    {
      "id": "candidate-3",
      "name": "Lightdash",
      "provider": "Lightdash",
      "edition": "Offener Kern — Version und Funktionsumfang ergänzen"
    }
  ],
  "criteria": [
    {
      "id": "criterion-1",
      "group": "Daten und Kennzahlen",
      "title": "Benötigte Quellen anbinden",
      "target": "Konkrete Datenbank, Treiber, Anmeldeweg und Version dokumentieren; Datenaufbereitung getrennt vom BI-Werkzeug benennen.",
      "requirement": "must",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-2",
      "group": "Daten und Kennzahlen",
      "title": "Deckungsbeitrag korrekt aggregieren",
      "target": "Im BIS-Monatsfall: Umsatz 7000 EUR, direkte Kosten 5000 EUR, Deckungsbeitrag 2000 EUR und Gesamtquote 28,57 %. Kein Mittelwert der vier Zeilenquoten (30 %).",
      "requirement": "must",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-3",
      "group": "Daten und Kennzahlen",
      "title": "Kennzahlendefinitionen pflegen",
      "target": "Zähler, Nenner, Filter und Zeitraum dokumentieren. Eine zweite Person kann die Definition ändern und die Änderung nachvollziehen.",
      "requirement": "could",
      "weight": 4,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-4",
      "group": "Rollen und Rechte",
      "title": "Bereiche mit Leseridentitäten trennen",
      "target": "Nord sieht nur Nord: Umsatz 3000 / Deckungsbeitrag 1200 EUR. Süd sieht nur Süd: 4000 / 800 EUR. Mit getrennten normalen Konten prüfen. Wenn nicht gefordert, Kriterium vorab anpassen.",
      "requirement": "must",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-5",
      "group": "Rollen und Rechte",
      "title": "Rechte in Export und Abfragewegen beibehalten",
      "target": "Jede Leseridentität darf auch über Export und verfügbare Abfragewege keine fremden Bereichszeilen lesen. Tatsächliche Ausgabe und Wege als Beleg nennen.",
      "requirement": "must",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-6",
      "group": "Rollen und Rechte",
      "title": "Anmeldung im vorgesehenen Verfahren",
      "target": "Benötigtes SSO-/LDAP-Verfahren, genaue Edition und Freischaltung prüfen. Falls kein SSO gefordert ist, vorab ändern; nicht pauschal alle Verfahren als verfügbar markieren.",
      "requirement": "must",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-7",
      "group": "Betrieb",
      "title": "Betriebsverantwortung und Vertretung",
      "target": "Anwendung, Metadaten-/Konfigurationsdatenbank, Datenquelle, Jobs, Alarmierung und Vertretung sind verantwortlichen Personen zugeordnet.",
      "requirement": "must",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-8",
      "group": "Betrieb",
      "title": "Produktionsaufbau und Updates",
      "target": "Produktionsweg für konkrete Version dokumentieren, vom Demoaufbau unterscheiden. Update in Testumgebung durchführen und den Rückweg festhalten.",
      "requirement": "must",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-9",
      "group": "Betrieb",
      "title": "Wiederherstellung praktisch prüfen",
      "target": "Testdashboard einschließlich Definitionen und Rechten aus Sicherung in separater Testumgebung wiederherstellen; Soll/Ist, Datum und Dauer protokollieren.",
      "requirement": "must",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-10",
      "group": "Betrieb",
      "title": "Fehler und Datenstand sichtbar machen",
      "target": "Ein absichtlich fehlgeschlagener Testlauf und letzter erfolgreicher Datenstand sind für die zuständige Person sichtbar.",
      "requirement": "could",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-11",
      "group": "Betrieb",
      "title": "Fachanwender-Aufgabe selbst ausführen",
      "target": "Vorgesehener Autor erstellt eine Monatsansicht und korrigiert eine Kennzahl mit dokumentiertem Unterstützungsbedarf.",
      "requirement": "could",
      "weight": 4,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-12",
      "group": "Kosten und Exit",
      "title": "Lizenzen und Funktionsgrenzen erfassen",
      "target": "Release und Lizenzdatei, offene/kommerzielle Bestandteile sowie benötigte bezahlte Funktionen dokumentieren. Klärungsbedarf bei Einbettung oder Änderungen festhalten.",
      "requirement": "must",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-13",
      "group": "Kosten und Exit",
      "title": "Gesamtkosten statt Lizenzpreis",
      "target": "Einführung, Infrastruktur, Betriebsstunden, Stundensatz, Daten-/Konnektorkosten und mögliche kommerzielle Funktionen für dasselbe erste Jahr in EUR ausweisen.",
      "requirement": "must",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    },
    {
      "id": "criterion-14",
      "group": "Kosten und Exit",
      "title": "Exit an einem Bericht zeigen",
      "target": "Daten, Berichts-/Kennzahlendefinitionen, Rechte und Konfiguration sichern; Wiederverwendung und verbleibende Handarbeit dokumentieren.",
      "requirement": "could",
      "weight": 3,
      "assessments": {
        "candidate-1": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-2": {
          "status": "unchecked",
          "evidence": ""
        },
        "candidate-3": {
          "status": "unchecked",
          "evidence": ""
        }
      }
    }
  ]
}
