v3 Ultra‑Pro Docs

Data Model

Praktiline skeemidokument sinu Event Mobility süsteemi jaoks. Hõlmab runtime config’i, põhitabeleid ja operatsioonikihte.

1. Ülevaade

Süsteem on event-centric. Peamine “sisuobjekt” on üritus ja selle event_data snapshotid.

organizations (rentnik; endine clients) ├─ org_members (kasutaja + org-roll) └─ events (events.client_id → organizations.id) ├─ event_members (kasutaja + ürituse roll) ├─ event_data ├─ event_access (ajalooline, sünkroonitakse event_members-isse) ├─ tasks ├─ traffic_access ├─ segments ├─ regulator_assignments ├─ regulator_work_sessions ├─ regulator_devices ├─ regulator_feedback ├─ workers └─ chat_messages mail_messages (cross-event public inbox layer)

2. Runtime config (config.js)

Docs kasutab neid runtime objekte otse config.js-st.

KeySelgitusRuntime value

3. events

FieldPurpose
idÜrituse primaarvõti
nameÜrituse nimi
event_dateKuvamiseks mõeldud kuupäev
descriptionAvalik/üldine kirjeldus
sort_orderKataloogi järjestus
publishedKas event on avalik

4. event_data

Kõige olulisem sisucontainer.

FieldPurpose
event_idViide events tabelile
dataAdmini mustand. mapItems on alates 18.10.2026 ridadest ehitatud koopia (tabel event_map_items, trigger event_map_items_sync_json); kui kirjutaja saadab mapItems JSON-ina, sünkroonib trigger aa_event_data_map_json selle ridadesse
data_revTööruumi lukk muude andmete salvestusel (rev+1 tingimusega eq(rev))
published_dataAvalik snapshot
updated_atViimane muutmine
updated_byKes viimati muutis
data = { mapItems: [], closures: [], transport: [], blocks: { dash: [], notes: [] } }

5. profiles

FieldPurpose
idSeos auth useriga
nameKasutajanimi UI-s
emailLogin / kontakt
rolesuper_admin / admin / partner

6. admin_invites

FieldPurpose
emailKutsutava email
roleAntav roll
invite_codeLink/QR token
statuspending / accepted / revoked
accepted_atLiitumise aeg

7. event_access

FieldPurpose
event_idÜritus
user_idKasutaja
can_editEdit õigus sellele eventile

7b. organizations, org_members, event_members, rollid

Õigusi kontrollib ainult has_org_permission(org, õigus) ja has_event_permission(üritus, õigus). UI küsib rpc('my_event_permissions', {p_event}). Vanad funktsioonid (has_event_access, can_manage_event, is_event_admin …) = vana loogika VÕI event.edit uues mudelis.

Tabel / väliPurpose
organizations.name / plan / event_quota / statusRentnik; pakett pilot/professional/enterprise; kvoot (-1 = piiramatu); active/inactive. clients on ajalooline vaade selle peale.
org_members.roleorg_owner · org_admin (kõik ürituse õigused kõigil org-i üritustel) · org_member (näeb org-i)
event_members.roleevent_manager (endine omanik) · event_editor (endine event_access) · operator (staap: staatus, chat, intsidendid) · viewer
*.sourcelegacy = sünkroonitud vanast mudelist (owner_user_id, event_access, profiles.client_id); direct = antud otse
roles / permissions / role_permissionsKataloog, muudetakse ainult migratsiooniga. Rolli saab anda ainult see, kellel on kõik selle rolli õigused.

8. regulator_assignments

FieldPurpose
event_idÜritus
position_codeR-kood / positsioon
segment_codeLõik
regulator_nameTöötaja nimi
phoneTelefon
planned_start / planned_endPlaneeritud tööaeg
role / priority / notesTäiendav haldusinfo
statusplanned / departed jne
locked_device_idSeadme sidumine aktiivse tööga
is_adhocKas loodi käsitsi ad-hocina

9. regulator_work_sessions

FieldPurpose
event_idÜritus
assignment_idViide määrangule
position_codePositsioon
worker_idTöötaja seos
regulator_name / phoneSnapshot töö alustamisel
arrived_at / departed_atTegelik töö algus/lõpp
worked_minutesKinnitatud tööaeg
statusopen / closed
closed_reasonmanual / auto / regulator
closed_byKes sulges
arrived_late / late_minutesHilinemise loogika

10. regulator_devices

