# Fastlane Gitea Prompt- und Schema-Definitionen fuer **Fastlane** — die KI-Schnittstelle zwischen Fachanwendern und einem externen System. Claude analysiert natuerlichsprachliche Anfragen und liefert strukturierte JSON-Antworten, die vom Flutter-Frontend gerendert werden. ## Verzeichnisstruktur ``` prompts/ # System-Prompts (steuern Claudes Verhalten) schemas/ # JSON-Schemas (definieren die Antwortstruktur) ``` ## Prompts (`prompts/`) Jeder Prompt ist eine JSON-Datei mit folgendem Aufbau: ```json { "key": "unique_identifier", "description": "Kurzbeschreibung des Prompts", "response_schema_ref": "fastlane_response.schema.json", "tags": ["tag1", "tag2"], "system_prompt": "Der vollstaendige System-Prompt als String" } ``` | Feld | Beschreibung | |-----------------------|-------------------------------------------------------| | `key` | Eindeutiger Bezeichner | | `description` | Was der Prompt tut | | `response_schema_ref` | Verweis auf das JSON-Schema fuer die Antwort | | `tags` | Kategorisierung (z.B. `general`, `fleet`, `energy`) | | `system_prompt` | Instruktionen an Claude | ## Schemas (`schemas/`) JSON-Schema-Dateien (Draft-07), die die Antwortstruktur validieren. ### Antwort-Modi Claude antwortet immer mit **einem** von zwei Modi: #### `response_type: "form"` Wird verwendet, wenn Claude **zusaetzliche Informationen** braucht. Generiert ein Formular, das im Flutter-Frontend via `flutter_form_builder` gerendert wird. ```json { "response_type": "form", "message": "Bitte waehle den Zeitraum aus.", "form": { "title": "Zeitraum waehlen", "fields": [ { "name": "zeitraum", "widget": "date_range_picker", "label": "Zeitraum", "validators": [{ "type": "required" }] } ] } } ``` #### `response_type: "result"` Wird verwendet, wenn Claude **alle Informationen** hat. Kann HTML, Intents und Code-Bloecke enthalten. ```json { "response_type": "result", "message": "Hier ist die Uebersicht.", "html_content": "...
", "intents": [{ "action": "notify", "params": { "message": "Fertig" } }], "code_blocks": [{ "execution_type": "graphql", "code": "{ vehicles { id } }" }] } ``` ### Verfuegbare Form-Widgets `text_field` | `dropdown` | `date_time_picker` | `date_range_picker` | `checkbox` | `checkbox_group` | `radio_group` | `switch_field` | `slider` | `range_slider` | `choice_chip` | `filter_chip` | `segmented_control` | `typeahead` ### Verfuegbare Intent-Actions | Action | Zweck | |------------|---------------------------------------| | `navigate` | Zu einer Route navigieren | | `display` | Daten in einer Komponente anzeigen | | `confirm` | Bestaetigung vor destruktiver Aktion | | `refresh` | Aktuelle Ansicht aktualisieren | | `notify` | Toast-Benachrichtigung | ### Code-Block-Typen | Typ | Verwendung | |-----------|---------------------------------------------------| | `python` | `httpx` + `AUTH_HEADERS`, Ergebnis in `result` | | `graphql` | Query/Mutation mit `variables` | | `odata` | `path`, `method`, `params`, `body` |