{
  "_meta": {
    "fajl": "fixtures/demo.json — Urbino public-spa · demó-adatkészlet",
    "frissitve": "2026. 09. 22.",
    "cel": "hogy az első képernyő backend nélkül is rendereljen, és a keretek pontosan reprodukálhatók legyenek",
    "forras": "a mobilapp lib.jsx készlete (mobil-szinkron, 2026. 07. 14.) — a webes keretek ugyanezt használják",
    "mezonevek": "a döntött mezőnevek a spec 3. szakaszaiból jönnek (10_publikus_oldalak_es_seo.md · 20_webes_capture_es_koveto_oldal.md, v2.0); ütközésnél a spec dönt. A kötött rész az érték és a láthatóság",
    "horgonyok_magyarazat": "a relatív időformák („4 napja”) ezekhez a most-pontokhoz számítanak — ne a rendszerdátumhoz",
    "nyitott": "az ALM-1042 és ALM-1047 cím↔azonosító párosítást a mobil lib.jsx-ben kell ellenőrizni; itt az ALM-1042 a Véghelyi Dezső utcai térkő-bejelentés",
    "v1_hatokor": "A v1-hatókör szerint kivezetve (2026. 09. 22.): surveys · openSurveys · railCounts.surveys · currentUser.address · notifications.newSurvey · b2bDemo · a Jóváhagyva/Folyamatban lépések jegyzetei és az ALM-1051 egyedi statusHeadline-ja (a polgári API ezeket nem adja — SF-132/140/141). A Balatonalmádi-tagság forrása address helyett report. A tenant.stats a döntött alakot követi (avgResolutionDays), és megjelent a townLocative (SF-115)."
  },
  "anchors": {
    "CASE_NOW": "2026-05-10",
    "DEMO_NOW": "2026-06-11",
    "ACCOUNT_NOW": "2026-07-13"
  },
  "tenant": {
    "slug": "balatonalmadi",
    "name": "Balatonalmádi",
    "displayPrefix": "ALM",
    "population": 8000,
    "stats": {
      "reports": 143,
      "resolvedPercent": 86,
      "avgResolutionDays": 4
    },
    "coverPhoto": "assets/balatonalmadi-legifoto.jpg",
    "townLocative": "Balatonalmádiban"
  },
  "currentUser": {
    "firstName": "Gergő",
    "lastName": "Kovács",
    "displayName": "Kovács Gergő",
    "email": "kovacs.gergo@gmail.com",
    "avatarInitial": "G",
    "memberships": [
      {
        "tenant": "balatonalmadi",
        "name": "Balatonalmádi",
        "source": "report",
        "since": "2026-05-06"
      },
      {
        "tenant": "zanka",
        "name": "Zánka",
        "source": "explicit",
        "since": "2026-06-02"
      }
    ],
    "notifications": {
      "reportChange": true
    }
  },
  "railCounts": {
    "reports": 2,
    "_szabaly": "a nem lezárt saját bejelentések száma (Beérkezett · Jóváhagyva · Folyamatban) — spec 20 4.5; a demó-készleten ALM-1060 + ALM-1051"
  },
  "categories": [
    {
      "key": "roads",
      "label": "Utak és járdák",
      "emoji": "🛣️",
      "slug": "utak-es-jardak"
    },
    {
      "key": "lighting",
      "label": "Közvilágítás",
      "emoji": "💡",
      "slug": "kozvilagitas"
    },
    {
      "key": "waste",
      "label": "Hulladék",
      "emoji": "🗑️",
      "slug": "hulladek"
    },
    {
      "key": "parks",
      "label": "Parkok",
      "emoji": "🌿",
      "slug": "parkok"
    },
    {
      "key": "utilities",
      "label": "Közművek",
      "emoji": "🚧",
      "slug": "kozmuvek"
    },
    {
      "key": "other",
      "label": "Egyéb",
      "emoji": "📌",
      "slug": "egyeb"
    }
  ],
  "reports": [
    {
      "displayId": "ALM-1030",
      "slug": "ALM-1030-kidolt-ag-a-parkban",
      "title": "Kidőlt ág a parkban a vihar után",
      "category": "parks",
      "status": "resolved",
      "createdAt": "2026-04-28",
      "location": "Szabadság liget",
      "hasPhoto": true,
      "supportCount": 18,
      "isPublic": true,
      "ownedByCurrentUser": false,
      "timeline": [
        {
          "status": "received",
          "at": "2026-04-28 07:50"
        },
        {
          "status": "approved",
          "at": "2026-04-28 08:30"
        },
        {
          "status": "in_progress",
          "at": "2026-04-29 10:00"
        },
        {
          "status": "resolved",
          "at": "2026-04-30 15:10",
          "note": "Az ágat elszállítottuk, a sétaút újra járható."
        }
      ]
    },
    {
      "displayId": "ALM-1039",
      "slug": "ALM-1039-mely-katyu-a-71-es-fouton",
      "title": "Mély kátyú a 71-es főúton a vasúti átjárónál",
      "category": "roads",
      "status": "forwarded",
      "forwardedToName": "Magyar Közút Nonprofit Zrt.",
      "resolutionMessage": "A 71-es főút nem a település kezelésében van — a jelzést átadtuk az útkezelőnek.",
      "createdAt": "2026-05-02",
      "location": "71-es főút, vasúti átjáró",
      "hasPhoto": false,
      "supportCount": 7,
      "isPublic": true,
      "ownedByCurrentUser": false,
      "_note": "a publikus Továbbítva-állapot referencia-esete (SD-153)"
    },
    {
      "displayId": "ALM-1042",
      "title": "Az úton lévő térkő felbontódott",
      "category": "roads",
      "status": "approved",
      "createdAt": "2026-05-05",
      "location": "Véghelyi Dezső utca",
      "hasPhoto": true,
      "supportCount": 9,
      "isPublic": true,
      "ownedByCurrentUser": false
    },
    {
      "displayId": "ALM-1044",
      "title": "Kiégett lámpa a sétányon",
      "category": "lighting",
      "status": "closed_own",
      "resolutionMessageKey": "reports.softclose.duplicate",
      "duplicateOf": "ALM-1030",
      "createdAt": "2026-05-04",
      "location": "Wesselényi strand sétánya",
      "hasPhoto": false,
      "isPublic": false,
      "ownedByCurrentUser": true,
      "_note": "web-only fixture: saját nézeti soft-lezárás (Duplicate). Publikus oldala NINCS → a linkje 404 (23b). A sablon szövege a mobil 50 §reports.softclose.* — webes átfogalmazás tilos."
    },
    {
      "displayId": "ALM-1051",
      "title": "Csőtörés a Petőfi utcában",
      "category": "utilities",
      "status": "in_progress",
      "createdAt": "2026-05-06",
      "lastChangeAt": "2026-05-09",
      "location": "Petőfi Sándor utca",
      "description": "A járda mellett folyamatosan folyik a víz, a szakasz eljegesedett reggelre. A Petőfi utca páros oldalán, a 14-es szám előtt.",
      "hasPhoto": true,
      "supportCount": 31,
      "isPublic": true,
      "ownedByCurrentUser": true,
      "timeline": [
        {
          "status": "received",
          "at": "2026-05-06 08:10"
        },
        {
          "status": "approved",
          "at": "2026-05-07 09:25"
        },
        {
          "status": "in_progress",
          "at": "2026-05-09 14:00"
        }
      ],
      "_note": "a fiók-részletek (own mód) referencia-esete"
    },
    {
      "displayId": "ALM-1058",
      "title": "Kátyú az elsőbbségadás táblánál",
      "category": "roads",
      "status": "resolved",
      "createdAt": "2026-05-06",
      "hasPhoto": false,
      "isPublic": true,
      "ownedByCurrentUser": true
    },
    {
      "displayId": "ALM-1060",
      "title": "Hiányzó csatornafedő a járdán",
      "category": "utilities",
      "status": "received",
      "createdAt": "2026-05-10",
      "hasPhoto": true,
      "isPublic": false,
      "ownedByCurrentUser": true,
      "_note": "a capture-flow sztorija (Beérkezett) — triage előtt, ezért ownOnly: publikus oldala nincs"
    }
  ],
  "news": [
    {
      "id": 3,
      "slug": "megujult-a-wesselenyi-strand-setanya",
      "title": "Megújult a Wesselényi strand sétánya",
      "publishedAt": "2026-06-08",
      "lead": "Befejeződött a Wesselényi strand sétányának felújítása. Új térkőburkolat, padok és energiatakarékos LED-világítás várja a sétálókat.",
      "hasCoverPhoto": true,
      "photoCaption": "A megújult sétány madártávlatból"
    },
    {
      "id": 4,
      "slug": "szunyoggyerites",
      "title": "Szúnyoggyérítés a város egész területén",
      "publishedAt": "2026-05-28",
      "hasCoverPhoto": false
    },
    {
      "id": 6,
      "slug": "tour-de-hongrie",
      "title": "Tour de Hongrie — forgalomkorlátozások",
      "publishedAt": "2026-05-21",
      "hasCoverPhoto": true
    }
  ],
  "programs": [
    {
      "id": 12,
      "slug": "almadi-kerekvaros-programok",
      "title": "Almádi Kerékváros programok",
      "category": "Közösségi",
      "startsAt": "2026-06-11 16:00",
      "endsAt": "2026-06-11 22:00",
      "venue": {
        "name": "Wesselényi strand előtti tér",
        "lat": 47.0221,
        "lng": 18.0089
      },
      "free": true,
      "eventStatus": "scheduled",
      "_note": "DEMO_NOW szerint „Éppen zajlik”"
    },
    {
      "id": 14,
      "slug": "kezmuves-foglalkozas",
      "title": "Kézműves foglalkozás gyerekeknek",
      "category": "Kultúra",
      "startsAt": "2026-06-12 10:00",
      "endsAt": "2026-06-12 12:00",
      "venue": {
        "name": "Közösségi Ház",
        "address": "Balatonalmádi, Városház tér 4.",
        "lat": 47.0298,
        "lng": 18.0142
      },
      "recurrence": [
        {
          "day": "Péntek",
          "time": "10:00–12:00",
          "audience": "4–10 év"
        },
        {
          "day": "Szombat",
          "time": "09:00–11:00",
          "audience": "6–14 év"
        }
      ],
      "registrationRequired": true,
      "registrationNote": "A foglalkozás előtt a Közösségi Háznál lehet jelentkezni.",
      "eventStatus": "scheduled"
    },
    {
      "id": 22,
      "slug": "almadi-napok",
      "title": "Almádi Napok",
      "category": "Ünnep",
      "startsAt": "2026-06-13",
      "endsAt": "2026-06-14",
      "isCollection": true,
      "multiVenue": true,
      "eventStatus": "scheduled"
    },
    {
      "id": 25,
      "slug": "chill-and-ride",
      "title": "Chill and Ride – Nyugi és tekerj",
      "category": "Sport",
      "startsAt": "2026-06-18 17:30",
      "venue": {
        "name": "Szent Erzsébet liget"
      },
      "eventStatus": "cancelled"
    },
    {
      "id": 9,
      "slug": "majalis-a-ligetben",
      "title": "Majális a ligetben",
      "category": "Ünnep",
      "startsAt": "2026-05-01",
      "eventStatus": "past"
    }
  ],
  "interestDemo": {
    "town": "Veszprém",
    "email": "kovacs.gergo@gmail.com",
    "count": 12,
    "_note": "a számláló csak 5 jelzéstől látszik"
  }
}