Wykrywanie imienia i nazwiska kelnera oraz info czy sesja dostala sie do aplikacji

This commit is contained in:
2026-05-28 20:46:35 +02:00
parent a72b5afcc7
commit d374723fd6
12 changed files with 467 additions and 30 deletions

View File

@@ -133,6 +133,7 @@ try {
$sqlRecentOpens = "
SELECT
created_at,
session_id,
table_id,
zone,
device_type,
@@ -147,6 +148,45 @@ try {
$stmtRecentOpens->execute($baseParams);
$recentOpens = $stmtRecentOpens ? $stmtRecentOpens->fetchAll() : [];
$sessionOutcomes = [];
$sessionIds = [];
foreach ($recentOpens as $openRow) {
$sid = trim((string) ($openRow['session_id'] ?? ''));
if ($sid !== '') {
$sessionIds[$sid] = true;
}
}
$sessionIds = array_keys($sessionIds);
if (!empty($sessionIds)) {
$placeholders = implode(',', array_fill(0, count($sessionIds), '?'));
$sqlSessionFlags = "
SELECT
session_id,
MAX(CASE WHEN event_name = 'session_start' THEN 1 ELSE 0 END) AS reached_app,
MAX(CASE WHEN event_name = 'view_menu' THEN 1 ELSE 0 END) AS entered_menu
FROM analytics_events
WHERE session_id IN ({$placeholders})
GROUP BY session_id
";
$stmtSessionFlags = $pdo->prepare($sqlSessionFlags);
$stmtSessionFlags->execute($sessionIds);
while ($flagRow = $stmtSessionFlags->fetch()) {
$sessionOutcomes[$flagRow['session_id']] = [
'reached_app' => (int) $flagRow['reached_app'],
'entered_menu' => (int) $flagRow['entered_menu'],
];
}
}
foreach ($recentOpens as &$openRow) {
$sid = trim((string) ($openRow['session_id'] ?? ''));
$flags = $sessionOutcomes[$sid] ?? ['reached_app' => 0, 'entered_menu' => 0];
$openRow['reached_app'] = $flags['reached_app'];
$openRow['entered_menu'] = $flags['entered_menu'];
}
unset($openRow);
$sqlQueueSummary = "
SELECT
COUNT(*) AS total_actions,
@@ -171,6 +211,8 @@ try {
table_id,
message_type,
message_text,
otwierajacy_imie,
otwierajacy_nazwisko,
api_sent,
status_kds,
created_at