Demo-Modus entfernt
isDemoMode war nie aktiv: appwrite.js hat immer eine Projekt-ID als Fallback. Weg sind die Demo-Zweige in Anmeldung und Hooks sowie die Beispieldaten aus der alten IT-Welt (Serverausfall, Drucker, Kunde A–E). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
889a2f42eb
commit
b758b1f9a7
11 files changed
+25
-451
No files matched your search
+2
-108
@@ -1,7 +1,5 @@
|
||||
import { useState, useEffect, useCallback, useMemo } from 'react'
|
||||
import { databases, DATABASE_ID, COLLECTIONS, Query, ID, isDemoMode } from '../lib/appwrite'
|
||||
|
||||
const DEMO_MODE = isDemoMode
|
||||
import { databases, DATABASE_ID, COLLECTIONS, Query, ID } from '../lib/appwrite'
|
||||
|
||||
function buildFiltersKey(filters = {}) {
|
||||
return JSON.stringify({
|
||||
@@ -15,68 +13,6 @@ function buildFiltersKey(filters = {}) {
|
||||
})
|
||||
}
|
||||
|
||||
// Demo data for testing without Appwrite
|
||||
const lastWeek = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)
|
||||
|
||||
const DEMO_WORKORDERS = [
|
||||
{
|
||||
$id: 'dummy-10001',
|
||||
woid: '10001',
|
||||
topic: 'Kompletter Systemausfall - Server & Netzwerk',
|
||||
status: 'Assigned',
|
||||
priority: 4,
|
||||
type: 'Emergency Call',
|
||||
systemType: 'Server',
|
||||
responseLevel: 'Backoffice',
|
||||
serviceType: 'On Site',
|
||||
customerName: 'Kunde A',
|
||||
customerLocation: 'Hauptstraße 123, 12345 Musterstadt',
|
||||
assignedTo: 'user-max-id',
|
||||
assignedName: 'Max Mustermann',
|
||||
requestedBy: 'Dr. Anna Schmidt',
|
||||
requestedFor: 'IT-Abteilung Kunde A',
|
||||
startDate: '30.12.2025',
|
||||
startTime: '0800',
|
||||
deadline: '31.12.2025',
|
||||
endTime: '1800',
|
||||
estimate: '480',
|
||||
mailCopyTo: 'admin@kunde-a.de, it@kunde-a.de',
|
||||
sendNotification: true,
|
||||
details: `KRITISCHER SYSTEMAUSFALL - SOFORTIGE BEARBEITUNG ERFORDERLICH
|
||||
|
||||
Problembeschreibung:
|
||||
- Kompletter Serverausfall im Rechenzentrum
|
||||
- Alle Server sind offline (keine Verbindung möglich)
|
||||
- Netzwerk-Infrastruktur betroffen
|
||||
- Keine Backup-Systeme verfügbar
|
||||
|
||||
Betroffene Systeme:
|
||||
- Hauptserver (Windows Server 2022)
|
||||
- Datenbankserver (SQL Server 2019)
|
||||
- Fileserver
|
||||
- Exchange Server
|
||||
- Netzwerk-Switches
|
||||
|
||||
Auswirkungen:
|
||||
- Keine E-Mail-Kommunikation möglich
|
||||
- Alle Anwendungen offline
|
||||
- Kein Zugriff auf Datenbanken
|
||||
- Produktion steht still
|
||||
|
||||
Dringlichkeit: KRITISCH - Produktionsausfall
|
||||
|
||||
Erwartete Bearbeitungszeit: 8 Stunden
|
||||
Benötigte Ressourcen: 2 Techniker, Hardware-Ersatzteile`,
|
||||
approvalStatus: 'approved',
|
||||
$createdAt: lastWeek.toISOString(),
|
||||
createdAt: lastWeek.toISOString()
|
||||
},
|
||||
{ $id: '2', woid: '10002', title: 'Netzwerk Problem', description: 'WLAN funktioniert nicht', status: 'Occupied', priority: 3, type: 'Support', customerName: 'Kunde B', assignedName: 'Lisa S.', response: 'Remote', $createdAt: new Date().toISOString() },
|
||||
{ $id: '3', woid: '10003', title: 'Software Installation', description: 'Office 365 Setup', status: 'Assigned', priority: 1, type: 'Installation', customerName: 'Kunde C', assignedName: 'Tom K.', response: 'Onsite', $createdAt: new Date().toISOString() },
|
||||
{ $id: '4', woid: '10004', title: 'Drucker defekt', description: 'Papierstau', status: 'Awaiting', priority: 2, type: 'Hardware', customerName: 'Kunde D', assignedName: '', response: 'Pickup', $createdAt: new Date().toISOString() },
|
||||
{ $id: '5', woid: '10005', title: 'Kritischer Serverausfall', description: 'Produktionsserver down', status: 'Open', priority: 4, type: 'Emergency', customerName: 'Kunde E', assignedName: 'Max M.', response: 'Onsite', $createdAt: new Date().toISOString() },
|
||||
]
|
||||
|
||||
export function useWorkorders(filters = {}) {
|
||||
const [workorders, setWorkorders] = useState([])
|
||||
const [loading, setLoading] = useState(true)
|
||||
@@ -94,27 +30,7 @@ export function useWorkorders(filters = {}) {
|
||||
const fetchWorkorders = useCallback(async () => {
|
||||
const activeFilters = JSON.parse(filtersKey)
|
||||
setLoading(true)
|
||||
|
||||
if (DEMO_MODE) {
|
||||
// Filter demo data
|
||||
let filtered = [...DEMO_WORKORDERS]
|
||||
if (activeFilters.status?.length > 0) {
|
||||
filtered = filtered.filter(wo => activeFilters.status.includes(wo.status))
|
||||
}
|
||||
if (activeFilters.priority?.length > 0) {
|
||||
filtered = filtered.filter(wo => activeFilters.priority.includes(wo.priority))
|
||||
}
|
||||
if (activeFilters.woid) {
|
||||
filtered = filtered.filter(wo => String(wo.woid) === String(activeFilters.woid))
|
||||
}
|
||||
if (activeFilters.limit) {
|
||||
filtered = filtered.slice(0, activeFilters.limit)
|
||||
}
|
||||
setWorkorders(filtered)
|
||||
setLoading(false)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
const queries = [Query.orderDesc('$createdAt')]
|
||||
|
||||
@@ -236,18 +152,6 @@ export function useWorkorders(filters = {}) {
|
||||
}
|
||||
|
||||
const createWorkorder = async (data) => {
|
||||
if (DEMO_MODE) {
|
||||
// Finde höchste WOID und +1
|
||||
const maxWoid = workorders.length > 0
|
||||
? Math.max(...workorders.map(wo => parseInt(wo.woid)).filter(w => !isNaN(w)))
|
||||
: 9999;
|
||||
const nextWoid = maxWoid + 1;
|
||||
|
||||
const newWo = { ...data, $id: Date.now().toString(), woid: nextWoid.toString(), status: 'Open', $createdAt: new Date().toISOString() }
|
||||
setWorkorders(prev => [newWo, ...prev])
|
||||
return { success: true, data: newWo }
|
||||
}
|
||||
|
||||
try {
|
||||
// Validierung: Prüfe required fields
|
||||
if (!data.topic || data.topic.trim() === '') {
|
||||
@@ -323,11 +227,6 @@ export function useWorkorders(filters = {}) {
|
||||
}
|
||||
|
||||
const updateWorkorder = async (id, data) => {
|
||||
if (DEMO_MODE) {
|
||||
setWorkorders(prev => prev.map(wo => wo.$id === id ? { ...wo, ...data } : wo))
|
||||
return { success: true }
|
||||
}
|
||||
|
||||
try {
|
||||
// Status-Automatik beim Update:
|
||||
// Wenn assignedTo gesetzt wird → Status = "Assigned"
|
||||
@@ -361,11 +260,6 @@ export function useWorkorders(filters = {}) {
|
||||
}
|
||||
|
||||
const deleteWorkorder = async (id) => {
|
||||
if (DEMO_MODE) {
|
||||
setWorkorders(prev => prev.filter(wo => wo.$id !== id))
|
||||
return { success: true }
|
||||
}
|
||||
|
||||
try {
|
||||
await databases.deleteDocument(
|
||||
DATABASE_ID,
|
||||
|
||||
Reference in new issue
Block a user