feat(import): bulk tool import (CSV/JSON/YAML) for admins; NetBox-style help button
Build & Push Docker Image / build (push) Successful in 2m49s
Build & Push Docker Image / build (push) Successful in 2m49s
- Add POST /admin/tools/import with format auto-detect, CSV delimiters
(comma/semicolon/tab), per-row validation via CreateToolBody, bulk insert,
audit log entries per imported tool; gated by new 'tool-import' feature
flag (premium/enterprise; admins always pass)
- Add tool-import-dialog UI (format tabs, delimiter select, textarea, file
upload, result/error list) behind hasFeature('tool-import')
- Replace FieldHelp question marks and bare GuideHelp links with a NetBox-style
'Hilfe/Help' outline button (HelpCircle + text) in form headers only
- Sync locales to 482 keys per language (de/en), update handbook docs
(administration import section, index/plaene feature tables), regenerate
API client + zod schemas, add yaml dependency
This commit is contained in:
@@ -36,6 +36,46 @@ Central access to the tool catalog.
|
||||
- **Bulk action:** select multiple tools and move them to the trash
|
||||
(confirmation dialog; soft-deleted tools are removed from all public views
|
||||
and can be restored or permanently deleted).
|
||||
- **Import** (premium): via the **Import** button at the top right, multiple
|
||||
tools can be created at once. The format is detected automatically (CSV,
|
||||
JSON or YAML); for CSV the delimiter can be chosen (auto-detect, comma,
|
||||
semicolon or tab). Data can be pasted directly into the form or uploaded
|
||||
as a file.
|
||||
|
||||
Supported fields: `name` (required), `description`, `category`, `websiteUrl`,
|
||||
`iconUrl`, `features`, `tags` (`features`/`tags` are `|`-separated lists).
|
||||
|
||||
**CSV example:**
|
||||
|
||||
```csv
|
||||
name;description;category;features;tags
|
||||
Grafana;Observability and dashboard platform;Monitoring;Dashboards|Alerts;devops
|
||||
Prometheus;Time-series database;Monitoring;Metrics;devops
|
||||
```
|
||||
|
||||
**JSON example:**
|
||||
|
||||
```json
|
||||
[
|
||||
{ "name": "Grafana", "category": "Monitoring", "features": ["Dashboards"] },
|
||||
{ "name": "Prometheus", "category": "Monitoring" }
|
||||
]
|
||||
```
|
||||
|
||||
**YAML example:**
|
||||
|
||||
```yaml
|
||||
- name: Grafana
|
||||
category: Monitoring
|
||||
features:
|
||||
- Dashboards
|
||||
- name: Prometheus
|
||||
category: Monitoring
|
||||
```
|
||||
|
||||
During import, individual faulty rows are skipped and listed with their row
|
||||
number; correct rows are still created. Every import produces audit-log
|
||||
entries.
|
||||
|
||||
## "Audit log" tab
|
||||
|
||||
|
||||
@@ -36,6 +36,46 @@ Zentraler Zugriff auf den Tool-Katalog.
|
||||
- **Massenaktion:** mehrere Tools auswählen und in den Papierkorb verschieben
|
||||
(Bestätigungsdialog; soft gelöschte Tools sind aus allen öffentlichen Ansichten
|
||||
entfernt und können wiederhergestellt oder endgültig gelöscht werden).
|
||||
- **Importieren** (Premium): über die Schaltfläche **Importieren** oben rechts
|
||||
können mehrere Tools gleichzeitig angelegt werden. Das Format wird automatisch
|
||||
erkannt (CSV, JSON oder YAML); für CSV lässt sich der Trenner wählen
|
||||
(automatisch, Komma, Semikolon oder Tabulator). Die Daten lassen sich direkt
|
||||
ins Formular einfügen oder als Datei hochladen.
|
||||
|
||||
Unterstützte Felder: `name` (Pflicht), `description`, `category`, `websiteUrl`,
|
||||
`iconUrl`, `features`, `tags` (`features`/`tags` sind mit `|` getrennte Listen).
|
||||
|
||||
**CSV-Beispiel:**
|
||||
|
||||
```csv
|
||||
name;description;category;features;tags
|
||||
Grafana;Observability- und Dashboard-Plattform;Monitoring;Dashboards|Alerts;devops
|
||||
Prometheus;Zeitreihen-Datenbank;Monitoring;Metrics;devops
|
||||
```
|
||||
|
||||
**JSON-Beispiel:**
|
||||
|
||||
```json
|
||||
[
|
||||
{ "name": "Grafana", "category": "Monitoring", "features": ["Dashboards"] },
|
||||
{ "name": "Prometheus", "category": "Monitoring" }
|
||||
]
|
||||
```
|
||||
|
||||
**YAML-Beispiel:**
|
||||
|
||||
```yaml
|
||||
- name: Grafana
|
||||
category: Monitoring
|
||||
features:
|
||||
- Dashboards
|
||||
- name: Prometheus
|
||||
category: Monitoring
|
||||
```
|
||||
|
||||
Beim Import werden einzelne fehlerhafte Zeilen übersprungen und mit Zeilennummer
|
||||
aufgelistet; korrekte Zeilen werden trotzdem angelegt. Jeder Import erzeugt
|
||||
Audit-Log-Einträge.
|
||||
|
||||
## Tab „Audit-Log"
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ tools**. Users maintain a shared catalog of tools, submit ratings
|
||||
| **Record costs** | Enter license and cost models per tool | Premium |
|
||||
| **Analytics** | Statistics, top tools, distributions | Everyone |
|
||||
| **Trash** | Restore soft-deleted tools or delete them permanently | Premium |
|
||||
| **Import** | Create multiple tools via CSV, JSON or YAML | Admin (premium) |
|
||||
| **Admin** | User management, audit log, system information | Admin |
|
||||
| **Redundancy detection** | Automatic duplicate detection | Admin |
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ die richtige Wahl zu treffen.
|
||||
| **Kosten erfassen** | Lizenz- und Kostenmodelle je Tool eintragen | Premium |
|
||||
| **Analytics** | Statistiken, Top-Tools, Verteilungen | Alle |
|
||||
| **Papierkorb** | Soft-gelöschte Tools wiederherstellen oder endgültig löschen | Premium |
|
||||
| **Import** | Mehrere Tools per CSV, JSON oder YAML anlegen | Admin (Premium) |
|
||||
| **Admin** | Nutzerverwaltung, Audit-Log, Systeminformationen | Admin |
|
||||
| **Redundanz** | Automatische Doppelungs-Erkennung | Admin |
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ Premium/Enterprise unlock the following features:
|
||||
| `watchlist` | Favorites list | [Watchlist](/docs/handbook/watchlist) |
|
||||
| `trash` | Trash (soft-deleted tools) | [Trash](/docs/handbook/papierkorb) |
|
||||
| `costs` | Record cost/license models | [Recording costs](/docs/handbook/kosten) |
|
||||
| `tool-import` | Import tools via CSV/JSON/YAML (admin) | [Administration](/docs/handbook/administration) |
|
||||
|
||||
If you are missing a feature, the app shows an **upgrade notice** with a link
|
||||
to the plan management.
|
||||
|
||||
@@ -26,6 +26,7 @@ Premium/Enterprise schalten folgende Features frei:
|
||||
| `watchlist` | Favoritenliste | [Merkliste](/docs/handbook/watchlist) |
|
||||
| `trash` | Papierkorb (soft gelöschte Tools) | [Papierkorb](/docs/handbook/papierkorb) |
|
||||
| `costs` | Kosten-/Lizenzmodelle erfassen | [Kosten erfassen](/docs/handbook/kosten) |
|
||||
| `tool-import` | Tools per CSV/JSON/YAML importieren (Admin) | [Administration](/docs/handbook/administration) |
|
||||
|
||||
Fehlt dir ein Feature, zeigt die App einen **Upgrade-Hinweis** mit Link zur
|
||||
Tarifverwaltung.
|
||||
|
||||
Reference in New Issue
Block a user