Release 1.4.0: Phase 1 Symbol-Architektur Redesign
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 20m43s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 20m43s
This commit is contained in:
39
CHANGELOG.md
Normal file
39
CHANGELOG.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
Alle nennenswerten Änderungen an diesem Projekt werden in dieser Datei dokumentiert.
|
||||||
|
Das Format basiert auf [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).
|
||||||
|
|
||||||
|
## [1.4.0] – 2026-05-20 — Phase 1: Symbol-Architektur Redesign
|
||||||
|
|
||||||
|
### Neu
|
||||||
|
- **SymbolTemplate** — globale, read-only Vorlagen-Pakete aus `public/signaturen/*.svg`
|
||||||
|
- **TenantCategory** — mandantenspezifische, frei anlegbare Kategorien für Symbole
|
||||||
|
- **TenantSymbol Refactor** — Symbole sind jetzt vollständig mandantenspezifisch (`name`, `svgPath`, `categoryId`, `isUploaded`)
|
||||||
|
- Upload-Dialog für eigene SVG/PNG/JPEG-Symbole mit Drag & Drop
|
||||||
|
- Import-Dialog für Vorlagen-Pakete (z.B. "Feuerwehr Schweiz")
|
||||||
|
|
||||||
|
### APIs
|
||||||
|
- `GET /api/templates` — listet verfügbare Template-Pakete mit Vorschau
|
||||||
|
- `POST /api/templates/import` — importiert ein Paket als TenantSymbols
|
||||||
|
- `GET/POST/PATCH/DELETE /api/tenant/categories` — CRUD für Tenant-Kategorien
|
||||||
|
- `GET/POST/PATCH/DELETE /api/tenant/symbols` — erweitert: Gruppierung, Upload, JSON-Import
|
||||||
|
- `GET /api/tenant/symbols/[id]/image` — liefert TenantSymbol-Bilder aus MinIO oder `public/`
|
||||||
|
- `GET /api/icons/[id]/image` — TenantSymbol-First Lookup, dann Legacy-Fallback
|
||||||
|
- `GET /api/icons` — liefert jetzt auch `tenantSymbols` und `tenantSymbolGroups`
|
||||||
|
|
||||||
|
### UI
|
||||||
|
- **Admin → Symbol-Manager**: komplett neues Layout mit 3 Tabs (Symbole, Kategorien, Import)
|
||||||
|
- **Sidebar (RightSidebar)**: zeigt Tenant-Symbole jetzt nach Kategorie gruppiert an
|
||||||
|
|
||||||
|
### Migration & Seed
|
||||||
|
- `prisma/migrations/20260520_symbol_architecture/migration.sql`
|
||||||
|
- `prisma/seed-symbol-templates.ts`
|
||||||
|
- `prisma/migrate-tenant-symbols.ts`
|
||||||
|
- Alle Seeds idempotent (`upsert` statt `deleteMany`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [1.3.5] – vor 2026-05-20
|
||||||
|
|
||||||
|
### Bestehende Features
|
||||||
|
- Karten-Zeichenwerkzeuge, Journal, Einsatzrapport, Projekte, Benutzerverwaltung, Mandantenverwaltung
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "lageplan",
|
"name": "lageplan",
|
||||||
"version": "1.3.5",
|
"version": "1.4.0",
|
||||||
"description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation",
|
"description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import { join } from 'path'
|
|||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
request: NextRequest,
|
request: NextRequest,
|
||||||
{ params }: { params: { id: string } }
|
{ params }: { params: Promise<{ id: string }> }
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
const id = params.id
|
const { id } = await params
|
||||||
|
|
||||||
// ─── 1. Try TenantSymbol first (Phase 1 architecture) ───
|
// ─── 1. Try TenantSymbol first (Phase 1 architecture) ───
|
||||||
const tenantSymbol = await (prisma as any).tenantSymbol.findUnique({
|
const tenantSymbol = await (prisma as any).tenantSymbol.findUnique({
|
||||||
|
|||||||
Reference in New Issue
Block a user