- migration 041: таблицы workstations, agent_pair_codes, workstation_devices - routes/workstations: CRUD рабочих мест, генерация 6-значного кода, CRUD устройств - POST /api/agent/pair: сопряжение агента по коду → JWT токен - agent-ws.ts: WebSocket /ws/agent для постоянного соединения агентов, heartbeat 30s, онлайн/оффлайн статус в БД Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
1.7 KiB
SQL
34 lines
1.7 KiB
SQL
-- Рабочие места (агенты Windows)
|
|
CREATE TABLE IF NOT EXISTS workstations (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
|
|
agent_id VARCHAR(64) UNIQUE, -- UUID генерируемый агентом
|
|
name VARCHAR(100) NOT NULL, -- «Ресепшн 1», «Бар»
|
|
hostname VARCHAR(255), -- имя Windows-компьютера
|
|
ip_address INET,
|
|
is_online BOOLEAN NOT NULL DEFAULT false,
|
|
last_seen TIMESTAMPTZ,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- Коды сопряжения (6 цифр, TTL 10 минут)
|
|
CREATE TABLE IF NOT EXISTS agent_pair_codes (
|
|
code CHAR(6) PRIMARY KEY,
|
|
workstation_id UUID NOT NULL REFERENCES workstations(id) ON DELETE CASCADE,
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
used BOOLEAN NOT NULL DEFAULT false
|
|
);
|
|
|
|
-- Устройства привязанные к рабочему месту
|
|
CREATE TABLE IF NOT EXISTS workstation_devices (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
workstation_id UUID NOT NULL REFERENCES workstations(id) ON DELETE CASCADE,
|
|
type VARCHAR(20) NOT NULL CHECK (type IN ('kkt', 'printer')),
|
|
name VARCHAR(100) NOT NULL,
|
|
connection VARCHAR(20) NOT NULL CHECK (connection IN ('usb', 'network')),
|
|
network_host VARCHAR(255),
|
|
network_port INTEGER,
|
|
purpose VARCHAR(30) CHECK (purpose IN ('fiscal', 'kitchen', 'bar', 'receipt', 'other')),
|
|
config JSONB NOT NULL DEFAULT '{}'
|
|
);
|