Datenpunkte für Zielfortschritt und Meilensteine
Verwandeln Sie einen aktuellen Zielstand in einheitliche Daten für Meilensteine und Fortschrittsdiagramme, ohne die Berechnung in jedem Dashboard neu umzusetzen.
Im Browser ausführen – kostenlos
Geben Sie Startwert, aktuellen Wert, Zielwert und die gewünschten Meilenstein-Prozentsätze an. Das Ergebnis enthält den tatsächlichen Fortschritt, eine für Diagramme begrenzte Position, erreichte Meilensteine, den nächsten noch offenen Meilenstein und eine sortierte Punktreihe. Die Berechnung eignet sich sowohl für steigende Ziele als auch für Kennzahlen, die sinken sollen, etwa Fehlerzahlen, Ausgaben oder Antwortzeiten.
Definieren Sie das Ziel mit einem eindeutigen Ausgangspunkt
Für einen aussagekräftigen Fortschrittswert werden drei Werte benötigt, nicht nur Ist- und Zielwert. Der Startwert legt null Prozent fest, der Zielwert hundert Prozent und der aktuelle Wert zeigt den gegenwärtigen Stand. Dieser Unterschied ist entscheidend, wenn eine Aufgabe nicht bei null beginnt. Soll beispielsweise ein Wert von 20 auf 100 steigen, liegt die Hälfte des Weges bei 60; der Fortschritt beträgt nicht einfach sechzig Prozent, nur weil der aktuelle Wert 60 lautet. Übermitteln Sie die Werte als Zahlen und mindestens einen Meilenstein zwischen null und hundert Prozent. Die Reihenfolge der Meilensteine ist beliebig, doppelte Prozentsätze werden zusammengefasst, sodass das Diagramm eine saubere aufsteigende Reihe erhält. Start- und Zielwert müssen verschieden sein, da ein Bereich ohne Länge keinen sinnvollen Fortschrittsquotienten besitzt. Sind beide gleich, liefert die Funktion einen typisierten Eingabefehler statt Unendlich, eines willkürlichen Prozentsatzes oder scheinbar gültiger Diagrammdaten. Pro Anfrage werden höchstens hundert Meilenstein-Einträge verarbeitet. Das begrenzt Laufzeit und Ausgabe und reicht zugleich für sehr detaillierte Pläne aus.
Deuten Sie steigende und fallende Ziele einheitlich
Dieselbe Formel deckt beide Richtungen ab: Der Fortschritt ist die seit dem Start zurückgelegte Strecke geteilt durch die gesamte Strecke vom Start zum Ziel. Liegt der Zielwert höher, kennzeichnet das Ergebnis das Ziel als steigend. Liegt er niedriger, wird es als fallend gekennzeichnet; eine Verringerung von 100 Vorfällen auf den Zielwert 20 zählt damit als Fortschritt und nicht als negatives Ergebnis. Der ausgegebene Fortschrittswert wird bewusst nicht begrenzt. Ein Wert unter null zeigt eine Verschlechterung über den Ausgangspunkt hinaus, während ein Wert über hundert eine Übererfüllung dokumentiert. Für die Darstellung werden chart_progress_percentage und chart_percentage des aktuellen Punkts getrennt auf den Bereich von null bis hundert begrenzt. Die Entscheidung, ob ein Meilenstein erreicht wurde, beruht auf dem tatsächlichen unbegrenzten Fortschritt. Jeder normalisierte Meilenstein enthält Prozentsatz, den zugehörigen Wert auf der Zielstrecke und seinen Status. Zusätzlich nennt die Ausgabe Anzahl und Prozentsätze der erreichten Meilensteine sowie den nächsten offenen Meilenstein. Sind alle erreicht, wird dieses optionale Feld weggelassen und nicht als null zurückgegeben.
Übernehmen Sie die Punkte in Diagramme und Statusansichten
Das Array chart_points liefert einen sortierten Startpunkt, je einen Punkt für jeden normalisierten Meilenstein und einen Zielpunkt. Jeder Datensatz enthält Art, Prozentsatz, Wert und Erreichungsstatus und eignet sich deshalb für Liniendiagramme, Fortschrittsleisten, Zeitmarken und barrierearme Textzusammenfassungen. Das Objekt current_point bewahrt den tatsächlichen Istwert und den ungekürzten Fortschritt und stellt zusätzlich die begrenzte Diagrammkoordinate bereit. Dadurch kann ein Dashboard den Marker bei Rückstand oder Übererfüllung sicher am Rand darstellen und zugleich den ehrlichen Wert in einer Beschriftung oder einem Tooltip nennen. Verwenden Sie reached_milestone_percentages für Abzeichen, Erfolgsmeldungen oder Audit-Ereignisse und next_milestone für den nächsten Schritt, ohne das Array erneut durchsuchen zu müssen. Die Berechnung ist deterministisch und nutzt weder Netzwerk noch Uhrzeit, gespeicherten Zustand oder Zufall; identische Eingaben erzeugen identische Ausgaben. Für interaktive Planung läuft sie kostenlos im Browser. Beim automatischen Erstellen von Berichten, Aktualisieren von Dashboards oder Verarbeiten von Zieldatensätzen können Sie die API für $0.002 pro Anfrage aufrufen.
Anwendungsfälle
Ein OKR-Dashboard darstellen
Wandeln Sie Ausgangswert, aktuelle Messung, Ziel und Prüfgrenzen jedes Ergebnisses in einheitliche Fortschrittsmarken um.
Ein Reduktionsziel verfolgen
Zeigen Sie korrekten Fortschritt, wenn ein niedrigerer Wert gewünscht ist, etwa weniger Fehler, Vorfälle oder Supportverzögerungen.
Meilenstein-Hinweise erzeugen
Vergleichen Sie erreichte Prozentsätze mit dem vorherigen Anwendungsstand, um passende Erfolgsmeldungen auszuwählen.
Häufige Fragen
Werden Ziele unterstützt, deren Zielwert unter dem Startwert liegt?
Ja. Fallende Ziele verwenden dieselbe streckenbasierte Berechnung und werden als fallend gekennzeichnet.
Was geschieht, wenn der Fortschritt das Ziel überschreitet?
Der tatsächliche Prozentsatz darf über 100 liegen und die Übererfüllung zeigen; die Diagrammposition bleibt auf 100 begrenzt.
Wie werden unsortierte oder doppelte Meilensteine behandelt?
Sie werden zusammengefasst und vor der Berechnung der Werte und Status aufsteigend sortiert.
Warum werden gleiche Start- und Zielwerte abgelehnt?
Der Bereich hätte die Länge null; eine Division könnte daher keinen aussagekräftigen Fortschrittswert ergeben.
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002; die interaktive Browser-Version ist kostenlos.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/final3/goal-milestone-progress-chart-data \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start_value":20,"current_value":68,"target_value":100,"milestone_percentages":[25,50,75,100]}'const res = await fetch("https://api.kit.forhosting.com/final3/goal-milestone-progress-chart-data", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start_value": 20,
"current_value": 68,
"target_value": 100,
"milestone_percentages": [
25,
50,
75,
100
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/final3/goal-milestone-progress-chart-data",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start_value": 20,
"current_value": 68,
"target_value": 100,
"milestone_percentages": [
25,
50,
75,
100
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/final3/goal-milestone-progress-chart-data", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start_value":20,"current_value":68,"target_value":100,"milestone_percentages":[25,50,75,100]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start_value":20,"current_value":68,"target_value":100,"milestone_percentages":[25,50,75,100]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/final3/goal-milestone-progress-chart-data", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"start_value": 20,
"current_value": 68,
"target_value": 100,
"milestone_percentages": [
25,
50,
75,
100
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "final3.goal_milestone_progress_chart_data",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_items | 100 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |