- Unify API: lib/api.ts uses /api/v1, inbox uses /api/inbox (rewrites) - Remove localhost refs: openapi, inbox page - Add rewrites: /api/inbox|tmc -> inbox-server, /api/v1 -> FastAPI - Add stub routes: knowledge/insights, recommendations, search, log-error - Transfer from PAPA: prompts (inspection, tmc), scripts, supabase, data/tmc-requests - Fix inbox-server: ORDER BY created_at, package.json - Remove redundant app/api/inbox/files route (rewrites handle it) - knowledge/ in gitignore (large PDFs) Co-authored-by: Cursor <cursoragent@cursor.com>
123 lines
8.2 KiB
SQL
123 lines
8.2 KiB
SQL
-- Скрипт для добавления вертолетов в реестр Российской Федерации
|
||
|
||
DO $$
|
||
DECLARE
|
||
-- ID операторов
|
||
aeroflot_id TEXT;
|
||
s7_id TEXT;
|
||
ural_id TEXT;
|
||
rosaviation_id TEXT;
|
||
|
||
-- ID типов вертолетов
|
||
mi8_id TEXT;
|
||
mi26_id TEXT;
|
||
ka32_id TEXT;
|
||
ansat_id TEXT;
|
||
mi171_id TEXT;
|
||
ka226_id TEXT;
|
||
BEGIN
|
||
-- Получаем ID операторов
|
||
SELECT id INTO aeroflot_id FROM organizations WHERE name = 'Аэрофлот - Российские авиалинии' AND kind = 'operator' LIMIT 1;
|
||
SELECT id INTO s7_id FROM organizations WHERE name = 'S7 Airlines' AND kind = 'operator' LIMIT 1;
|
||
SELECT id INTO ural_id FROM organizations WHERE name = 'Уральские авиалинии' AND kind = 'operator' LIMIT 1;
|
||
SELECT id INTO rosaviation_id FROM organizations WHERE name = 'Федеральное агентство воздушного транспорта (Росавиация)' AND kind = 'authority' LIMIT 1;
|
||
|
||
-- Добавляем типы вертолетов, если их еще нет
|
||
INSERT INTO aircraft_types (id, manufacturer, model, created_at, updated_at)
|
||
VALUES
|
||
(gen_random_uuid()::text, 'Миль', 'Ми-8', NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'Миль', 'Ми-26', NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'Миль', 'Ми-171', NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'Камов', 'Ка-32', NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'Камов', 'Ка-226', NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'Казанский вертолетный завод', 'Ансат', NOW(), NOW())
|
||
ON CONFLICT DO NOTHING;
|
||
|
||
-- Получаем ID типов вертолетов
|
||
SELECT id INTO mi8_id FROM aircraft_types WHERE manufacturer = 'Миль' AND model = 'Ми-8' LIMIT 1;
|
||
SELECT id INTO mi26_id FROM aircraft_types WHERE manufacturer = 'Миль' AND model = 'Ми-26' LIMIT 1;
|
||
SELECT id INTO mi171_id FROM aircraft_types WHERE manufacturer = 'Миль' AND model = 'Ми-171' LIMIT 1;
|
||
SELECT id INTO ka32_id FROM aircraft_types WHERE manufacturer = 'Камов' AND model = 'Ка-32' LIMIT 1;
|
||
SELECT id INTO ka226_id FROM aircraft_types WHERE manufacturer = 'Камов' AND model = 'Ка-226' LIMIT 1;
|
||
SELECT id INTO ansat_id FROM aircraft_types WHERE manufacturer = 'Казанский вертолетный завод' AND model = 'Ансат' LIMIT 1;
|
||
|
||
-- Добавляем вертолеты Ми-8
|
||
IF mi8_id IS NOT NULL THEN
|
||
INSERT INTO aircraft (id, registration_number, aircraft_type_id, operator_id, serial_number, current_status, total_time, total_cycles, created_at, updated_at)
|
||
VALUES
|
||
(gen_random_uuid()::text, 'RA-12345', mi8_id, COALESCE(aeroflot_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '08-001', 'in_service', 15000.0, 8500, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12346', mi8_id, COALESCE(s7_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '08-002', 'in_service', 12000.5, 7200, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12347', mi8_id, COALESCE(ural_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '08-003', 'maintenance', 18000.0, 10200, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12348', mi8_id, COALESCE(aeroflot_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '08-004', 'in_service', 14000.0, 8000, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12349', mi8_id, COALESCE(s7_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '08-005', 'in_service', 16000.5, 9200, NOW(), NOW())
|
||
ON CONFLICT (registration_number) DO NOTHING;
|
||
END IF;
|
||
|
||
-- Добавляем вертолеты Ми-26
|
||
IF mi26_id IS NOT NULL THEN
|
||
INSERT INTO aircraft (id, registration_number, aircraft_type_id, operator_id, serial_number, current_status, total_time, total_cycles, created_at, updated_at)
|
||
VALUES
|
||
(gen_random_uuid()::text, 'RA-12450', mi26_id, COALESCE(aeroflot_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '26-001', 'in_service', 20000.0, 5500, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12451', mi26_id, COALESCE(ural_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '26-002', 'in_service', 18500.5, 5100, NOW(), NOW())
|
||
ON CONFLICT (registration_number) DO NOTHING;
|
||
END IF;
|
||
|
||
-- Добавляем вертолеты Ми-171
|
||
IF mi171_id IS NOT NULL THEN
|
||
INSERT INTO aircraft (id, registration_number, aircraft_type_id, operator_id, serial_number, current_status, total_time, total_cycles, created_at, updated_at)
|
||
VALUES
|
||
(gen_random_uuid()::text, 'RA-12550', mi171_id, COALESCE(aeroflot_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '171-001', 'in_service', 8000.0, 4500, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12551', mi171_id, COALESCE(s7_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '171-002', 'in_service', 7500.5, 4200, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12552', mi171_id, COALESCE(ural_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '171-003', 'in_service', 9200.0, 5100, NOW(), NOW())
|
||
ON CONFLICT (registration_number) DO NOTHING;
|
||
END IF;
|
||
|
||
-- Добавляем вертолеты Ка-32
|
||
IF ka32_id IS NOT NULL THEN
|
||
INSERT INTO aircraft (id, registration_number, aircraft_type_id, operator_id, serial_number, current_status, total_time, total_cycles, created_at, updated_at)
|
||
VALUES
|
||
(gen_random_uuid()::text, 'RA-12650', ka32_id, COALESCE(aeroflot_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '32-001', 'in_service', 11000.0, 6500, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12651', ka32_id, COALESCE(s7_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '32-002', 'maintenance', 13000.5, 7500, NOW(), NOW())
|
||
ON CONFLICT (registration_number) DO NOTHING;
|
||
END IF;
|
||
|
||
-- Добавляем вертолеты Ка-226
|
||
IF ka226_id IS NOT NULL THEN
|
||
INSERT INTO aircraft (id, registration_number, aircraft_type_id, operator_id, serial_number, current_status, total_time, total_cycles, created_at, updated_at)
|
||
VALUES
|
||
(gen_random_uuid()::text, 'RA-12750', ka226_id, COALESCE(aeroflot_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '226-001', 'in_service', 5000.0, 3000, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12751', ka226_id, COALESCE(ural_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), '226-002', 'in_service', 4500.5, 2800, NOW(), NOW())
|
||
ON CONFLICT (registration_number) DO NOTHING;
|
||
END IF;
|
||
|
||
-- Добавляем вертолеты Ансат
|
||
IF ansat_id IS NOT NULL THEN
|
||
INSERT INTO aircraft (id, registration_number, aircraft_type_id, operator_id, serial_number, current_status, total_time, total_cycles, created_at, updated_at)
|
||
VALUES
|
||
(gen_random_uuid()::text, 'RA-12850', ansat_id, COALESCE(aeroflot_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), 'ANS-001', 'in_service', 3000.0, 2000, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12851', ansat_id, COALESCE(s7_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), 'ANS-002', 'in_service', 2800.5, 1900, NOW(), NOW()),
|
||
(gen_random_uuid()::text, 'RA-12852', ansat_id, COALESCE(ural_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)), 'ANS-003', 'in_service', 3200.0, 2100, NOW(), NOW())
|
||
ON CONFLICT (registration_number) DO NOTHING;
|
||
END IF;
|
||
|
||
END $$;
|
||
|
||
-- Проверка результата
|
||
SELECT
|
||
at.manufacturer || ' ' || at.model as helicopter_type,
|
||
COUNT(a.id) as count,
|
||
STRING_AGG(a.registration_number, ', ' ORDER BY a.registration_number) as registration_numbers
|
||
FROM aircraft_types at
|
||
JOIN aircraft a ON a.aircraft_type_id = at.id
|
||
WHERE at.manufacturer IN ('Миль', 'Камов', 'Казанский вертолетный завод')
|
||
GROUP BY at.id, at.manufacturer, at.model
|
||
ORDER BY at.manufacturer, at.model;
|
||
|
||
-- Общая статистика
|
||
SELECT
|
||
'Всего вертолетов в реестре' as info,
|
||
COUNT(*) as count
|
||
FROM aircraft a
|
||
JOIN aircraft_types at ON a.aircraft_type_id = at.id
|
||
WHERE at.manufacturer IN ('Миль', 'Камов', 'Казанский вертолетный завод');
|