15_Ubungen
Keine Dateien in diesem Thema verfügbar.
Lernmaterialien
Mongo DB
Erstellen sie aus der Vorlage ein umfangreiches Mongo DB Modell.
Definieren Sie das Hauptdokument und begründen Sie Ihre Wahl.
Prüfen Sie für sämtliche Arrays ob referencing oder embedding die bessere Wahl ist.
Erstellen Sie für Ihr Modell einige Abfragen und erklären Sie diese.
Themen
Pizza
{
"_id": "piz_8f3b2b1a",
"pizzeria": {
"name": "Pizzeria Bella Napoli",
"companyId": "ATU12345678",
"country": "AT",
"address": {
"street": "Favoritenstraße 12",
"zip": "1100",
"city": "Wien",
"country": "AT"
},
"contact": {
"phone": "+43 1 555 1234",
"email": "kontakt@bellanapoli.at"
}
},
"store": {
"storeId": "store_vie_001",
"status": "OPEN",
"openedAt": "2024-01-15",
"currency": "EUR",
"vatRateDefault": 0.1,
"openingHours": [
{ "day": "MON", "from": "11:00", "to": "22:00" },
{ "day": "TUE", "from": "11:00", "to": "22:00" },
{ "day": "WED", "from": "11:00", "to": "22:00" },
{ "day": "THU", "from": "11:00", "to": "22:00" },
{ "day": "FRI", "from": "11:00", "to": "23:00" },
{ "day": "SAT", "from": "11:00", "to": "23:00" },
{ "day": "SUN", "from": "11:00", "to": "22:00" }
]
},
"products": [
{
"productId": "prd_piz_001",
"type": "PIZZA",
"name": "Margherita",
"price": 9.9,
"currency": "EUR",
"vatRate": 0.1,
"status": "ACTIVE",
"ingredients": ["Tomatensauce", "Mozzarella", "Basilikum"],
"allergens": ["GLUTEN", "MILK"]
},
{
"productId": "prd_piz_002",
"type": "PIZZA",
"name": "Salami",
"price": 11.9,
"currency": "EUR",
"vatRate": 0.1,
"status": "ACTIVE",
"ingredients": ["Tomatensauce", "Mozzarella", "Salami"],
"allergens": ["GLUTEN", "MILK"]
},
{
"productId": "prd_pas_001",
"type": "PASTA",
"name": "Spaghetti Carbonara",
"price": 12.5,
"currency": "EUR",
"vatRate": 0.1,
"status": "ACTIVE",
"ingredients": ["Spaghetti", "Ei", "Speck", "Parmesan"],
"allergens": ["GLUTEN", "EGG", "MILK"]
},
{
"productId": "prd_drk_001",
"type": "DRINK",
"name": "Cola 0,33l",
"price": 2.9,
"currency": "EUR",
"vatRate": 0.2,
"status": "ACTIVE",
"deposit": { "amount": 0.0, "currency": "EUR" }
}
],
"authorizedUsers": [
{
"userId": "emp_1001",
"role": "OWNER",
"permissions": ["VIEW", "EDIT_MENU", "REFUND", "CLOSE_DAY"],
"limits": {
"dailyRefundLimit": 300.0,
"maxDiscountPercent": 50
}
},
{
"userId": "emp_2007",
"role": "CASHIER",
"permissions": ["VIEW", "CREATE_ORDER", "APPLY_DISCOUNT"],
"limits": {
"dailyRefundLimit": 50.0,
"maxDiscountPercent": 15
}
}
],
"orders": [
{
"orderId": "ord_000001",
"orderDate": "2026-03-01",
"channel": "IN_STORE",
"status": "PAID",
"currency": "EUR",
"customer": {
"name": "Max Mustermann",
"phone": "+43 699 1234567"
},
"items": [
{
"productId": "prd_piz_001",
"name": "Margherita",
"qty": 1,
"unitPrice": 9.9,
"vatRate": 0.1,
"notes": "extra Basilikum"
},
{
"productId": "prd_drk_001",
"name": "Cola 0,33l",
"qty": 2,
"unitPrice": 2.9,
"vatRate": 0.2
}
],
"pricing": {
"subtotal": 15.7,
"discount": { "amount": 0.0, "currency": "EUR", "reason": null },
"vatTotal": 1.87,
"total": 17.57
},
"payment": {
"method": "CARD",
"provider": "POS_TERMINAL",
"tip": { "amount": 1.0, "currency": "EUR" }
},
"audit": {
"createdAt": "2026-03-01T12:10:00Z",
"createdBy": "emp_2007",
"source": "POS"
}
},
{
"orderId": "ord_000002",
"orderDate": "2026-03-02",
"channel": "DELIVERY",
"status": "PAID",
"currency": "EUR",
"customer": {
"name": "Sara Beispiel",
"phone": "+43 670 5550000",
"address": {
"street": "Praterstraße 5",
"zip": "1020",
"city": "Wien",
"country": "AT"
}
},
"items": [
{
"productId": "prd_piz_002",
"name": "Salami",
"qty": 2,
"unitPrice": 11.9,
"vatRate": 0.1
}
],
"pricing": {
"subtotal": 23.8,
"deliveryFee": { "amount": 2.5, "currency": "EUR", "vatRate": 0.1 },
"discount": { "amount": 2.0, "currency": "EUR", "reason": "Gutschein" },
"vatTotal": 2.43,
"total": 26.73
},
"payment": {
"method": "CASH",
"provider": "COURIER",
"tip": { "amount": 2.0, "currency": "EUR" }
},
"delivery": {
"driverId": "emp_3010",
"etaMinutes": 35,
"status": "DELIVERED"
},
"audit": {
"createdAt": "2026-03-02T19:30:00Z",
"createdBy": "emp_2007",
"source": "WEB_ORDER"
}
}
],
"dailySummary": {
"asOf": "2026-03-02T22:15:00Z",
"currency": "EUR",
"ordersCount": 2,
"revenueGross": 44.3,
"tips": 3.0,
"paymentBreakdown": {
"CARD": 17.57,
"CASH": 26.73
}
},
"createdAt": "2024-01-15T09:00:00Z",
"updatedAt": "2026-03-02T22:15:00Z"
}Taxi
{
"_id": "tax_3c91f7b2",
"taxiCompany": {
"name": "Vienna City Taxi",
"companyId": "ATU87654321",
"country": "AT",
"address": {
"street": "Landstraße 21",
"zip": "1030",
"city": "Wien",
"country": "AT"
},
"contact": {
"phone": "+43 1 700 700",
"email": "office@viennacitytaxi.at"
}
},
"fleet": {
"fleetId": "fleet_vie_01",
"status": "ACTIVE",
"currency": "EUR",
"defaultVatRate": 0.1,
"dispatchCenter": {
"name": "Zentrale Wien",
"phone": "+43 1 700 700"
}
},
"vehicles": [
{
"vehicleId": "veh_1001",
"plate": "W-123TX",
"brand": "Toyota",
"model": "Prius",
"year": 2021,
"type": "HYBRID",
"seats": 4,
"status": "AVAILABLE",
"meter": {
"tariffId": "tariff_vie_std",
"currency": "EUR"
}
},
{
"vehicleId": "veh_1002",
"plate": "W-456TX",
"brand": "Mercedes-Benz",
"model": "E-Klasse",
"year": 2020,
"type": "DIESEL",
"seats": 4,
"status": "IN_SERVICE",
"meter": {
"tariffId": "tariff_vie_std",
"currency": "EUR"
}
}
],
"drivers": [
{
"driverId": "drv_2001",
"name": "Ahmed Kaya",
"licenseNo": "AT-DL-558812",
"status": "ON_DUTY",
"assignedVehicleId": "veh_1001",
"roles": ["DRIVER"],
"limits": {
"maxCashOnHand": 300.0
}
},
{
"driverId": "drv_2002",
"name": "Julia Steiner",
"licenseNo": "AT-DL-992014",
"status": "OFF_DUTY",
"assignedVehicleId": null,
"roles": ["DRIVER", "TRAINER"],
"limits": {
"maxCashOnHand": 300.0
}
}
],
"tariffs": [
{
"tariffId": "tariff_vie_std",
"name": "Standard Wien",
"currency": "EUR",
"vatRate": 0.1,
"baseFee": 4.0,
"perKm": 1.8,
"perMinute": 0.5,
"nightSurcharge": {
"from": "22:00",
"to": "06:00",
"percent": 10
}
}
],
"rides": [
{
"rideId": "ride_000001",
"rideDate": "2026-03-01",
"status": "COMPLETED",
"channel": "APP",
"currency": "EUR",
"customer": {
"customerId": "cus_9001",
"name": "Max Mustermann",
"phone": "+43 699 1234567",
"rating": 4.8
},
"pickup": {
"address": "Wien Hbf, 1100 Wien",
"lat": 48.185,
"lng": 16.374,
"requestedAt": "2026-03-01T08:12:00Z",
"pickupAt": "2026-03-01T08:18:00Z"
},
"dropoff": {
"address": "Stephansplatz, 1010 Wien",
"lat": 48.208,
"lng": 16.373,
"dropoffAt": "2026-03-01T08:33:00Z"
},
"driverId": "drv_2001",
"vehicleId": "veh_1001",
"trip": {
"distanceKm": 6.4,
"durationMinutes": 15,
"routeQuality": "NORMAL"
},
"pricing": {
"tariffId": "tariff_vie_std",
"baseFee": 4.0,
"distanceFee": 11.52,
"timeFee": 7.5,
"surcharges": [
{ "type": "NIGHT", "amount": 0.0, "currency": "EUR" }
],
"discount": { "amount": 2.0, "currency": "EUR", "reason": "Promo" },
"vatTotal": 2.1,
"total": 23.12
},
"payment": {
"method": "CARD",
"provider": "STRIPE",
"tip": { "amount": 2.0, "currency": "EUR" }
},
"audit": {
"createdAt": "2026-03-01T08:12:02Z",
"createdBy": "system_dispatch",
"source": "MOBILE_APP"
}
},
{
"rideId": "ride_000002",
"rideDate": "2026-03-02",
"status": "COMPLETED",
"channel": "PHONE",
"currency": "EUR",
"customer": {
"customerId": null,
"name": "Sara Beispiel",
"phone": "+43 670 5550000",
"rating": null
},
"pickup": {
"address": "Praterstraße 5, 1020 Wien",
"lat": 48.215,
"lng": 16.385,
"requestedAt": "2026-03-02T21:05:00Z",
"pickupAt": "2026-03-02T21:14:00Z"
},
"dropoff": {
"address": "Mariahilfer Straße 1, 1070 Wien",
"lat": 48.200,
"lng": 16.355,
"dropoffAt": "2026-03-02T21:38:00Z"
},
"driverId": "drv_2001",
"vehicleId": "veh_1001",
"trip": {
"distanceKm": 8.9,
"durationMinutes": 24,
"routeQuality": "HEAVY_TRAFFIC"
},
"pricing": {
"tariffId": "tariff_vie_std",
"baseFee": 4.0,
"distanceFee": 16.02,
"timeFee": 12.0,
"surcharges": [
{ "type": "NIGHT", "amount": 3.2, "currency": "EUR" }
],
"discount": { "amount": 0.0, "currency": "EUR", "reason": null },
"vatTotal": 3.52,
"total": 38.74
},
"payment": {
"method": "CASH",
"provider": "DRIVER",
"tip": { "amount": 3.0, "currency": "EUR" }
},
"audit": {
"createdAt": "2026-03-02T21:05:10Z",
"createdBy": "dispatcher_01",
"source": "CALL_CENTER"
}
}
],
"dailySummary": {
"asOf": "2026-03-02T23:05:00Z",
"currency": "EUR",
"ridesCount": 2,
"revenueGross": 61.86,
"tips": 5.0,
"paymentBreakdown": {
"CARD": 23.12,
"CASH": 38.74
}
},
"createdAt": "2025-02-01T09:00:00Z",
"updatedAt": "2026-03-02T23:05:00Z"
}Fleischerei / Metzgerei
(butchery.json)
{
"_id": "but_001",
"business": {
"type": "BUTCHERY",
"name": "Metzgerei Huber",
"companyId": "ATU11111111",
"address": { "street": "Hauptstraße 1", "zip": "4020", "city": "Linz", "country": "AT" },
"currency": "EUR"
},
"products": [
{ "productId": "meat_001", "name": "Rindsschnitzel", "unit": "kg", "price": 19.9, "vatRate": 0.1 },
{ "productId": "meat_002", "name": "Leberkäse", "unit": "kg", "price": 12.9, "vatRate": 0.1 }
],
"sales": [
{
"saleId": "sale_0001",
"date": "2026-03-02",
"channel": "IN_STORE",
"items": [
{ "productId": "meat_001", "qty": 0.6, "unitPrice": 19.9 },
{ "productId": "meat_002", "qty": 0.3, "unitPrice": 12.9 }
],
"total": 15.81,
"payment": { "method": "CARD" }
}
]
}Supermarkt
(supermarket.json)
{
"_id": "sup_001",
"business": {
"type": "SUPERMARKET",
"name": "CityMarket",
"companyId": "ATU22222222",
"address": { "street": "Ring 10", "zip": "1010", "city": "Wien", "country": "AT" },
"currency": "EUR"
},
"departments": ["GROCERY", "BAKERY", "FRESH", "HOUSEHOLD"],
"sales": [
{
"saleId": "sale_0101",
"date": "2026-03-02",
"cashDesk": "KASSE_3",
"items": [
{ "sku": "sku_100", "name": "Milch 1L", "qty": 2, "unitPrice": 1.59, "vatRate": 0.1 },
{ "sku": "sku_200", "name": "Shampoo", "qty": 1, "unitPrice": 3.99, "vatRate": 0.2 }
],
"total": 7.17,
"payment": { "method": "CASH" }
}
]
}Friseursalon
(hair_salon.json)
{
"_id": "hair_001",
"business": {
"type": "HAIR_SALON",
"name": "Salon Nova",
"companyId": "ATU33333333",
"address": { "street": "Bahnhofstraße 5", "zip": "5020", "city": "Salzburg", "country": "AT" },
"currency": "EUR"
},
"services": [
{ "serviceId": "srv_001", "name": "Haarschnitt", "durationMin": 30, "price": 29.0, "vatRate": 0.2 },
{ "serviceId": "srv_002", "name": "Färben", "durationMin": 90, "price": 79.0, "vatRate": 0.2 }
],
"appointments": [
{
"appointmentId": "app_0001",
"dateTime": "2026-03-02T14:00:00+01:00",
"customer": { "name": "Anna Beispiel", "phone": "+43 660 111111" },
"staff": { "employeeId": "emp_10", "name": "Mara" },
"serviceIds": ["srv_001"],
"status": "COMPLETED",
"total": 29.0,
"payment": { "method": "CARD" }
}
]
}Kosmetikstudio
(cosmetics_studio.json)
{
"_id": "cos_001",
"business": { "type": "COSMETICS_STUDIO", "name": "Glow Studio", "companyId": "ATU44444444", "currency": "EUR" },
"services": [
{ "serviceId": "c_001", "name": "Gesichtsbehandlung", "durationMin": 60, "price": 69.0, "vatRate": 0.2 },
{ "serviceId": "c_002", "name": "Maniküre", "durationMin": 40, "price": 35.0, "vatRate": 0.2 }
],
"appointments": [
{
"appointmentId": "app_010",
"dateTime": "2026-03-01T10:30:00+01:00",
"customer": { "name": "Sophie", "email": "sophie@example.com" },
"serviceIds": ["c_001", "c_002"],
"status": "PAID",
"total": 104.0,
"payment": { "method": "CARD" }
}
]
}Zahnarztpraxis
(dentist.json)
{
"_id": "dent_001",
"business": { "type": "DENTIST", "name": "Zahnzentrum Mitte", "companyId": "ATU55555555", "currency": "EUR" },
"treatments": [
{ "code": "D001", "name": "Kontrolle", "price": 40.0, "vatRate": 0.0 },
{ "code": "D010", "name": "Professionelle Zahnreinigung", "price": 110.0, "vatRate": 0.0 }
],
"visits": [
{
"visitId": "v_0001",
"dateTime": "2026-03-02T09:00:00+01:00",
"patient": { "patientId": "pat_77", "name": "Max Mustermann" },
"treatmentCodes": ["D010"],
"status": "BILLED",
"invoice": { "invoiceNo": "INV-2026-1001", "total": 110.0, "payer": "PATIENT" }
}
]
}Hausarztpraxis
(gp_practice.json)
{
"_id": "gp_001",
"business": { "type": "GENERAL_PRACTICE", "name": "Hausarzt Dr. König", "companyId": "ATU66666666", "currency": "EUR" },
"services": [
{ "code": "G001", "name": "Ordinationsbesuch", "price": 0.0, "payer": "INSURANCE" },
{ "code": "G020", "name": "Impfung", "price": 25.0, "payer": "PATIENT" }
],
"consultations": [
{
"consultationId": "c_001",
"dateTime": "2026-03-02T11:20:00+01:00",
"patient": { "patientId": "pat_12", "name": "Eva Beispiel" },
"serviceCodes": ["G020"],
"status": "COMPLETED",
"billing": { "total": 25.0, "paid": true, "method": "CASH" }
}
]
}Apotheke
(pharmacy.json)
{
"_id": "pha_001",
"business": { "type": "PHARMACY", "name": "Apotheke am Park", "companyId": "ATU77777777", "currency": "EUR" },
"inventory": [
{ "sku": "rx_001", "name": "Ibuprofen 400", "category": "OTC", "price": 6.9, "vatRate": 0.1, "stock": 120 },
{ "sku": "rx_900", "name": "Antibiotikum X", "category": "PRESCRIPTION", "price": 14.5, "vatRate": 0.1, "stock": 40 }
],
"sales": [
{
"saleId": "sale_9001",
"date": "2026-03-02",
"items": [
{ "sku": "rx_001", "qty": 1, "unitPrice": 6.9, "requiresPrescription": false },
{ "sku": "rx_900", "qty": 1, "unitPrice": 14.5, "requiresPrescription": true, "prescriptionId": "eRx_ABC123" }
],
"total": 21.4,
"payment": { "method": "CARD" }
}
]
}Physiotherapie-Praxis
(physio.json)
{
"_id": "phy_001",
"business": { "type": "PHYSIOTHERAPY", "name": "Physio Aktiv", "companyId": "ATU88888888", "currency": "EUR" },
"therapies": [
{ "therapyId": "t_001", "name": "Massage", "durationMin": 30, "price": 45.0, "vatRate": 0.2 },
{ "therapyId": "t_002", "name": "Manuelle Therapie", "durationMin": 45, "price": 65.0, "vatRate": 0.2 }
],
"sessions": [
{
"sessionId": "s_0001",
"dateTime": "2026-03-01T16:00:00+01:00",
"client": { "clientId": "cl_01", "name": "Tom" },
"therapyIds": ["t_002"],
"status": "PAID",
"total": 65.0,
"payment": { "method": "CARD" }
}
]
}Fitnessstudio
(gym.json)
{
"_id": "gym_001",
"business": { "type": "GYM", "name": "FitBase", "companyId": "ATU99999999", "currency": "EUR" },
"memberships": [
{ "planId": "p_basic", "name": "Basic", "monthlyFee": 29.9 },
{ "planId": "p_premium", "name": "Premium", "monthlyFee": 49.9 }
],
"members": [
{ "memberId": "m_100", "name": "Lena", "planId": "p_premium", "status": "ACTIVE", "since": "2025-09-01" }
],
"checkins": [
{ "checkinId": "ci_0001", "memberId": "m_100", "dateTime": "2026-03-02T18:05:00+01:00", "gate": "G1" }
],
"payments": [
{ "paymentId": "pay_0001", "memberId": "m_100", "period": "2026-03", "amount": 49.9, "method": "SEPA", "status": "PAID" }
]
}Hotel (hotel.json)
{
"_id": "hot_001",
"business": { "type": "HOTEL", "name": "Hotel Danube", "companyId": "ATU12121212", "currency": "EUR" },
"rooms": [
{ "roomId": "101", "type": "STANDARD", "ratePerNight": 120.0 },
{ "roomId": "201", "type": "DELUXE", "ratePerNight": 190.0 }
],
"bookings": [
{
"bookingId": "b_0001",
"guest": { "name": "Max Mustermann", "email": "max@example.com" },
"roomId": "201",
"checkIn": "2026-03-05",
"checkOut": "2026-03-07",
"status": "CONFIRMED",
"pricing": { "nights": 2, "roomTotal": 380.0, "cityTax": 10.0, "total": 390.0 },
"payment": { "method": "CARD", "status": "PREAUTHORIZED" }
}
]
}Reisebüro
(travel_agency.json)
{
"_id": "trv_001",
"business": { "type": "TRAVEL_AGENCY", "name": "ReiseWelt", "companyId": "ATU23232323", "currency": "EUR" },
"offers": [
{ "offerId": "o_001", "title": "Rom Wochenende", "basePrice": 399.0 },
{ "offerId": "o_002", "title": "Kreta 7 Nächte", "basePrice": 899.0 }
],
"bookings": [
{
"bookingId": "tb_0001",
"offerId": "o_002",
"customer": { "name": "Sara Beispiel", "phone": "+43 670 5550000" },
"travelers": 2,
"dates": { "from": "2026-06-10", "to": "2026-06-17" },
"status": "PAID",
"total": 1798.0,
"payment": { "method": "BANK_TRANSFER" }
}
]
}Autowerkstatt
(car_repair_shop.json)
{
"_id": "wrk_001",
"business": { "type": "CAR_REPAIR", "name": "AutoService Gruber", "companyId": "ATU34343434", "currency": "EUR" },
"services": [
{ "serviceId": "s_oil", "name": "Ölwechsel", "laborMinutes": 30, "laborRatePerHour": 90.0 },
{ "serviceId": "s_brake", "name": "Bremsen wechseln", "laborMinutes": 120, "laborRatePerHour": 90.0 }
],
"jobs": [
{
"jobId": "j_0001",
"date": "2026-03-02",
"vehicle": { "plate": "W-123TX", "vin": "VIN1234567890" },
"customer": { "name": "Tom Beispiel" },
"work": [
{ "serviceId": "s_oil", "laborCost": 45.0, "parts": [{ "sku": "oil_5w30", "qty": 1, "unitPrice": 39.0 }] }
],
"total": 84.0,
"payment": { "method": "CARD" }
}
]
}Autovermietung
(car_rental.json)
{
"_id": "rent_001",
"business": { "type": "CAR_RENTAL", "name": "Rent&Go", "companyId": "ATU45454545", "currency": "EUR" },
"vehicles": [
{ "vehicleId": "v_01", "class": "ECONOMY", "plate": "W-RENT1", "dailyRate": 49.0, "status": "AVAILABLE" }
],
"rentals": [
{
"rentalId": "r_0001",
"customer": { "name": "Anna Beispiel", "licenseNo": "AT-DL-12345" },
"vehicleId": "v_01",
"period": { "from": "2026-03-02", "to": "2026-03-05" },
"pricing": { "days": 3, "base": 147.0, "deposit": 300.0, "total": 147.0 },
"status": "ACTIVE",
"payment": { "method": "CARD" }
}
]
}Fahrschule
(driving_school.json)
{
"_id": "drvsch_001",
"business": { "type": "DRIVING_SCHOOL", "name": "Fahrschule Sprint", "companyId": "ATU56565656", "currency": "EUR" },
"packages": [
{ "packageId": "pkg_b", "name": "B-Schein Komplett", "price": 1590.0, "includesLessons": 18 }
],
"lessons": [
{
"lessonId": "l_0001",
"dateTime": "2026-03-02T17:00:00+01:00",
"student": { "studentId": "st_01", "name": "Lukas" },
"instructor": { "employeeId": "ins_7", "name": "Peter" },
"vehicle": { "plate": "W-FS-10" },
"status": "COMPLETED",
"minutes": 50
}
],
"payments": [
{ "paymentId": "p_0001", "studentId": "st_01", "amount": 500.0, "method": "BANK_TRANSFER", "status": "PAID" }
]
}Immobilienmakler
(real_estate_agent.json)
{
"_id": "rea_001",
"business": { "type": "REAL_ESTATE", "name": "ImmoPro", "companyId": "ATU67676767", "currency": "EUR" },
"listings": [
{ "listingId": "lst_001", "type": "APARTMENT", "city": "Wien", "price": 349000, "status": "ACTIVE" }
],
"deals": [
{
"dealId": "d_0001",
"listingId": "lst_001",
"buyer": { "name": "Eva Beispiel" },
"seller": { "name": "Privat" },
"status": "SIGNED",
"commission": { "percent": 3.0, "amount": 10470.0, "vatRate": 0.2 },
"invoice": { "invoiceNo": "INV-REA-2026-01", "total": 12564.0 }
}
]
}Reinigungsfirma
/ Gebäudereinigung (cleaning_company.json)
{
"_id": "cln_001",
"business": { "type": "CLEANING", "name": "CleanUp GmbH", "companyId": "ATU78787878", "currency": "EUR" },
"services": [
{ "serviceId": "gc_01", "name": "Büroreinigung", "unit": "hour", "rate": 35.0, "vatRate": 0.2 }
],
"contracts": [
{ "contractId": "ct_001", "client": "ACME Office", "serviceId": "gc_01", "hoursPerWeek": 10, "status": "ACTIVE" }
],
"jobs": [
{
"jobId": "job_0001",
"date": "2026-03-02",
"contractId": "ct_001",
"hours": 2.5,
"staff": [{ "employeeId": "emp_1", "name": "Mila" }],
"total": 87.5
}
]
}Sicherheitsdienst
(security_service.json)
{
"_id": "sec_001",
"business": { "type": "SECURITY", "name": "SecureNow", "companyId": "ATU89898989", "currency": "EUR" },
"services": [
{ "serviceId": "s_01", "name": "Objektschutz", "ratePerHour": 42.0, "vatRate": 0.2 }
],
"assignments": [
{
"assignmentId": "a_0001",
"date": "2026-03-02",
"client": "Eventhalle West",
"serviceId": "s_01",
"guards": [{ "employeeId": "g_10", "name": "Alex" }, { "employeeId": "g_11", "name": "Nina" }],
"hours": 6,
"total": 504.0,
"status": "BILLED"
}
]
}Elektrikerbetrieb
(electrician.json)
{
"_id": "elec_001",
"business": { "type": "ELECTRICIAN", "name": "Elektro Mayer", "companyId": "ATU90909090", "currency": "EUR" },
"rates": { "laborPerHour": 85.0, "vatRate": 0.2 },
"jobs": [
{
"jobId": "e_0001",
"date": "2026-03-02",
"customer": { "name": "K. Berger", "address": "1020 Wien" },
"work": "Steckdose erneuern",
"laborHours": 1.0,
"parts": [{ "sku": "socket_01", "name": "Schuko Steckdose", "qty": 1, "unitPrice": 8.5 }],
"total": 94.5,
"payment": { "method": "INVOICE", "status": "OPEN" }
}
]
}Installateur
/ Heizungsbetrieb (plumbing_heating.json)
{
"_id": "plh_001",
"business": { "type": "PLUMBING_HEATING", "name": "HeizFix", "companyId": "ATU10101010", "currency": "EUR" },
"rates": { "laborPerHour": 92.0, "vatRate": 0.2 },
"jobs": [
{
"jobId": "p_0001",
"date": "2026-03-01",
"customer": { "name": "Familie Huber" },
"work": "Therme Service",
"laborHours": 1.5,
"parts": [{ "sku": "seal_01", "name": "Dichtung", "qty": 2, "unitPrice": 3.0 }],
"total": 147.0,
"payment": { "method": "CARD", "status": "PAID" }
}
]
}Malerbetrieb
(painter.json)
{
"_id": "paint_001",
"business": { "type": "PAINTER", "name": "Malerteam Blau", "companyId": "ATU11121314", "currency": "EUR" },
"rates": { "laborPerHour": 60.0, "vatRate": 0.2 },
"projects": [
{
"projectId": "pr_0001",
"client": "Wohnung Muster",
"dateStart": "2026-03-02",
"scope": "Wohnzimmer streichen",
"laborHours": 6,
"materials": [{ "name": "Wandfarbe 10L", "qty": 1, "unitPrice": 49.0 }],
"total": 409.0,
"status": "IN_PROGRESS"
}
]
}Tischlerei / Schreinerei
(carpentry.json)
{
"_id": "carp_001",
"business": { "type": "CARPENTRY", "name": "Tischlerei HolzArt", "companyId": "ATU15151515", "currency": "EUR" },
"products": [
{ "productId": "cust_001", "name": "Einbauschrank", "basePrice": 2200.0, "vatRate": 0.2 }
],
"orders": [
{
"orderId": "o_0001",
"date": "2026-03-02",
"customer": { "name": "S. Lang" },
"productId": "cust_001",
"measurements": { "widthCm": 240, "heightCm": 260, "depthCm": 60 },
"status": "ACCEPTED",
"pricing": { "base": 2200.0, "deposit": 700.0, "total": 2200.0 }
}
]
}Gärtnerei /
Landschaftsbau (gardening_landscape.json)
{
"_id": "gard_001",
"business": { "type": "GARDENING_LANDSCAPE", "name": "GrünRaum", "companyId": "ATU16161616", "currency": "EUR" },
"services": [
{ "serviceId": "g_01", "name": "Heckenschnitt", "ratePerHour": 55.0, "vatRate": 0.2 }
],
"jobs": [
{
"jobId": "gjob_0001",
"date": "2026-03-02",
"customer": { "name": "Wohnanlage Süd" },
"serviceId": "g_01",
"hours": 4,
"wasteDisposalFee": 25.0,
"total": 245.0,
"status": "DONE"
}
]
}IT-Systemhaus /
Computerreparatur (it_service.json)
{
"_id": "it_001",
"business": { "type": "IT_SERVICE", "name": "IT Helpdesk Pro", "companyId": "ATU17171717", "currency": "EUR" },
"services": [
{ "serviceId": "it_virus", "name": "Virenentfernung", "flatPrice": 89.0, "vatRate": 0.2 },
{ "serviceId": "it_setup", "name": "PC Einrichtung", "ratePerHour": 75.0, "vatRate": 0.2 }
],
"tickets": [
{
"ticketId": "t_0001",
"openedAt": "2026-03-02T10:10:00+01:00",
"customer": { "name": "Max Mustermann" },
"device": { "type": "LAPTOP", "brand": "Dell", "serial": "SN123" },
"work": [{ "serviceId": "it_virus", "price": 89.0 }],
"status": "CLOSED",
"payment": { "method": "CARD", "total": 89.0 }
}
]
}Handyshop /
Handyreparatur (phone_repair_shop.json)
{
"_id": "phrep_001",
"business": { "type": "PHONE_REPAIR", "name": "PhoneFix", "companyId": "ATU18181818", "currency": "EUR" },
"services": [
{ "serviceId": "scr_01", "name": "Displaytausch", "basePrice": 149.0, "vatRate": 0.2 }
],
"repairs": [
{
"repairId": "r_0001",
"date": "2026-03-02",
"customer": { "name": "Lena" },
"device": { "brand": "Apple", "model": "iPhone 12" },
"serviceId": "scr_01",
"parts": [{ "sku": "disp_ip12", "qty": 1, "unitPrice": 85.0 }],
"total": 149.0,
"status": "READY",
"payment": { "method": "CASH" }
}
]
}Copyshop / Druckerei
(copy_print_shop.json)
{
"_id": "cpy_001",
"business": { "type": "COPY_PRINT", "name": "CopyPoint", "companyId": "ATU19191919", "currency": "EUR" },
"products": [
{ "productId": "p_bw", "name": "A4 SW Kopie", "unitPrice": 0.12, "vatRate": 0.2 },
{ "productId": "p_col", "name": "A4 Farbe", "unitPrice": 0.35, "vatRate": 0.2 }
],
"jobs": [
{
"jobId": "job_010",
"date": "2026-03-02",
"customer": { "name": "Uni Team" },
"items": [
{ "productId": "p_bw", "qty": 200, "unitPrice": 0.12 },
{ "productId": "p_col", "qty": 30, "unitPrice": 0.35 }
],
"total": 34.5,
"payment": { "method": "CARD" }
}
]
}Paketdienst /
Kurierdienst (courier_service.json)
{
"_id": "cur_001",
"business": { "type": "COURIER", "name": "FastCourier", "companyId": "ATU20202020", "currency": "EUR" },
"tariffs": [
{ "tariffId": "t_city", "name": "Stadt", "baseFee": 6.0, "perKm": 1.2, "vatRate": 0.2 }
],
"shipments": [
{
"shipmentId": "sh_0001",
"dateTime": "2026-03-02T12:30:00+01:00",
"sender": { "name": "Büro A", "address": "1010 Wien" },
"recipient": { "name": "Büro B", "address": "1020 Wien" },
"distanceKm": 5.5,
"pricing": { "tariffId": "t_city", "total": 12.6 },
"status": "DELIVERED",
"payment": { "method": "INVOICE", "status": "OPEN" }
}
]
}Tierarztpraxis
(vet_clinic.json)
{
"_id": "vet_001",
"business": { "type": "VETERINARY", "name": "Tierarztpraxis West", "companyId": "ATU21212121", "currency": "EUR" },
"services": [
{ "code": "V001", "name": "Allgemeine Untersuchung", "price": 45.0, "vatRate": 0.2 },
{ "code": "V010", "name": "Impfung", "price": 35.0, "vatRate": 0.2 }
],
"visits": [
{
"visitId": "vv_0001",
"dateTime": "2026-03-02T15:10:00+01:00",
"owner": { "name": "Sara Beispiel", "phone": "+43 670 5550000" },
"pet": { "name": "Bello", "species": "DOG", "breed": "Mix", "chipId": "981000000000001" },
"serviceCodes": ["V001", "V010"],
"total": 80.0,
"payment": { "method": "CARD" },
"status": "PAID"
}
]
}