# AZion Scheduler – High-Performance Process Dashboard AZion is a specialized Vite + React SPA designed for high-performance visualization and management of server-side processes, using **Baserow** as a headless backend. ## 🚀 Quick Start 1. **Install dependencies**: `npm install` 2. **Setup environment**: Rename `.env.example` to `.env` and provide your Baserow API details. 3. **Run Dev server**: `npm run dev` --- ## 🛠 Baserow & n8n Integration Guide This section outlines the exact internal logic the AZion dashboard uses to parse scheduling parameters. When inserting or updating records via an automation runtime like **n8n**, your JSON payload sent to the Baserow API must structurally respect these dependencies. ### 1. Global / Universal Fields These fields are required or heavily impact the UI regardless of the execution type. - **`Name`** *(Single-line text)*: The display name of the process. - **`Server`** *(Linked row)*: Reference ID linking back to the Server Table. n8n payload syntax: `[123]` (Array of IDs). - **`Sortierung`** *(Number)*: The rendering order integer. `1` is pushed to the top of the timeline track. - **`Dauer`** *(Single-line text or Number)*: **Always specified in SECONDS**. Defines the length of the visual block. *(e.g., passing `"1800"` renders a 30-minute block).* - **`Farbe`** *(Single-line text)*: The hex code for the visual block. *(e.g., `"#3b82f6"`).* - **`Status`** *(Single select)*: E.g., `aktiv`, `inaktiv`, `fehler`. - **`Sichtbarkeit`** *(Single select)*: Declares semantic zoom constraints (`Immer`, `Max 6 Stunden`, `Max 1 Tag`, `Max 1 Woche`, `Max 1 Monat`). ### 2. Dynamic Scheduling via `Wiederholung` The logic engine evaluates time solely based on what string is stored inside the **`Wiederholung`** *(Single select)* column. #### Pattern A: Standard Execution **Applies to**: `TAEGLICH`, `WOECHENTLICH`, `WERKTAGE`, `WOCHENENDE`, `MONATLICH_FESTER_TAG` These patterns expect a singular, definitive time of day. * **n8n Setup**: * `Wiederholung`: `"TAEGLICH"` * `Start`: `"HH:MM:SS"` *(e.g., `"08:30:00"`).* * `Dauer`: `"60"` *(60 seconds).* #### Pattern B: Hourly Execution (`STUENDLICH`) * **n8n Setup**: * `Wiederholung`: `"STUENDLICH"` * `Start Minute`: `45` *(Integer 0–59).* * `Dauer`: `"120"` *(2 minutes).* #### Pattern C: Custom Interval (`INTERVALL`) Recurrent blocks bounded between two timestamps. * **n8n Setup**: * `Wiederholung`: `"INTERVALL"` * `Erste Ausführung`: `"HH:MM:SS"` *(Start bounds).* * `Ausführung bis`: `"HH:MM:SS"` *(End bounds).* * `Intervall zwischen`: `"3600"` *(Spacing in SECONDS).* * `Dauer`: `"300"` *(Duration in SECONDS).* --- ### 3. Example JSON Payload (n8n / API) ```json { "Name": "API Heartbeat Checker", "Server": [45], "Wiederholung": "INTERVALL", "Erste Ausführung": "08:00:00", "Ausführung bis": "17:00:00", "Intervall zwischen": "300", "Dauer": "15", "Status": "aktiv", "Farbe": "#22c55e", "Sortierung": 8 } ``` ### 🧠 Performance & Logic Notes - **Block Merging**: The Gantt Chart automatically merges overlapping blocks from the same process to prevent DOM flooding when zoomed out. - **Max View Filter**: High-frequency tasks (like 1-min intervals) are hidden in Monthly/Weekly views unless `Sichtbarkeit` is set to "Immer" to maintain UI responsiveness. - **Auto-Sort**: The frontend automatically finds the next highest `Sortierung` index when creating new tasks via the GUI.