Database Architecture (MySQL)
1. Overview
The Alta Call ecosystem relies on a unified MySQL relational database backend. This database orchestrates client organizations, licenses, real-time diagnostic telemetries, consolidated audio quality analysis (Business Intelligence), and automated issue detection.
This document serves as the official reference for the database schema, covering the entity-relationship model, tables dictionaries, and physical indexing optimizations.
2. Entity-Relationship Model (ERD)
The following entity-relationship diagram illustrates the primary tables managed by the Laravel backend and their operational relationships:
classDiagram
direction LR
class clients {
int id PK
string name
string email
string vat_number
json config
}
class groups {
int id PK
int client_id FK
string name
}
class users {
int id PK
int group_id FK
string name
string email
string vmo_user_id
int audiostream1_id FK
}
class licenses {
int license_id PK
int group_id FK
string licenses_key
bool valid
}
class machines {
int id PK
int group_id FK
string vmo_machine_id
string computer
string version
}
class telemetries {
bigint id PK
int client_id FK
int user_id FK
string process_id
datetime date
json payload
}
class users_summaries {
bigint id PK
int user_id FK
string transfo_mode
date date
float duration
}
class machines_issues {
bigint id PK
int machine_id FK
string issue_code
datetime first_update
datetime last_update
string var1
}
class audiodevices {
int id PK
string name
string type
}
class audiostreams {
int id PK
int device_capture_id FK
int device_playback_id FK
float duration
}
clients "1" --> "0..*" groups : owns
groups "1" --> "0..*" users : contains
groups "1" --> "0..*" licenses : assigns
groups "1" --> "0..*" machines : registers
users "1" --> "0..*" telemetries : generates
users "1" --> "0..*" users_summaries : owns
users "0..1" --> "0..*" audiostreams : uses
machines "1" --> "0..*" machines_issues : undergoes
telemetries "0..1" --> "0..*" machines_issues : triggers
audiostreams "0..1" --> "1" audiodevices : captures
audiostreams "0..1" --> "1" audiodevices : plays
3. Comprehensive Database Dictionary
This section details the technical role, SQL types, and column properties of each key table in the database:
3.1. Table clients (Organizations)
Represents the corporate organizations subscribing to Alta Voce services (e.g. contact centers).
| Column Name | SQL Type | Nullable | Key | Functional Description |
|---|---|---|---|---|
id | BigInt | No | PK | Unique client organization ID. |
account_id | BigInt | Yes | Index / FK | Associated billing account ID. |
name | Varchar(255) | Yes | Index / FK | Legal entity / company name. |
first_name | Varchar(255) | Yes | - | Main contact person first name. |
last_name | Varchar(255) | Yes | - | Main contact person last name. |
email | Varchar(255) | No | Unique | Primary administrative email address. |
auto_invoice | TinyInt (Bool) | No | - | Flag indicating if automatic invoicing is enabled. |
email_billing | Varchar(255) | Yes | - | Dedicated billing invoice email. |
creation_date | Timestamp | No | - | Original historical creation date. |
config | Json | Yes | - | Global tenant settings, SLAs, and security configurations. |
address_id | BigInt | Yes | Index / FK | Associated physical address ID. |
vat_number | Varchar(255) | Yes | Index / FK | Intracommunity VAT registration number. |
created_at | Timestamp | Yes | - | Record creation timestamp. |
updated_at | Timestamp | Yes | - | Record last update timestamp. |
group_id | BigInt | Yes | Index / FK | Associated team/group ID. |
3.2. Table groups (Teams / Departments)
Under a client account, users are categorized into logical teams or business departments.
| Column Name | SQL Type | Nullable | Key | Functional Description |
|---|---|---|---|---|
id | BigInt | No | PK | Unique group department ID. |
name | Varchar(255) | No | - | Department/Team label name. |
client_id | BigInt | No | Index / FK | Associated tenant client account ID (clients.id). |
creation_date | Timestamp | No | - | Original creation timestamp. |
created_at | Timestamp | Yes | - | Record creation timestamp. |
updated_at | Timestamp | Yes | - | Record last update timestamp. |
3.3. Table users (Agents and Supervisors)
Contains credentials, session statuses, and configuration parameters of final users.
| Column Name | SQL Type | Nullable | Key | Functional Description |
|---|---|---|---|---|
id | BigInt | No | PK | Unique system user ID. |
vmo_user_id | Varchar(255) | Yes | Index / FK | Client desktop application generated secure UUID. |
name | Varchar(255) | Yes | Index / FK | Current active Windows username of the agent. |
first_update | Datetime | Yes | - | Timestamp of the first signal received. |
last_update | Datetime | Yes | - | Timestamp of the last signal received. |
transfo_applied_at | Datetime | Yes | - | Voice transformation application timestamp. |
transfo_applied_id | Int | Yes | - | Applied transformation algorithm ID. |
country_code | Varchar(10) | Yes | - | Country code (e.g. FR, US). |
machine_id_last | BigInt | Yes | Index / FK | Last known physical machine ID for this user. |
audiostream1_id | BigInt | Yes | Index / FK | Active real-time audio stream ID (audiostreams.id). |
status | Varchar(50) | Yes | Index / FK | Current operational or technical status. |
ui_locked | TinyInt (Bool) | No | - | True if the client user interface is administrative locked. |
timezone | Varchar(50) | Yes | - | Timezone configuration. |
config | Json | Yes | - | JSON configuration payload. |
metadata | Json | Yes | - | Additional JSON metadata parameters. |
abtest_id | BigInt | Yes | Index / FK | Current A/B Testing campaign ID. |
last_params_tuning | Datetime | Yes | - | Date of the last algorithmic parameter tuning. |
group_id | BigInt | Yes | Index / FK | Associated team department ID (groups.id). |
created_at | Timestamp | Yes | - | Record creation timestamp. |
updated_at | Timestamp | Yes | - | Record last update timestamp. |
3.4. Table machines (Workstations inventory)
Stores physical computers and hosts that have run and registered an Alta Call instance.
| Column Name | SQL Type | Nullable | Key | Functional Description |
|---|---|---|---|---|
id | BigInt | No | PK | Unique machine record ID. |
vmo_machine_id | Varchar(255) | No | Index / FK | Hardware calculated unique machine UUID. |
web_ip_address | Varchar(15) | Yes | - | Public Web IP address. |
local_ip_address | Varchar(15) | Yes | - | Workplace local IP address. |
first_update | Datetime | Yes | - | First signal or update timestamp. |
last_update | Datetime | Yes | - | Last telemetry signal timestamp. |
country_code | Varchar(4) | Yes | Index / FK | Country code (e.g. FR, US). |
city | Varchar(255) | Yes | - | Associated city. |
locked | TinyInt (Bool) | Yes | - | Administrative lock status (1 = locked). |
os | Varchar(255) | Yes | - | Operating system label. |
os_version | Varchar(255) | Yes | - | Operating system version. |
cpu_model | Varchar(255) | Yes | - | Hardware physical CPU processor model. |
cpu | Double(8,2) | Yes | - | Process specific CPU consumption. |
cpu_machine | Double(8,2) | Yes | - | Global machine CPU consumption. |
memory | Int | Yes | - | Available or consumed Random Access Memory (RAM). |
nbrunningproc | Int | Yes | - | Number of Alta Call processes currently executing. |
refreshdevicelistnbcalls | Int | Yes | - | Number of device manager list refreshes. |
process_id_last | BigInt | Yes | Index / FK | Last active Alta Call process UUID. |
session_id_active | Varchar(255) | Yes | - | Active Windows session ID. |
audiostream1_id | BigInt | Yes | Index / FK | Primary open audio stream ID. |
status | Int | Yes | Index / FK | Technical operational status (1 = active, 0 = issue). |
config | Json | Yes | - | JSON configuration payload. |
hostname | Varchar(255) | Yes | Index / FK | Network hostname (computer name). |
group_id | BigInt | No | Index / FK | Parent team department ID (groups.id). |
license_id | BigInt | Yes | Index / FK | Assigned license ID. |
created_at | Timestamp | Yes | - | Record creation timestamp. |
updated_at | Timestamp | Yes | - | Record last update timestamp. |
3.5. Table licenses (Authentication Keys)
Stores client access tokens validating workstation connection to the backend.
| Column Name | SQL Type | Nullable | Key | Functional Description |
|---|---|---|---|---|
id | BigInt | No | PK | Unique identifier (Primary Key). |
license_id | Varchar(36) | No | Unique | Unique license key ID. |
licenses_key | Varchar(36) | No | Unique | MD5/UUID key validated during client handshake. |
valid | TinyInt (Bool) | No | - | Subscription validity flag (1 = valid, 0 = revoked). |
user | Varchar(255) | Yes | - | Associated agent name (if dedicated key). |
fancyname | Varchar(255) | Yes | - | Convivial tag label for support desk search. |
added_on | Timestamp | No | - | Key provisioning date. |
group_id | BigInt | No | Index / FK | Associated team department ID (groups.id). |
account_id | BigInt | Yes | Index / FK | Associated billing account ID. |
client_id | BigInt | Yes | Index / FK | Associated client organization ID. |
created_at | Timestamp | Yes | - | Record creation timestamp. |
updated_at | Timestamp | Yes | - | Record last update timestamp. |
3.6. Table telemetries (Raw Diagnostic Reports)
Stores raw and filtered telemetry reports received from client instances.
| Column Name | SQL Type | Nullable | Key | Functional Description |
|---|---|---|---|---|
id | BigInt | No | PK | Sequential unique telemetry record ID. |
appname | Varchar(255) | Yes | - | Client software name (e.g., alta-call). |
version | Varchar(255) | Yes | - | Active software version at submission time. |
process_id | Varchar(36) | Yes | Index / FK | Emitting desktop process UUID. |
date | Datetime | Yes | Index / FK | Precise diagnostic packet collection timestamp. |
cp_nbrunningproc | Int | Yes | - | Number of Alta Call processes in active Windows session. |
payload | LongText (JSON) | No | - | Cleaned telemetry JSON fields (see Telemetry docs). |
payload_original | Json | Yes | - | Full backup copy of the raw JSON payload before optimization. |
client_id | BigInt | Yes | Index / FK | Tenant organization ID (clients.id). |
user_id | BigInt | Yes | Index / FK | Caller agent ID (users.id). |
first_for_date | TinyInt (Bool) | Yes | - | Flag indicating first telemetry packet received for this date. |
last_for_date | TinyInt (Bool) | Yes | - | Flag indicating last telemetry packet received for this date. |
created_at | Timestamp | Yes | - | Record insertion timestamp. |
updated_at | Timestamp | Yes | - | Record last update timestamp. |
3.7. Table users_summaries (Daily BI Consolidated Reports)
Calculated daily summaries used for Business Intelligence and invoicing reports.
| Column Name | SQL Type | Nullable | Key | Functional Description |
|---|---|---|---|---|
id | BigInt | No | PK | Sequential unique summary ID. |
user_vid | Varchar(255) | Yes | - | Associated agent device view ID. |
user_id | BigInt | No | Index / FK | Agent user ID (users.id). |
process_id | BigInt | Yes | Index / FK | Process ID from telemetries. |
version | Varchar(255) | Yes | - | Active client software version. |
process_first_update | Datetime | Yes | - | First update timestamp for the process. |
nb_telemetries | Smallint | Yes | - | Quantity of raw telemetry payloads received on this day. |
session_is_active | TinyInt (Bool) | Yes | - | Whether the session was active during consolidation. |
session_is_locked | TinyInt (Bool) | Yes | - | Whether the session was locked during consolidation. |
nbrunningprocs_mean | Double(8,2) | Yes | - | Mean number of running processes on the machine. |
is_up | TinyInt (Bool) | Yes | - | Heartbeat is-up consolidation status flag. |
date | Date | No | Index / FK | Calendar day tracked by this consolidation. |
transfo_id | BigInt | Yes | Index / FK | Applied transformation ID (transfos.id). |
transfo_mode | Varchar(40) | Yes | - | Applied speech enhancement transformation mode (SMA, VMO, STP). |
transfo_params | Varchar(255) | Yes | - | JSON serialized parameters of applied transformation. |
audio_params | Text | Yes | - | JSON serialized audio settings. |
time_start | Datetime | Yes | - | Stream active period start time. |
time_end | Datetime | Yes | - | Stream active period end time. |
duration | Double(8,2) | Yes | - | Cumulative voice conversation talking time (seconds). |
abtest_id | BigInt | Yes | Index / FK | Campaign test ID if user is enrolled in AB Test. |
abtest_label_id | BigInt | Yes | Index / FK | Campaign test label group ID if user is enrolled. |
device_capture_name | Varchar(255) | Yes | - | Active input microphone device name (e.g. Jabra Headset). |
device_playback_name | Varchar(255) | Yes | - | Active playback speaker/headphones device name. |
device_capture_id | BigInt | Yes | Index / FK | ID of capture device directory. |
device_playback_id | BigInt | Yes | Index / FK | ID of playback device directory. |
virtdev_out_appname | Varchar(255) | Yes | - | Hooked communications application (Zoiper, Teams, Genesys). |
audio_states | Varchar(1024) | Yes | - | List of audio state changes recorded. |
audio_state | Varchar(3) | Yes | - | Last audio state (RUN, STP, LOD, FAI, CRA). |
audio_features | Text | Yes | - | JSON features of audio quality. |
stat_f0_median | Double(8,2) | Yes | - | Median vocal fundamental frequency in Hz (Pitch). |
stat_f0_iqr | Double(8,2) | Yes | - | Interquartile range of vocal fundamental frequency. |
stat_inputvoiceddb_median | Double(8,2) | Yes | - | Median input voice power in decibels (dB). |
stat_inputunvoicedlowdb_median | Double(8,2) | Yes | - | Median input voice power for low unvoiced segments (dB). |
created_at | Timestamp | Yes | - | Record creation timestamp. |
updated_at | Timestamp | Yes | - | Record last update timestamp. |
3.8. Table machines_issues (Incident Records Log)
Automated diagnostics registry tracking workstations hardware and audio failures. Resolved issues are deleted by the background cleanups.
| Column Name | SQL Type | Nullable | Key | Functional Description |
|---|---|---|---|---|
id | BigInt | No | PK | Unique incident record ID. |
machine_id | BigInt | No | Index / FK | Associated physical computer ID (machines.id). |
first_update | Datetime | Yes | - | Incident discovery opening timestamp. |
last_update | Datetime | No | - | Latest anomaly packet timestamp. |
issue_code | Varchar(32) | No | - | Technical anomaly label code (e.g., HIGH_LATENCY). |
var1 | Varchar(255) | Yes | - | Optional auxiliary string diagnostic parameter. |
created_at | Timestamp | Yes | - | Creation date. |
updated_at | Timestamp | Yes | - | Last modification date. |
3.9. Table audiodevices (Hardware Specifications Directory)
Directory listing all peripheral models and physical headsets detected on hosts.
| Column Name | SQL Type | Nullable | Key | Functional Description |
|---|---|---|---|---|
id | BigInt | No | PK | Device directory entry ID. |
name | Varchar(255) | No | - | Exact hardware driver peripheral name (e.g. Jabra BIZ 2400 II). |
type | Varchar(24) | Yes | - | Device category: capture (microphone/input) or playback (headphones/speakers/output). |
ins | Int | No | - | Number of input channels on the device (microphone inputs). |
outs | Int | No | - | Number of output channels on the device (speaker outputs). |
descr_json | Json | Yes | - | Extended hardware descriptor as JSON: supported audio APIs (WASAPI, DirectSound), sample rates, channel layout, and driver metadata. |
md5 | Varchar(32) | No | Index / FK | MD5 hash of the device name used as a deduplication key to avoid duplicate entries for the same physical hardware model. |
created_at | Timestamp | Yes | - | Record creation timestamp. |
updated_at | Timestamp | Yes | - | Record last update timestamp. |
3.10. Table audiostreams (Active Pipeline Streams)
Represents the active voice transformations and diagnostic variables of streams.
| Column Name | SQL Type | Nullable | Key | Functional Description |
|---|---|---|---|---|
id | BigInt | No | PK | Unique stream instance ID. |
last_update | Datetime | No | Index / FK | Timestamp of the last received telemetry diagnostic for this stream. |
uptime | Int | Yes | - | Cumulative uptime of the audio stream in seconds since last start. |
transfo_id | BigInt | Yes | Index / FK | Active voice transformation preset ID (transfos.id). |
transfo_mode | Varchar(40) | Yes | - | Active transformation mode: SMA (Smile), VMO (Voice), STP (Stopped), or MANUAL. |
full_latency | Double(8,2) | Yes | - | Total round-trip audio processing latency in milliseconds (capture → transform → playback). |
voice_level | Double(8,2) | Yes | - | Real-time input voice power level in decibels (dB). |
noise_level | Double(8,2) | Yes | - | Real-time background noise floor level in decibels (dB). |
proccomptimeframe_mean | Double(8,2) | Yes | - | Mean processing computation time per audio frame (milliseconds) — measures DSP processing load. |
proccomptimeframe_max | Double(8,2) | Yes | - | Maximum observed processing computation time per audio frame (milliseconds). |
ptcomptimeframe_mean | Double(8,2) | Yes | - | Mean pitch transformation computation time per frame (milliseconds). |
ptcomptimeframe_max | Double(8,2) | Yes | - | Maximum pitch transformation computation time per frame (milliseconds). |
framesize_max | Int | Yes | - | Maximum audio buffer frame size in samples observed during the stream session. |
backend_xruns | Int | Yes | - | Number of audio buffer underruns/overruns at the WASAPI backend level — indicates audio dropouts. |
vmo_xruns | Int | Yes | - | Number of buffer xruns at the Alta Call voice processing engine level. |
catchups | Int | Yes | - | Number of timing catchup events: occurs when the processing engine falls behind real-time and must skip frames to re-sync. |
device_capture_id | BigInt | Yes | Index / FK | Active microphone/input device ID (audiodevices.id). |
device_playback_id | BigInt | Yes | Index / FK | Active headphones/speaker output device ID (audiodevices.id). |
fs | Int | Yes | - | Audio sample rate in Hz for this stream (e.g. 44100, 48000). |
virtdev_out_appname_lastupdate | Datetime | Yes | - | Timestamp of the last detection of the connected softphone/communications application. |
virtdev_out_appname | Varchar(255) | Yes | - | Name of the softphone or communications application currently connected to Alta Call's virtual audio output (e.g. Zoiper5, Teams, Genesys). |
created_at | Timestamp | Yes | - | Record creation timestamp. |
updated_at | Timestamp | Yes | - | Record last update timestamp. |
3.11. Auxiliary, Utility and Logging Tables
Outside of the primary telemetry and real-time audio pipeline streams, the MySQL database maintains several secondary tables dedicated to invoicing, security access logs, A/B Testing campaigns, and support telemetry logs.
Category A: Invoicing, Tariffs, and Consumption Logs
invoices: Register of generated monthly PDF client invoices, tracking payment statuses, dates, and amounts.pricingsandpricing_clients: Billing matrix tiers and custom pricing associations per client (billing cost calculated per second of transformed voice call).daily_usagesandmonthly_usages: Consolidated transformed voice seconds and network bandwidth consumption pre-calculated daily and monthly per client.accounts: Gandi or Stripe billing profiles bound to tenant subscriptions.addresses: Physical street addresses linked to corporate client profiles.
Category B: A/B Testing Infrastructure and Settings
transfos: Available voice transformation algorithms and base configuration presets (e.g. SMA Smile preset configurations).abtest_transfos: Pivot table associating an A/B test campaign to target voice presets.labels: Skill tags (e.g. "Language - German", "Support Team") assignable to agents to narrow down targeted testing groups.user_labels: Pivot table mapping users (users) to their respective skill tags (labels).
Category C: Systems Diagnostics and Application Loggers
processes2: Live tracking registry of all running Alta Call client processes across workstations (used for concurrent multiple-instance checks).telemetry_incidents: Aggregate registry of critical anomalies triggering immediate email alert logs to administrators.altacall_log_entriesandaltacall_log_records: Core diagnostic debug trace files sent periodically by desktop clients when encountering exceptions or application failures.plugin_logs: Event registry sent by softphones integrations modules.events: System audit trail logs (e.g. "Audio pipeline started", "Microphone switched").user_request_logs: HTTP request logs journal, used to secure API backends and enforce rate limiting.
Category D: Audio Metrics and Quality BI
audio_data: Metadata associated with sound record files collected for analysis.recordingsandrecording_clients: Dynamic rules dictating when audio recordings should be enabled remotely for diagnostic purposes per client/group.machine_summariesanduser_daily_summaries: Daily calculated workstation and user KPIs enabling instant administration dashboard render speeds.metricsandperformance_metrics: Hardware diagnostic indicators (system latency, xruns count, process RAM).
Category E: Security Access, Versioning, and Notifications
access_attempts: Audit logs capturing login attempts to Laravel Filament dashboards (IP, credentials correctness) to secure against brute-force attacks.api_keys: Client access tokens used by third party developers to securely request Alta Voce APIs.impersonations: Administrative logs recording when an Alta Voce support user logs in as a tenant administrator.configs: Global Laravel system configuration settings (e.g. mandatory minimum software version).software_versions: Registry of published desktop versions detailing download links used by the auto-update services.outdated_machines: Temporary monitoring list tracking physical computers running obsolete desktop versions.notifications: User notifications dispatched to administrators.suggestions: Workstation agent user feedback or technical ticket requests submitted directly from the desktop client.
4. Physical Recommendations & Indexing (MySQL)
[!IMPORTANT] Strategic Indexing for Business Intelligence & Diagnostics To secure response times below 100ms inside the Filament Admin dashboard and Customer Workspace portal, the following indexes are strictly recommended in production:
Composite Index on
telemetries:CREATE INDEX idx_telemetries_user_date ON telemetries (user_id, date);
Why: Essential for rapid nightly consolidation of raw telemetry packets per caller agent.Composite Index on
users_summaries:CREATE INDEX idx_users_summaries_date_user ON users_summaries (date, user_id);
Why: Mandated to immediately load calling charts, duration graphs, and pitch statistics on Customer Client portals.Incidents lookup index on
machines_issues:CREATE UNIQUE INDEX idx_machines_issues_lookup ON machines_issues (machine_id, issue_code);
Why: Resolves immediate hardware health check diagnostics without scanning the complete incidents registry.