1229 lines
40 KiB
JSON
1229 lines
40 KiB
JSON
|
|
{
|
||
|
|
"anna-jensen": {
|
||
|
|
"id": "anna-jensen",
|
||
|
|
"header": {
|
||
|
|
"initials": "AJ",
|
||
|
|
"name": "Anna Jensen",
|
||
|
|
"customerSince": "2023-05-15",
|
||
|
|
"tags": ["stamkunde", "farve"],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 24,
|
||
|
|
"avgIntervalDays": 28,
|
||
|
|
"preferredHairdresser": "Nina K.",
|
||
|
|
"totalRevenue": 18750
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 22 33 44 55",
|
||
|
|
"email": "anna.j@hotmail.dk",
|
||
|
|
"address": "Skovvej 8",
|
||
|
|
"zip": "2800",
|
||
|
|
"city": "Lyngby"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hårtype", "value": "Tykt - Glat" },
|
||
|
|
{ "title": "Porøsitet", "value": "Lav" },
|
||
|
|
{ "title": "Hovedbund", "value": "Normal" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Mørkebrun (4)" },
|
||
|
|
{ "title": "Nuværende farve", "value": "Varm brun med highlights" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": true },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": true },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Nina K.",
|
||
|
|
"preferredDays": "Fredag",
|
||
|
|
"specialRequests": "Ønsker altid en kop te under behandling. Foretrækker varme toner."
|
||
|
|
},
|
||
|
|
"warnings": [
|
||
|
|
{ "title": "Hårskade", "value": "Let skadet i spidserne fra tidligere afblegning - vær forsigtig med kemiske behandlinger" }
|
||
|
|
],
|
||
|
|
"group": { "groupId": "premium", "groupName": "Premium" },
|
||
|
|
"relations": [
|
||
|
|
{ "id": "peter-jensen", "name": "Peter Jensen", "initials": "PJ", "type": "Ægtefælle" },
|
||
|
|
{ "id": "mille-jensen", "name": "Mille Jensen", "initials": "MJ", "type": "Datter" }
|
||
|
|
],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 24, "cancelled": 2, "noShow": 0, "reliabilityPercent": 92 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip + Farve", "count": 14 },
|
||
|
|
{ "name": "Highlights", "count": 6 },
|
||
|
|
{ "name": "Klip", "count": 4 }
|
||
|
|
],
|
||
|
|
"topProducts": [
|
||
|
|
{ "name": "Olaplex No. 3", "count": 8 },
|
||
|
|
{ "name": "Kerastase Elixir", "count": 4 },
|
||
|
|
{ "name": "Hårkur", "count": 3 }
|
||
|
|
],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 10,
|
||
|
|
"preferredDay": "Fredag",
|
||
|
|
"preferredTimeSlot": "14:00 - 16:00",
|
||
|
|
"onlineBookingRate": 85,
|
||
|
|
"avgCancellationNoticeDays": 3
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 1.7, "daysSinceLastVisit": 18, "churnRisk": "low", "avgIntervalDays": 28 }
|
||
|
|
},
|
||
|
|
"journal": [
|
||
|
|
{
|
||
|
|
"id": "aj-entry-1",
|
||
|
|
"type": "note",
|
||
|
|
"tag": "Note",
|
||
|
|
"subtags": [],
|
||
|
|
"text": "Anna er meget tilfreds med den nye varme farvetone. Hun ønsker at holde denne stil fremover. Husk te med mælk!",
|
||
|
|
"date": "2026-01-06",
|
||
|
|
"author": "Nina"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "aj-entry-2",
|
||
|
|
"type": "colorFormula",
|
||
|
|
"tag": "Farveformel",
|
||
|
|
"subtags": [],
|
||
|
|
"text": "Måltone: Varm brun med kobber-highlights\nBund: 5/7 + 5/3 (2:1)\nHighlights: 8/43\nOxidant: 6% (bund), 9% (highlights)\nVirketid: 40 min\nPlacering: Bund hele håret, highlights i ansigtsindrammende partier\n\nResultat: Perfekt! Anna elskede det varme skær.",
|
||
|
|
"date": "2026-01-06",
|
||
|
|
"author": "Nina"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "aj-entry-3",
|
||
|
|
"type": "note",
|
||
|
|
"tag": "Advarsel",
|
||
|
|
"subtags": ["Hårskade"],
|
||
|
|
"text": "OBS: Let hårskade i spidserne fra gammel afblegning (før hun kom til os). Undgå aggressive behandlinger og tilbyd altid Olaplex.",
|
||
|
|
"date": "2023-06-20",
|
||
|
|
"author": "Emma"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "aj-entry-4",
|
||
|
|
"type": "analysis",
|
||
|
|
"tag": "Håranalyse",
|
||
|
|
"subtags": [],
|
||
|
|
"text": "Tilstand: God i rod og midterlængder, spidser let tørre\nPorøsitet: Lav til medium\nElasticitet: God\nHovedbudstilstand: Sund, ingen tørhed\n\nAnbefaling: Fortsat Olaplex hver behandling. Klip 1-2 cm af for at fjerne mest skadet område.",
|
||
|
|
"date": "2025-09-15",
|
||
|
|
"author": "Nina"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "aj-entry-5",
|
||
|
|
"type": "colorFormula",
|
||
|
|
"tag": "Farveformel",
|
||
|
|
"subtags": ["Tidligere"],
|
||
|
|
"text": "Måltone: Varm chokoladebrun\nFormel: 4/7 + 5/3 (1:1)\nOxidant: 6%\nVirketid: 35 min\nPlacering: Hele håret\n\nResultat: God dækning, kunde ønsker lidt lysere næste gang.",
|
||
|
|
"date": "2025-06-12",
|
||
|
|
"author": "Nina"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "aj-entry-6",
|
||
|
|
"type": "note",
|
||
|
|
"tag": "Note",
|
||
|
|
"subtags": ["Produkt"],
|
||
|
|
"text": "Anbefalet Kerastase Elixir til hjemmebrug. Anna købte og er meget glad for resultatet. Fortsæt anbefaling.",
|
||
|
|
"date": "2025-04-18",
|
||
|
|
"author": "Nina"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"appointments": {
|
||
|
|
"upcoming": [
|
||
|
|
{
|
||
|
|
"date": "2026-02-07",
|
||
|
|
"time": "14:00",
|
||
|
|
"service": "Klip + Farve + Olaplex",
|
||
|
|
"hairdresser": "Nina K.",
|
||
|
|
"duration": "2t 30m"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2026-03-21",
|
||
|
|
"time": "15:00",
|
||
|
|
"service": "Klip + Highlights",
|
||
|
|
"hairdresser": "Nina K.",
|
||
|
|
"duration": "2t 45m"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"history": [
|
||
|
|
{ "date": "2026-01-06", "service": "Klip + Farve + Olaplex", "hairdresser": "Nina K.", "duration": "2t 30m", "price": 1850 },
|
||
|
|
{ "date": "2025-12-06", "service": "Klip", "hairdresser": "Nina K.", "duration": "45 min", "price": 550 },
|
||
|
|
{ "date": "2025-10-25", "service": "Klip + Farve", "hairdresser": "Nina K.", "duration": "2 timer", "price": 1450 },
|
||
|
|
{ "date": "2025-09-15", "service": "Håranalyse + Behandling", "hairdresser": "Nina K.", "duration": "1 time", "price": 650 },
|
||
|
|
{ "date": "2025-08-08", "service": "Highlights + Klip", "hairdresser": "Nina K.", "duration": "2t 45m", "price": 1950 },
|
||
|
|
{ "date": "2025-06-12", "service": "Klip + Farve", "hairdresser": "Nina K.", "duration": "2 timer", "price": 1450 },
|
||
|
|
{ "date": "2025-04-18", "service": "Klip + Olaplex", "hairdresser": "Nina K.", "duration": "1t 15m", "price": 850 },
|
||
|
|
{ "date": "2025-02-28", "service": "Klip + Farve", "hairdresser": "Nina K.", "duration": "2 timer", "price": 1450 },
|
||
|
|
{ "date": "2025-01-10", "service": "Highlights", "hairdresser": "Emma L.", "duration": "2t 30m", "price": 1750 },
|
||
|
|
{ "date": "2024-11-15", "service": "Klip + Farve", "hairdresser": "Nina K.", "duration": "2 timer", "price": 1400 }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"giftcards": {
|
||
|
|
"active": [
|
||
|
|
{
|
||
|
|
"id": "GK-2025-1234",
|
||
|
|
"type": "giftcard",
|
||
|
|
"label": "Gavekort #GK-2025-1234",
|
||
|
|
"originalValue": 1000,
|
||
|
|
"currentBalance": 650,
|
||
|
|
"expiresAt": "2026-06-15"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "klip-5",
|
||
|
|
"type": "punchcard",
|
||
|
|
"label": "5-klip kort",
|
||
|
|
"totalPunches": 5,
|
||
|
|
"usedPunches": 3,
|
||
|
|
"expiresAt": "2026-12-31"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"expired": [
|
||
|
|
{
|
||
|
|
"id": "GK-2023-0567",
|
||
|
|
"type": "giftcard",
|
||
|
|
"label": "Gavekort #GK-2023-0567",
|
||
|
|
"originalValue": 500,
|
||
|
|
"currentBalance": 0,
|
||
|
|
"expiresAt": "2024-12-01"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"economy": {
|
||
|
|
"currentYear": { "year": 2025, "total": 12450 },
|
||
|
|
"lastYear": { "year": 2024, "total": 9800 },
|
||
|
|
"avgPerVisit": 889,
|
||
|
|
"avgPerMonth": 1038,
|
||
|
|
"chartData": {
|
||
|
|
"categories": ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
|
||
|
|
"series": [
|
||
|
|
{
|
||
|
|
"name": "Services",
|
||
|
|
"color": "#00897b",
|
||
|
|
"data": [
|
||
|
|
{ "x": "Feb", "y": 1450 },
|
||
|
|
{ "x": "Apr", "y": 1200 },
|
||
|
|
{ "x": "Jun", "y": 1450 },
|
||
|
|
{ "x": "Aug", "y": 1950 },
|
||
|
|
{ "x": "Okt", "y": 550 },
|
||
|
|
{ "x": "Nov", "y": 1200 },
|
||
|
|
{ "x": "Dec", "y": 1450 }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "Produkter",
|
||
|
|
"color": "#1976d2",
|
||
|
|
"data": [
|
||
|
|
{ "x": "Mar", "y": 349 },
|
||
|
|
{ "x": "Maj", "y": 180 },
|
||
|
|
{ "x": "Sep", "y": 425 },
|
||
|
|
{ "x": "Dec", "y": 349 }
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"purchases": [
|
||
|
|
{ "invoice": "#1892", "date": "2025-12-09", "time": "14:30", "employee": "Nina K.", "services": "Klip + Farve", "type": "service", "amount": 1450 },
|
||
|
|
{ "invoice": "#1892", "date": "2025-12-09", "time": "14:30", "employee": "Nina K.", "services": "Olaplex No. 3", "type": "product", "amount": 349 },
|
||
|
|
{ "invoice": "#1845", "date": "2025-11-12", "time": "10:00", "employee": "Nina K.", "services": "Farve", "type": "service", "amount": 1200 },
|
||
|
|
{ "invoice": "#1798", "date": "2025-10-15", "time": "15:45", "employee": "Nina K.", "services": "Klip", "type": "service", "amount": 550 },
|
||
|
|
{ "invoice": "#1756", "date": "2025-09-20", "time": "11:15", "employee": "Emma L.", "services": "Kerastase Elixir", "type": "product", "amount": 425 },
|
||
|
|
{ "invoice": "#1701", "date": "2025-08-08", "time": "13:00", "employee": "Nina K.", "services": "Highlights + Klip", "type": "service", "amount": 1950 }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"activity": [
|
||
|
|
{
|
||
|
|
"date": "2026-01-22",
|
||
|
|
"time": "10:30",
|
||
|
|
"type": "communication",
|
||
|
|
"icon": "chat-text",
|
||
|
|
"title": "SMS påmindelse sendt om aftale d. 7. februar",
|
||
|
|
"actor": "System",
|
||
|
|
"badges": ["auto"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2026-01-06",
|
||
|
|
"time": "16:40",
|
||
|
|
"type": "payment",
|
||
|
|
"icon": "credit-card",
|
||
|
|
"title": "Betaling modtaget — 1.850 kr",
|
||
|
|
"actor": "Dankort ****4521",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2026-01-06",
|
||
|
|
"time": "16:35",
|
||
|
|
"type": "edit",
|
||
|
|
"icon": "note-pencil",
|
||
|
|
"title": "Farveformel opdateret med ny varm tone",
|
||
|
|
"actor": "Nina K.",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2026-01-06",
|
||
|
|
"time": "16:30",
|
||
|
|
"type": "booking",
|
||
|
|
"icon": "check-circle",
|
||
|
|
"title": "Booking gennemført",
|
||
|
|
"actor": "Klip + Farve + Olaplex · Nina K.",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2026-01-06",
|
||
|
|
"time": "14:00",
|
||
|
|
"type": "customer",
|
||
|
|
"icon": "key",
|
||
|
|
"title": "Kunde ankom til aftale",
|
||
|
|
"actor": null,
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2026-01-03",
|
||
|
|
"time": "19:22",
|
||
|
|
"type": "booking",
|
||
|
|
"icon": "calendar-plus",
|
||
|
|
"title": "Ny booking oprettet via online booking",
|
||
|
|
"actor": "7. feb 2026 kl. 14:00",
|
||
|
|
"badges": ["online"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-12-20",
|
||
|
|
"time": "11:15",
|
||
|
|
"type": "communication",
|
||
|
|
"icon": "envelope",
|
||
|
|
"title": "Julehilsen email sendt",
|
||
|
|
"actor": "System",
|
||
|
|
"badges": ["auto", "marketing"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-12-06",
|
||
|
|
"time": "15:50",
|
||
|
|
"type": "payment",
|
||
|
|
"icon": "credit-card",
|
||
|
|
"title": "Betaling modtaget — 550 kr",
|
||
|
|
"actor": "MobilePay",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-12-06",
|
||
|
|
"time": "15:45",
|
||
|
|
"type": "booking",
|
||
|
|
"icon": "check-circle",
|
||
|
|
"title": "Booking gennemført",
|
||
|
|
"actor": "Klip · Nina K.",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-10-25",
|
||
|
|
"time": "17:05",
|
||
|
|
"type": "payment",
|
||
|
|
"icon": "credit-card",
|
||
|
|
"title": "Betaling modtaget — 1.100 kr (350 kr fra gavekort)",
|
||
|
|
"actor": "Dankort ****4521",
|
||
|
|
"badges": ["gavekort"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-10-25",
|
||
|
|
"time": "17:00",
|
||
|
|
"type": "edit",
|
||
|
|
"icon": "gift",
|
||
|
|
"title": "Gavekort #GK-2025-1234 tilføjet - Gave fra ægtefælle",
|
||
|
|
"actor": "Reception",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-09-15",
|
||
|
|
"time": "11:30",
|
||
|
|
"type": "edit",
|
||
|
|
"icon": "clipboard-text",
|
||
|
|
"title": "Håranalyse udført og gemt",
|
||
|
|
"actor": "Nina K.",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-08-01",
|
||
|
|
"time": "09:00",
|
||
|
|
"type": "customer",
|
||
|
|
"icon": "star",
|
||
|
|
"title": "Opgraderet til Premium kundegruppe",
|
||
|
|
"actor": "System",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2023-06-20",
|
||
|
|
"time": "10:45",
|
||
|
|
"type": "warning",
|
||
|
|
"icon": "warning",
|
||
|
|
"title": "Advarsel registreret — Hårskade noteret",
|
||
|
|
"actor": "Emma L.",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2023-05-15",
|
||
|
|
"time": "14:00",
|
||
|
|
"type": "customer",
|
||
|
|
"icon": "user-plus",
|
||
|
|
"title": "Kunde oprettet via telefon",
|
||
|
|
"actor": "Reception",
|
||
|
|
"badges": []
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
|
||
|
|
"camilla-holm": {
|
||
|
|
"id": "camilla-holm",
|
||
|
|
"header": {
|
||
|
|
"initials": "CH",
|
||
|
|
"name": "Camilla Holm",
|
||
|
|
"customerSince": "2022-12-01",
|
||
|
|
"tags": ["vip"],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 25,
|
||
|
|
"avgIntervalDays": 35,
|
||
|
|
"preferredHairdresser": "Emma L.",
|
||
|
|
"totalRevenue": 28500
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 66 77 88 99",
|
||
|
|
"email": "camilla.h@outlook.dk",
|
||
|
|
"address": "Strandvejen 45",
|
||
|
|
"zip": "2900",
|
||
|
|
"city": "Hellerup"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Fint - Bolget" },
|
||
|
|
{ "title": "Porositet", "value": "Hoj" },
|
||
|
|
{ "title": "Hovedbund", "value": "Tor" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Lysblond (8)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": true },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Emma L.",
|
||
|
|
"preferredDays": "Tirsdag",
|
||
|
|
"specialRequests": "Onsker altid en kop kaffe"
|
||
|
|
},
|
||
|
|
"warnings": [],
|
||
|
|
"group": { "groupId": "premium", "groupName": "Premium" },
|
||
|
|
"relations": [],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 25, "cancelled": 1, "noShow": 0, "reliabilityPercent": 96 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip + Farve", "count": 15 },
|
||
|
|
{ "name": "Behandling", "count": 8 },
|
||
|
|
{ "name": "Klip", "count": 2 }
|
||
|
|
],
|
||
|
|
"topProducts": [
|
||
|
|
{ "name": "Olaplex No. 3", "count": 4 },
|
||
|
|
{ "name": "Harkur", "count": 3 }
|
||
|
|
],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 14,
|
||
|
|
"preferredDay": "Tirsdag",
|
||
|
|
"preferredTimeSlot": "10:00 - 12:00",
|
||
|
|
"onlineBookingRate": 60,
|
||
|
|
"avgCancellationNoticeDays": 5
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 2.1, "daysSinceLastVisit": 88, "churnRisk": "low", "avgIntervalDays": 35 }
|
||
|
|
},
|
||
|
|
"journal": [],
|
||
|
|
"appointments": { "upcoming": [], "history": [] },
|
||
|
|
"giftcards": { "active": [], "expired": [] },
|
||
|
|
"activity": []
|
||
|
|
},
|
||
|
|
|
||
|
|
"emma-larsen": {
|
||
|
|
"id": "emma-larsen",
|
||
|
|
"header": {
|
||
|
|
"initials": "EL",
|
||
|
|
"name": "Emma Larsen",
|
||
|
|
"customerSince": "2024-06-01",
|
||
|
|
"tags": [],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 8,
|
||
|
|
"avgIntervalDays": 30,
|
||
|
|
"preferredHairdresser": "Nina K.",
|
||
|
|
"totalRevenue": 5600
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 12 34 56 78",
|
||
|
|
"email": "emma.l@gmail.com",
|
||
|
|
"address": "Norrebrogade 100",
|
||
|
|
"zip": "2200",
|
||
|
|
"city": "Kobenhavn N"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Medium - Glat" },
|
||
|
|
{ "title": "Porositet", "value": "Medium" },
|
||
|
|
{ "title": "Hovedbund", "value": "Normal" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Morkbrun (3)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": false },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Nina K.",
|
||
|
|
"preferredDays": "Lordag",
|
||
|
|
"specialRequests": ""
|
||
|
|
},
|
||
|
|
"warnings": [],
|
||
|
|
"group": { "groupId": "standard", "groupName": "Standard" },
|
||
|
|
"relations": [],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 8, "cancelled": 0, "noShow": 0, "reliabilityPercent": 100 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip", "count": 6 },
|
||
|
|
{ "name": "Fon", "count": 2 }
|
||
|
|
],
|
||
|
|
"topProducts": [],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 5,
|
||
|
|
"preferredDay": "Lordag",
|
||
|
|
"preferredTimeSlot": "11:00 - 13:00",
|
||
|
|
"onlineBookingRate": 100,
|
||
|
|
"avgCancellationNoticeDays": 0
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 0.6, "daysSinceLastVisit": 50, "churnRisk": "low", "avgIntervalDays": 30 }
|
||
|
|
},
|
||
|
|
"journal": [],
|
||
|
|
"appointments": { "upcoming": [], "history": [] },
|
||
|
|
"giftcards": { "active": [], "expired": [] },
|
||
|
|
"activity": []
|
||
|
|
},
|
||
|
|
|
||
|
|
"freja-christensen": {
|
||
|
|
"id": "freja-christensen",
|
||
|
|
"header": {
|
||
|
|
"initials": "FC",
|
||
|
|
"name": "Freja Christensen",
|
||
|
|
"customerSince": "2022-08-01",
|
||
|
|
"tags": ["vip", "allergi"],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 31,
|
||
|
|
"avgIntervalDays": 28,
|
||
|
|
"preferredHairdresser": "Emma L.",
|
||
|
|
"totalRevenue": 42000
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 55 66 77 88",
|
||
|
|
"email": "freja.c@outlook.dk",
|
||
|
|
"address": "Frederiksberggade 50",
|
||
|
|
"zip": "1459",
|
||
|
|
"city": "Kobenhavn K"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Tykt - Krollet" },
|
||
|
|
{ "title": "Porositet", "value": "Hoj" },
|
||
|
|
{ "title": "Hovedbund", "value": "Sensitiv" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Rod (7)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": true },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Emma L.",
|
||
|
|
"preferredDays": "Onsdag",
|
||
|
|
"specialRequests": "Skal altid have allergitjek for farve"
|
||
|
|
},
|
||
|
|
"warnings": [
|
||
|
|
{ "title": "Allergi", "value": "Allergisk over for PPD - brug kun PPD-fri farver" }
|
||
|
|
],
|
||
|
|
"group": { "groupId": "premium", "groupName": "Premium" },
|
||
|
|
"relations": [],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 31, "cancelled": 2, "noShow": 0, "reliabilityPercent": 94 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip + Farve", "count": 20 },
|
||
|
|
{ "name": "Behandling", "count": 8 },
|
||
|
|
{ "name": "Klip", "count": 3 }
|
||
|
|
],
|
||
|
|
"topProducts": [
|
||
|
|
{ "name": "Sensitiv Shampoo", "count": 6 },
|
||
|
|
{ "name": "Harkur", "count": 4 }
|
||
|
|
],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 10,
|
||
|
|
"preferredDay": "Onsdag",
|
||
|
|
"preferredTimeSlot": "09:00 - 11:00",
|
||
|
|
"onlineBookingRate": 80,
|
||
|
|
"avgCancellationNoticeDays": 3
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 2.4, "daysSinceLastVisit": 65, "churnRisk": "low", "avgIntervalDays": 28 }
|
||
|
|
},
|
||
|
|
"journal": [
|
||
|
|
{
|
||
|
|
"id": "entry-1",
|
||
|
|
"type": "note",
|
||
|
|
"tag": "Advarsel",
|
||
|
|
"subtags": ["Allergi"],
|
||
|
|
"text": "PPD ALLERGI - Brug KUN PPD-fri farver. Kunden havde allergisk reaktion i 2021.",
|
||
|
|
"date": "2022-08-15",
|
||
|
|
"author": "Emma"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"appointments": { "upcoming": [], "history": [] },
|
||
|
|
"giftcards": { "active": [], "expired": [] },
|
||
|
|
"activity": []
|
||
|
|
},
|
||
|
|
|
||
|
|
"ida-andersen": {
|
||
|
|
"id": "ida-andersen",
|
||
|
|
"header": {
|
||
|
|
"initials": "IA",
|
||
|
|
"name": "Ida Andersen",
|
||
|
|
"customerSince": "2025-10-01",
|
||
|
|
"tags": ["ny"],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 3,
|
||
|
|
"avgIntervalDays": 21,
|
||
|
|
"preferredHairdresser": "Sofie M.",
|
||
|
|
"totalRevenue": 1650
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 11 22 33 44",
|
||
|
|
"email": "ida@firma.dk",
|
||
|
|
"address": "Osterbrogade 80",
|
||
|
|
"zip": "2100",
|
||
|
|
"city": "Kobenhavn O"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Fint - Glat" },
|
||
|
|
{ "title": "Porositet", "value": "Lav" },
|
||
|
|
{ "title": "Hovedbund", "value": "Normal" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Blond (7)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": false },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Sofie M.",
|
||
|
|
"preferredDays": "Torsdag",
|
||
|
|
"specialRequests": ""
|
||
|
|
},
|
||
|
|
"warnings": [],
|
||
|
|
"group": { "groupId": "standard", "groupName": "Standard" },
|
||
|
|
"relations": [],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 3, "cancelled": 0, "noShow": 0, "reliabilityPercent": 100 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip", "count": 3 }
|
||
|
|
],
|
||
|
|
"topProducts": [],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 3,
|
||
|
|
"preferredDay": "Torsdag",
|
||
|
|
"preferredTimeSlot": "16:00 - 18:00",
|
||
|
|
"onlineBookingRate": 100,
|
||
|
|
"avgCancellationNoticeDays": 0
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 0.2, "daysSinceLastVisit": 57, "churnRisk": "medium", "avgIntervalDays": 21 }
|
||
|
|
},
|
||
|
|
"journal": [],
|
||
|
|
"appointments": { "upcoming": [], "history": [] },
|
||
|
|
"giftcards": { "active": [], "expired": [] },
|
||
|
|
"activity": []
|
||
|
|
},
|
||
|
|
|
||
|
|
"katrine-berg": {
|
||
|
|
"id": "katrine-berg",
|
||
|
|
"header": {
|
||
|
|
"initials": "KB",
|
||
|
|
"name": "Katrine Berg",
|
||
|
|
"customerSince": "2024-04-01",
|
||
|
|
"tags": [],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 12,
|
||
|
|
"avgIntervalDays": 28,
|
||
|
|
"preferredHairdresser": "Nina K.",
|
||
|
|
"totalRevenue": 9600
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 55 66 77 88",
|
||
|
|
"email": "katrine.b@firma.dk",
|
||
|
|
"address": "Vesterbrogade 120",
|
||
|
|
"zip": "1620",
|
||
|
|
"city": "Kobenhavn V"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Medium - Bolget" },
|
||
|
|
{ "title": "Porositet", "value": "Medium" },
|
||
|
|
{ "title": "Hovedbund", "value": "Normal" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Morkblond (6)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": true },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Nina K.",
|
||
|
|
"preferredDays": "Mandag",
|
||
|
|
"specialRequests": ""
|
||
|
|
},
|
||
|
|
"warnings": [],
|
||
|
|
"group": { "groupId": "standard", "groupName": "Standard" },
|
||
|
|
"relations": [],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 12, "cancelled": 1, "noShow": 0, "reliabilityPercent": 92 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip", "count": 8 },
|
||
|
|
{ "name": "Farve", "count": 4 }
|
||
|
|
],
|
||
|
|
"topProducts": [],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 7,
|
||
|
|
"preferredDay": "Mandag",
|
||
|
|
"preferredTimeSlot": "10:00 - 12:00",
|
||
|
|
"onlineBookingRate": 75,
|
||
|
|
"avgCancellationNoticeDays": 2
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 0.8, "daysSinceLastVisit": 84, "churnRisk": "medium", "avgIntervalDays": 28 }
|
||
|
|
},
|
||
|
|
"journal": [],
|
||
|
|
"appointments": { "upcoming": [], "history": [] },
|
||
|
|
"giftcards": { "active": [], "expired": [] },
|
||
|
|
"activity": []
|
||
|
|
},
|
||
|
|
|
||
|
|
"line-frost": {
|
||
|
|
"id": "line-frost",
|
||
|
|
"header": {
|
||
|
|
"initials": "LF",
|
||
|
|
"name": "Line Frost",
|
||
|
|
"customerSince": "2024-05-01",
|
||
|
|
"tags": ["sensitiv"],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 9,
|
||
|
|
"avgIntervalDays": 35,
|
||
|
|
"preferredHairdresser": "Nina K.",
|
||
|
|
"totalRevenue": 7200
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 88 99 00 11",
|
||
|
|
"email": "line.f@mail.dk",
|
||
|
|
"address": "Amagerbrogade 55",
|
||
|
|
"zip": "2300",
|
||
|
|
"city": "Kobenhavn S"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Fint - Glat" },
|
||
|
|
{ "title": "Porositet", "value": "Hoj" },
|
||
|
|
{ "title": "Hovedbund", "value": "Sensitiv" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Lysblond (8)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": false, "smsOptIn": false },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Nina K.",
|
||
|
|
"preferredDays": "Tirsdag",
|
||
|
|
"specialRequests": "Sensitiv hovedbund - brug milde produkter"
|
||
|
|
},
|
||
|
|
"warnings": [
|
||
|
|
{ "title": "Sensitiv hovedbund", "value": "Brug kun milde, parfumefri produkter" }
|
||
|
|
],
|
||
|
|
"group": { "groupId": "standard", "groupName": "Standard" },
|
||
|
|
"relations": [],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 9, "cancelled": 0, "noShow": 0, "reliabilityPercent": 100 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip", "count": 7 },
|
||
|
|
{ "name": "Behandling", "count": 2 }
|
||
|
|
],
|
||
|
|
"topProducts": [
|
||
|
|
{ "name": "Sensitiv Shampoo", "count": 2 }
|
||
|
|
],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 10,
|
||
|
|
"preferredDay": "Tirsdag",
|
||
|
|
"preferredTimeSlot": "13:00 - 15:00",
|
||
|
|
"onlineBookingRate": 90,
|
||
|
|
"avgCancellationNoticeDays": 0
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 0.7, "daysSinceLastVisit": 101, "churnRisk": "medium", "avgIntervalDays": 35 }
|
||
|
|
},
|
||
|
|
"journal": [],
|
||
|
|
"appointments": { "upcoming": [], "history": [] },
|
||
|
|
"giftcards": { "active": [], "expired": [] },
|
||
|
|
"activity": []
|
||
|
|
},
|
||
|
|
|
||
|
|
"louise-hansen": {
|
||
|
|
"id": "louise-hansen",
|
||
|
|
"header": {
|
||
|
|
"initials": "LH",
|
||
|
|
"name": "Louise Hansen",
|
||
|
|
"customerSince": "2023-02-01",
|
||
|
|
"tags": ["stamkunde"],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 18,
|
||
|
|
"avgIntervalDays": 42,
|
||
|
|
"preferredHairdresser": "Emma L.",
|
||
|
|
"totalRevenue": 18900
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 33 44 55 66",
|
||
|
|
"email": "louise.h@gmail.com",
|
||
|
|
"address": "Gammel Kongevej 80",
|
||
|
|
"zip": "1850",
|
||
|
|
"city": "Frederiksberg C"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Tykt - Bolget" },
|
||
|
|
{ "title": "Porositet", "value": "Medium" },
|
||
|
|
{ "title": "Hovedbund", "value": "Normal" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Brun (5)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": true },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Emma L.",
|
||
|
|
"preferredDays": "Onsdag/Torsdag",
|
||
|
|
"specialRequests": ""
|
||
|
|
},
|
||
|
|
"warnings": [],
|
||
|
|
"group": { "groupId": "standard", "groupName": "Standard" },
|
||
|
|
"relations": [],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 18, "cancelled": 1, "noShow": 0, "reliabilityPercent": 95 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip + Farve", "count": 10 },
|
||
|
|
{ "name": "Klip", "count": 6 },
|
||
|
|
{ "name": "Fon", "count": 2 }
|
||
|
|
],
|
||
|
|
"topProducts": [
|
||
|
|
{ "name": "Harkur", "count": 3 }
|
||
|
|
],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 14,
|
||
|
|
"preferredDay": "Onsdag",
|
||
|
|
"preferredTimeSlot": "10:00 - 12:00",
|
||
|
|
"onlineBookingRate": 50,
|
||
|
|
"avgCancellationNoticeDays": 4
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 1.9, "daysSinceLastVisit": 75, "churnRisk": "low", "avgIntervalDays": 42 }
|
||
|
|
},
|
||
|
|
"journal": [],
|
||
|
|
"appointments": { "upcoming": [], "history": [] },
|
||
|
|
"giftcards": { "active": [], "expired": [] },
|
||
|
|
"activity": []
|
||
|
|
},
|
||
|
|
|
||
|
|
"maja-petersen": {
|
||
|
|
"id": "maja-petersen",
|
||
|
|
"header": {
|
||
|
|
"initials": "MP",
|
||
|
|
"name": "Maja Petersen",
|
||
|
|
"customerSince": "2023-01-01",
|
||
|
|
"tags": ["stamkunde"],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 22,
|
||
|
|
"avgIntervalDays": 35,
|
||
|
|
"preferredHairdresser": "Emma L.",
|
||
|
|
"totalRevenue": 24200
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 98 76 54 32",
|
||
|
|
"email": "maja.p@mail.dk",
|
||
|
|
"address": "Jagtvej 150",
|
||
|
|
"zip": "2200",
|
||
|
|
"city": "Kobenhavn N"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Medium - Glat" },
|
||
|
|
{ "title": "Porositet", "value": "Medium" },
|
||
|
|
{ "title": "Hovedbund", "value": "Normal" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Morkblond (6)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": true },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Emma L.",
|
||
|
|
"preferredDays": "Fredag",
|
||
|
|
"specialRequests": ""
|
||
|
|
},
|
||
|
|
"warnings": [],
|
||
|
|
"group": { "groupId": "standard", "groupName": "Standard" },
|
||
|
|
"relations": [],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 22, "cancelled": 2, "noShow": 0, "reliabilityPercent": 92 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip + Farve", "count": 12 },
|
||
|
|
{ "name": "Klip", "count": 8 },
|
||
|
|
{ "name": "Behandling", "count": 2 }
|
||
|
|
],
|
||
|
|
"topProducts": [
|
||
|
|
{ "name": "Olaplex No. 3", "count": 4 },
|
||
|
|
{ "name": "Shampoo", "count": 2 }
|
||
|
|
],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 10,
|
||
|
|
"preferredDay": "Fredag",
|
||
|
|
"preferredTimeSlot": "14:00 - 16:00",
|
||
|
|
"onlineBookingRate": 70,
|
||
|
|
"avgCancellationNoticeDays": 3
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 2.0, "daysSinceLastVisit": 54, "churnRisk": "low", "avgIntervalDays": 35 }
|
||
|
|
},
|
||
|
|
"journal": [],
|
||
|
|
"appointments": { "upcoming": [], "history": [] },
|
||
|
|
"giftcards": { "active": [], "expired": [] },
|
||
|
|
"activity": []
|
||
|
|
},
|
||
|
|
|
||
|
|
"maria-olsen": {
|
||
|
|
"id": "maria-olsen",
|
||
|
|
"header": {
|
||
|
|
"initials": "MO",
|
||
|
|
"name": "Maria Olsen",
|
||
|
|
"customerSince": "2025-11-01",
|
||
|
|
"tags": ["ny"],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 2,
|
||
|
|
"avgIntervalDays": 14,
|
||
|
|
"preferredHairdresser": "Sofie M.",
|
||
|
|
"totalRevenue": 1100
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 44 55 66 77",
|
||
|
|
"email": "maria.o@mail.dk",
|
||
|
|
"address": "Istedgade 30",
|
||
|
|
"zip": "1650",
|
||
|
|
"city": "Kobenhavn V"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Fint - Bolget" },
|
||
|
|
{ "title": "Porositet", "value": "Medium" },
|
||
|
|
{ "title": "Hovedbund", "value": "Normal" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Blond (7)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": false },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Sofie M.",
|
||
|
|
"preferredDays": "Lordag",
|
||
|
|
"specialRequests": ""
|
||
|
|
},
|
||
|
|
"warnings": [],
|
||
|
|
"group": { "groupId": "standard", "groupName": "Standard" },
|
||
|
|
"relations": [],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 2, "cancelled": 0, "noShow": 0, "reliabilityPercent": 100 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip", "count": 2 }
|
||
|
|
],
|
||
|
|
"topProducts": [],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 2,
|
||
|
|
"preferredDay": "Lordag",
|
||
|
|
"preferredTimeSlot": "10:00 - 12:00",
|
||
|
|
"onlineBookingRate": 100,
|
||
|
|
"avgCancellationNoticeDays": 0
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 0.1, "daysSinceLastVisit": 80, "churnRisk": "high", "avgIntervalDays": 14 }
|
||
|
|
},
|
||
|
|
"journal": [],
|
||
|
|
"appointments": { "upcoming": [], "history": [] },
|
||
|
|
"giftcards": { "active": [], "expired": [] },
|
||
|
|
"activity": []
|
||
|
|
},
|
||
|
|
|
||
|
|
"rikke-skov": {
|
||
|
|
"id": "rikke-skov",
|
||
|
|
"header": {
|
||
|
|
"initials": "RS",
|
||
|
|
"name": "Rikke Skov",
|
||
|
|
"customerSince": "2025-08-01",
|
||
|
|
"tags": [],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 4,
|
||
|
|
"avgIntervalDays": 28,
|
||
|
|
"preferredHairdresser": "Sofie M.",
|
||
|
|
"totalRevenue": 2800
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 77 88 99 00",
|
||
|
|
"email": "rikke.s@gmail.com",
|
||
|
|
"address": "Valby Langgade 100",
|
||
|
|
"zip": "2500",
|
||
|
|
"city": "Valby"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Medium - Glat" },
|
||
|
|
{ "title": "Porositet", "value": "Lav" },
|
||
|
|
{ "title": "Hovedbund", "value": "Normal" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Brun (4)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": true },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Sofie M.",
|
||
|
|
"preferredDays": "Torsdag",
|
||
|
|
"specialRequests": ""
|
||
|
|
},
|
||
|
|
"warnings": [],
|
||
|
|
"group": { "groupId": "standard", "groupName": "Standard" },
|
||
|
|
"relations": [],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 4, "cancelled": 0, "noShow": 0, "reliabilityPercent": 100 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip", "count": 4 }
|
||
|
|
],
|
||
|
|
"topProducts": [],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 5,
|
||
|
|
"preferredDay": "Torsdag",
|
||
|
|
"preferredTimeSlot": "15:00 - 17:00",
|
||
|
|
"onlineBookingRate": 100,
|
||
|
|
"avgCancellationNoticeDays": 0
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 0.4, "daysSinceLastVisit": 96, "churnRisk": "medium", "avgIntervalDays": 28 }
|
||
|
|
},
|
||
|
|
"journal": [],
|
||
|
|
"appointments": { "upcoming": [], "history": [] },
|
||
|
|
"giftcards": { "active": [], "expired": [] },
|
||
|
|
"activity": []
|
||
|
|
},
|
||
|
|
|
||
|
|
"sofie-nielsen": {
|
||
|
|
"id": "sofie-nielsen",
|
||
|
|
"header": {
|
||
|
|
"initials": "SN",
|
||
|
|
"name": "Sofie Nielsen",
|
||
|
|
"customerSince": "2024-03-01",
|
||
|
|
"tags": ["vip"],
|
||
|
|
"bookingAllowed": true,
|
||
|
|
"facts": {
|
||
|
|
"visits": 14,
|
||
|
|
"avgIntervalDays": 32,
|
||
|
|
"preferredHairdresser": "Emma L.",
|
||
|
|
"totalRevenue": 12450
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"economy": {
|
||
|
|
"currentYear": { "year": 2025, "total": 8450 },
|
||
|
|
"lastYear": { "year": 2024, "total": 4000 },
|
||
|
|
"avgPerVisit": 604,
|
||
|
|
"avgPerMonth": 704,
|
||
|
|
"chartData": {
|
||
|
|
"categories": ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
|
||
|
|
"series": [
|
||
|
|
{
|
||
|
|
"name": "Services",
|
||
|
|
"color": "#00897b",
|
||
|
|
"data": [
|
||
|
|
{ "x": "Mar", "y": 550 },
|
||
|
|
{ "x": "Jun", "y": 1200 },
|
||
|
|
{ "x": "Aug", "y": 1600 },
|
||
|
|
{ "x": "Okt", "y": 550 },
|
||
|
|
{ "x": "Nov", "y": 1200 },
|
||
|
|
{ "x": "Dec", "y": 1450 }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "Produkter",
|
||
|
|
"color": "#1976d2",
|
||
|
|
"data": [
|
||
|
|
{ "x": "Apr", "y": 250 },
|
||
|
|
{ "x": "Sep", "y": 349 }
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"purchases": [
|
||
|
|
{ "invoice": "#1893", "date": "2025-12-09", "time": "10:30", "employee": "Emma L.", "services": "Klip + Farve", "type": "service", "amount": 1450 },
|
||
|
|
{ "invoice": "#1846", "date": "2025-11-12", "time": "14:00", "employee": "Emma L.", "services": "Farve", "type": "service", "amount": 1200 },
|
||
|
|
{ "invoice": "#1799", "date": "2025-10-15", "time": "11:45", "employee": "Emma L.", "services": "Klip", "type": "service", "amount": 550 },
|
||
|
|
{ "invoice": "#1757", "date": "2025-09-20", "time": "16:00", "employee": "Nina K.", "services": "Olaplex No. 3", "type": "product", "amount": 349 },
|
||
|
|
{ "invoice": "#1702", "date": "2025-08-15", "time": "09:30", "employee": "Emma L.", "services": "Farve + Klip", "type": "service", "amount": 1600 }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"contact": {
|
||
|
|
"phone": "+45 23 45 67 89",
|
||
|
|
"email": "sofie@email.dk",
|
||
|
|
"address": "Hovedgaden 12",
|
||
|
|
"zip": "2100",
|
||
|
|
"city": "Kobenhavn O"
|
||
|
|
},
|
||
|
|
"profile": [
|
||
|
|
{ "title": "Hartype", "value": "Medium - Bolget" },
|
||
|
|
{ "title": "Porositet", "value": "Medium" },
|
||
|
|
{ "title": "Hovedbund", "value": "Normal" },
|
||
|
|
{ "title": "Naturlig farve", "value": "Morkblond (6)" }
|
||
|
|
],
|
||
|
|
"marketing": { "emailOptIn": true, "smsOptIn": false },
|
||
|
|
"payment": { "requirePrepayment": false, "allowPartialPayment": false },
|
||
|
|
"preferences": {
|
||
|
|
"preferredHairdresser": "Emma L.",
|
||
|
|
"preferredDays": "Tirsdag/Torsdag",
|
||
|
|
"specialRequests": "Foretraekker kold tone, ikke for mork"
|
||
|
|
},
|
||
|
|
"warnings": [
|
||
|
|
{ "title": "Allergier / Folsomhed", "value": "Parfumeallergi - brug uparfumerede produkter" }
|
||
|
|
],
|
||
|
|
"group": { "groupId": "standard", "groupName": "Standard" },
|
||
|
|
"relations": [
|
||
|
|
{ "id": "emil-nielsen", "name": "Emil Nielsen", "initials": "EN", "type": "Barn" },
|
||
|
|
{ "id": "luna-nielsen", "name": "Luna Nielsen", "initials": "LN", "type": "Barn" }
|
||
|
|
],
|
||
|
|
"statistics": {
|
||
|
|
"attendance": { "attended": 47, "cancelled": 3, "noShow": 1, "reliabilityPercent": 92 },
|
||
|
|
"topServices": [
|
||
|
|
{ "name": "Klip + Farve", "count": 12 },
|
||
|
|
{ "name": "Farve", "count": 8 },
|
||
|
|
{ "name": "Klip", "count": 6 }
|
||
|
|
],
|
||
|
|
"topProducts": [
|
||
|
|
{ "name": "Olaplex No. 3", "count": 5 },
|
||
|
|
{ "name": "Shampoo", "count": 3 },
|
||
|
|
{ "name": "Harkur", "count": 2 }
|
||
|
|
],
|
||
|
|
"bookingBehavior": {
|
||
|
|
"avgBookingNoticeDays": 5,
|
||
|
|
"preferredDay": "Tirsdag",
|
||
|
|
"preferredTimeSlot": "10:00 - 12:00",
|
||
|
|
"onlineBookingRate": 78,
|
||
|
|
"avgCancellationNoticeDays": 2
|
||
|
|
},
|
||
|
|
"loyalty": { "customerSinceYears": 1.8, "daysSinceLastVisit": 13, "churnRisk": "low", "avgIntervalDays": 32 }
|
||
|
|
},
|
||
|
|
"journal": [
|
||
|
|
{
|
||
|
|
"id": "entry-1",
|
||
|
|
"type": "note",
|
||
|
|
"tag": "Note",
|
||
|
|
"subtags": [],
|
||
|
|
"text": "Kunden foretraekker naturlige farver og onsker lidt ekstra tid til konsultation. Husk at tjekke allergistatus inden farvebehandling.",
|
||
|
|
"date": "2025-12-09",
|
||
|
|
"author": "Emma"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "entry-2",
|
||
|
|
"type": "note",
|
||
|
|
"tag": "Advarsel",
|
||
|
|
"subtags": ["Allergi"],
|
||
|
|
"text": "PARFUMEALLERGI - Brug kun uparfumerede produkter. Havde reaktion pa standard shampoo ved forste besog.",
|
||
|
|
"date": "2024-03-15",
|
||
|
|
"author": "Nina"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "entry-3",
|
||
|
|
"type": "colorFormula",
|
||
|
|
"tag": "Farveformel",
|
||
|
|
"subtags": [],
|
||
|
|
"text": "Maltone: Kold\nOxidant: 6%\nFormel: 7/1 + 7/0 (1:1)\nVirketid: 35 min\nPlacering: Hele haret\n\nResultat: Flot ensartet farve, kunden meget tilfreds",
|
||
|
|
"date": "2025-11-12",
|
||
|
|
"author": "Emma"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "entry-4",
|
||
|
|
"type": "analysis",
|
||
|
|
"tag": "Haranalyse",
|
||
|
|
"subtags": [],
|
||
|
|
"text": "Tilstand: God, let tort i spidserne\nPorositet: Medium\nElasticitet: Normal\n\nAnbefaling: Olaplex behandling hver 6. uge",
|
||
|
|
"date": "2025-10-01",
|
||
|
|
"author": "Maria"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"appointments": {
|
||
|
|
"upcoming": [
|
||
|
|
{
|
||
|
|
"date": "2026-01-14",
|
||
|
|
"time": "10:00",
|
||
|
|
"service": "Klip + Farve",
|
||
|
|
"hairdresser": "Emma L.",
|
||
|
|
"duration": "2 timer"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"history": [
|
||
|
|
{ "date": "2025-12-09", "service": "Klip + Farve", "hairdresser": "Emma L.", "duration": "2 timer", "price": 1450 },
|
||
|
|
{ "date": "2025-11-12", "service": "Farve", "hairdresser": "Emma L.", "duration": "1t 30m", "price": 1200 },
|
||
|
|
{ "date": "2025-10-15", "service": "Klip", "hairdresser": "Emma L.", "duration": "45 min", "price": 550 },
|
||
|
|
{ "date": "2025-09-20", "service": "Klip + Behandling", "hairdresser": "Nina K.", "duration": "1t 15m", "price": 750 },
|
||
|
|
{ "date": "2025-08-15", "service": "Farve + Klip", "hairdresser": "Emma L.", "duration": "2t 15m", "price": 1600 }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"giftcards": {
|
||
|
|
"active": [
|
||
|
|
{
|
||
|
|
"id": "GK-2024-0892",
|
||
|
|
"type": "giftcard",
|
||
|
|
"label": "Gavekort #GK-2024-0892",
|
||
|
|
"originalValue": 500,
|
||
|
|
"currentBalance": 350,
|
||
|
|
"expiresAt": "2026-03-15"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "10-klip",
|
||
|
|
"type": "punchcard",
|
||
|
|
"label": "10-klip kort",
|
||
|
|
"totalPunches": 10,
|
||
|
|
"usedPunches": 7,
|
||
|
|
"expiresAt": null
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"expired": []
|
||
|
|
},
|
||
|
|
"activity": [
|
||
|
|
{
|
||
|
|
"date": "2025-12-10",
|
||
|
|
"time": "14:00",
|
||
|
|
"type": "communication",
|
||
|
|
"icon": "chat-text",
|
||
|
|
"title": "SMS pamindelse sendt om aftale i morgen",
|
||
|
|
"actor": "System",
|
||
|
|
"badges": ["auto"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-12-10",
|
||
|
|
"time": "09:15",
|
||
|
|
"type": "customer",
|
||
|
|
"icon": "key",
|
||
|
|
"title": "Kunde loggede ind via online booking",
|
||
|
|
"actor": null,
|
||
|
|
"badges": ["online"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-12-09",
|
||
|
|
"time": "12:30",
|
||
|
|
"type": "booking",
|
||
|
|
"icon": "check-circle",
|
||
|
|
"title": "Booking gennemfort",
|
||
|
|
"actor": "Farve + Behandling - Emma L.",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-12-09",
|
||
|
|
"time": "12:45",
|
||
|
|
"type": "edit",
|
||
|
|
"icon": "note-pencil",
|
||
|
|
"title": "Note tilfojet - Farveformel opdateret",
|
||
|
|
"actor": "Emma L.",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2025-11-15",
|
||
|
|
"time": "10:00",
|
||
|
|
"type": "warning",
|
||
|
|
"icon": "warning",
|
||
|
|
"title": "Allergi registreret - Parfumeallergi tilfojet til profil",
|
||
|
|
"actor": "Nina K.",
|
||
|
|
"badges": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"date": "2024-03-01",
|
||
|
|
"time": "14:22",
|
||
|
|
"type": "customer",
|
||
|
|
"icon": "user-plus",
|
||
|
|
"title": "Kunde oprettet via online booking",
|
||
|
|
"actor": "System",
|
||
|
|
"badges": []
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|