Data Model

Last generated 2026-07-13 · window 2026-07-12T18:02:00Z–2026-07-13T18:01:03Z

Primary database: MySQL (apps/web/database/migrations/, 122 migrations). Optional ClickHouse for KPI time-series when KPI_DATABASE=clickhouse.

Core entities #

ModelTableRole
CorporationcorporationsMulti-tenant root; Pennant scope
SitesitesFacility; engine_connected for rev-mgmt
UserusersStaff users; Spatie roles; Sanctum tokens
TenanttenantsEnd-customer tenant records (imported)
LedgerledgersFinancial ledger snapshots
Kpi / Metrickpis, metricsDashboard KPI definitions and values
DashboarddashboardsUser dashboard layouts

Tenant Journey #

ModelRole
Campaign, Experiment, variants, assignmentsA/B tests and journey campaigns
RapidstorConfigRapidStor journey configuration per corp
LanguageEnabled locale codes for translation overrides (languages table)
TranslationKeyCatalog of translatable keys with namespace + description
TranslationScoped override values (scope_type: language | corporation | location)
ApplicationInterest"Coming soon" interest tracking (Admin Stats)

Revenue Management mirror #

Migration 2026_05_09_000001_mirror_rev_mgmt_tables.php mirrors engine state:

  • rev_mgmt_facility_settings
  • rev_mgmt_unit_type_families — includes discriminator columns type_name, sitelink_unit_type_id, floor, features (migration 2026_07_06_000001_add_unit_type_family_discriminator, mirrors engine 0023)
  • rev_mgmt_unit_type_unit_map
  • rev_mgmt_audit_log — operator events use structured JWT actor (actor_kind/actor_id); decided_by renders canonical user-id form

AI & chat #

ModelRole
ChatConversation, ChatMessageAssistant + widget conversations
WidgetEmbedTokenPublic widget authentication
CorporationAiGateway, AiUsageEvent, credit ledgerAI billing and usage
AgentPromptVersion, EvalRunManaged agents evals

Feature flags #

Laravel Pennant stores per-scope flag state in features table. Application flags derive from Applications enum; global flags from FeatureFlag enum (helpdesk, rev_mgmt_advanced_rules, etc.).

Separate entitlement signal: revenue_management_entitled (per-corp bool, default false) — governs RM provisioning independently of the revenue_management visibility flag. Backfilled once for corps with explicit ENABLED per-corp override (migration 2026_07_08_000001_backfill_rm_entitlement).