FieldPurpose
event_idÜritus
position_codePositsioon
device_idClient-side local device token
activeKas seadmega on aktiivne töö

11. regulator_feedback

FieldPurpose
event_idÜritus
codePositsioon
incidentIntsidenti kirjeldus
incident_atAeg
photo_urlFoto
gps_lat / gps_lngAsukoht

12. chat_messages

FieldPurpose
event_idÜritus
channelgeneral / R204 / traffic
sender_codeSTAAP / TRAFFIC / worker code
sender_nameKuvatav nimi
messageSõnumi sisu
msg_typechat / incident
photo_urlValikuline pilt
created_atAeg

13. segments

FieldPurpose
event_idÜritus
nameLõigu nimi, seotud mapItems segment objektiga
statusopen / closing / safe / opening
updated_byKes muutis
updated_atMillal muutis

14. traffic_access

FieldPurpose
event_idÜritus
codePääsukood
labelPiirkond või nimetus

15. tasks

FieldPurpose
event_idÜritus
titleÜlesanne
assigned_toViide profilele
assigned_nameSnapshot nimi
due_dateTähtaeg
statusopen / in_progress / done

16. mail_messages

FieldPurpose
from_name / from_emailSaatja
subject / bodyKüsimuse sisu
categorygeneral / mobility / complaint / media
statusnew / read / answered / closed
reply_draftStaabi mustandvastus
answered_at / answered_byVastamise auditeerimine
received_atSaabumise aeg

17. workers

FieldPurpose
event_idÜritus
full_nameTöötaja nimi
phoneTelefon
id_codeIsikukood
id_code_maskedMaskitud variant raporteerimiseks

18. Kõik tabelid rühmade kaupa (seis 17.10.2026, 86 tabelit)

Jaotised 3–17 kirjeldavad algset mudelit. Alates 30.09 lisandunud tabelid on allpool rühmade kaupa; iga tabel on RLS-iga ja õigused tulevad has_event_permission() või is_super_admin() kaudu. Tokenid ja lingid on alati räsina.

RühmTabelid
Organisatsioonid ja õigusedorganizations, org_members, event_members, roles, role_permissions, permissions, profiles, admin_invites, plans, billing_settings, invoices, invoice_counters, platform_settings, audit_logs
Üritus ja kaartevents, event_data, event_map_items (kaardiobjektid rida-põhiselt, tõe allikas), event_data_versions (ajalugu ja tagasivõtmine), segments, event_hq_contacts (staabi telefon), event_race_clock, event_sheets (Exceli mallid tagasi)
Liikluskorraldustraffic_plans (etapid, lõigud, ajad, ÜT kirjed), traffic_documents (skeemid, hoidla traffic-docs), traffic_access (pääsukoodid), transport_lines, transport_stops, parking_areas
Välitööworkers, regulator_assignments, regulator_work_sessions (seadme token räsi), regulator_presence_logs, regulator_devices, regulator_feedback, chat_messages, incidents, incident_updates, sms_log
Vabatahtlikud, võistlejad, pääsudmobility_people, mobility_passes (public_token), mobility_zones (alad), operational_points, point_tasks, volunteer_shifts, shift_assignments, scan_checkpoints, scanner_devices, scan_events, event_briefings, briefing_acks, event_feedback, event_flows
Playbook ja projektevent_playbook, event_maturity, project_plans (valdkonnad, ülesanded, riskid, t0_offset), budget_lines, tasks
Partneridevent_partners, partner_links (räsi), partner_posts, partner_post_acks, partner_messages, partner_rfqs, partner_offers, partner_tasks, partner_invoices
Ametid ja ühistransportevent_authorities, authority_links (räsi), authority_feedback, pt_changes, pt_stops, pt_routes, pt_sync_log (avalikud andmed), event_permits (Opinfo valmidus)
Avalikkus ja tugipublic_chat_sessions, public_chat_messages, mail_messages (event_id, kontaktivorm), support_tickets, support_ticket_notes, help_articles (KKK), system_notices (teadaolevad probleemid), weather_cache, portal_resources (omaniku register), integration_events
AIassistant_conversations, assistant_actions (kinnitusega muudatused), assistant_log (kulu paketi kaupa)
Avalikuks loeb anon ainult events (avaldatud, piiratud veerud), event_data.published_data, segments, pt_stops, pt_routes ning avalikud RPC-d (public_transport, public_pt_changes, public_pass, event_segment_shapes). Täpne nimekiri: docs/AUDIT-2026-10-16.md.