Data Model: hbf-client-integrations
Domain objects used by this service. Full schemas:
docs/domain-model.md
Objects This Service Uses
| Object | Access | Key Fields Used |
|---|---|---|
| ChatSessionDTO | reads/writes via HTTP to hbf-core | id, messages, status, tags, subscriberHandle |
| ChatSessionMessageDTO | reads via hbf-core-api | type, text |
| ChatSessionMessageType | reads via hbf-core-api | message type enum |
| Subscriber | reads via HTTP to hbf-core | handle, tenantId |
| Tenant | reads via HTTP to hbf-core | id, organizationId, content, settings |
| BotDeployment | reads via HTTP to hbf-core | id, tenantId, settings |
| Activity | reads/writes via HTTP to hbf-core | id, type, tenantId |
| ActivityCompiled | reads via hbf-core-api | compiled activity data |
| User | reads via HTTP to hbf-core (auth) | id, email, roles |
| Transcript | reads via HTTP to hbf-core | session transcript |
| AnonymizationNamedEntityType | reads via hbf-core-api | anonymization type enum |
Local Entities (Client-Specific)
SIXT
| Entity | Table | DB | Key Fields |
|---|---|---|---|
| GreetingMessage | SIXT_GREETING_MESSAGES | MySQL | id (PK, external checkout item ID), plate (indexed), phone, status (enum, indexed), resno, agrno, checkoutDate (indexed), checkoutStation, deliveredToChannel, deliveredAt, urlClickedAt, urlClickedTimes, error |
Novibet
| Entity | Table | DB | Key Fields |
|---|---|---|---|
| NovibetViberContact | NOVIBET_VIBER_CONTACT | MySQL | id (PK, Viber ID), viberUsername, novibetUsername (unique) |
| NovibetBet | NOVIBET_BET | MySQL | id (auto), option (enum), contact (FK), match (FK). Unique on (contact, match) |
| NovibetMatchDay | NOVIBET_MATCHDAY | MySQL | id (auto), matchDay (unique), activityId, completed, sentWinningMessages* |
| NovibetMatch | NOVIBET_MATCH | MySQL | id (auto), activityId, externalId (unique), title, option1/2/3, matchStartDateTime, matchEndDateTime, result, winningOption, league, liveStreamUrl, matchDay (FK) |
| NovibetLeaderboard | NOVIBET_LEADERBOARD | MySQL | id (auto), title, type (MONTHLY/CUSTOM_RANGE), periodStart, periodEnd, totalParticipants |
| NovibetLeaderboardEntry | NOVIBET_LEADERBOARD_ENTRY | MySQL | id (auto), leaderboard (FK), contact (FK), position, points, totalBets, correctPredictions, successRate (decimal) |
| NovibetGenesysQueue | NOVIBET_GENESYS_QUEUE | MySQL | Composite PK (VIP_TYPE, DEPARTMENT, LANGUAGE, COUNTRY), QUEUE_NAME, QUEUE_ID, CALLBACK_QUEUE_NAME, CALLBACK_QUEUE_ID |
AIA (Athens International Airport)
| Entity | Table | DB | Key Fields |
|---|---|---|---|
| Flight | AIA_FLIGHTS | MySQL | id (PK, FLIGHT_UNIQUE_ID), type (STI discriminator), AIRLINE_IATA_CODE, FLIGHT_NUMBER, FLIGHT_KIND, ORIGIN_AIRPORT, DESTINATION_AIRPORT, REMARK, STATUS, SCHEDULED_TIME |
| ArrivalFlight | AIA_FLIGHTS (STI) | MySQL | TIME, FIRST_BAG_TIME, LAST_BAG_TIME, BAGGAGE_BELT, EXIT |
| DepartureFlight | AIA_FLIGHTS (STI) | MySQL | TIME |
| Gate | AIA_GATE | MySQL | id (auto), START_DATE, END_DATE, GATE_NAME, flight (FK, CASCADE) |
| CheckIn | AIA_CHECK_IN | MySQL | id (auto), START_DATE, END_DATE, SCHEDULED_OPEN, SCHEDULED_CLOSE, DESK_NO, flight (FK, CASCADE) |
| Airport | AIA_AIRPORT | MySQL | Composite PK (IATA_CODE, ICAO_CODE), NAME, COUNTRY, NAME_TRANSLATION |
| Airline | AIA_AIRLINE | MySQL | IATA_CODE (PK), ICAO_CODE, NAME, LOGO_URL |
| Subscriber | AIA_SUBSCRIBER | MySQL | id (auto), FACEBOOK_ID, LANGUAGE, flight (FK, CASCADE) |
| OperationStatus | AIA_OPERATION_STATUS | MySQL | ID (auto), OPERATION_NAME, CREATED_AT, DETAILS, STATUS |
| RelevantFlight | relevant_flight | MySQL | id (uuid), flight (FK, CASCADE), flightId (unique) |
Notes
- Multi-database architecture: each client distributor (SIXT, Novibet, AIA) has its own MySQL database/connection.
- AIA flights use single-table inheritance (STI) with a
typediscriminator column for Arrival vs Departure. - Client-specific entities are completely independent from hbf-core domain objects.
- Accesses hbf-core via direct HTTP calls (not the
HBFCoreApinpm client). Defines its own DTO classes for ChatSession, User, etc. - Also provides an anonymizer service that uses
AnonymizationNamedEntityTypefrom hbf-core-api. - Creates custom activities in hbf-core's bot-content-compiled for client-specific flows.