klg-asutk-app/backend/app/db/update_helicopters_data.sql
Yuriy 0150aba4f5 Consolidation: KLG ASUTK + PAPA integration
- 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>
2026-02-08 17:18:31 +03:00

111 lines
4.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Скрипт для обновления данных вертолетов, чтобы заполнить все поля
DO $$
DECLARE
-- ID операторов
aeroflot_id TEXT;
s7_id TEXT;
ural_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;
-- Если операторы не найдены, используем первый доступный оператор
IF aeroflot_id IS NULL THEN
SELECT id INTO aeroflot_id FROM organizations WHERE kind = 'operator' LIMIT 1;
END IF;
IF s7_id IS NULL THEN
SELECT id INTO s7_id FROM organizations WHERE kind = 'operator' LIMIT 1;
END IF;
IF ural_id IS NULL THEN
SELECT id INTO ural_id FROM organizations WHERE kind = 'operator' LIMIT 1;
END IF;
-- Обновляем вертолеты Ми-8
UPDATE aircraft
SET
operator_id = COALESCE(operator_id, aeroflot_id),
serial_number = COALESCE(serial_number, '08-001'),
total_time = COALESCE(total_time, 15000.0),
total_cycles = COALESCE(total_cycles, 8500),
current_status = COALESCE(current_status, 'in_service')
WHERE registration_number = 'RA-12345';
UPDATE aircraft
SET
operator_id = COALESCE(operator_id, s7_id),
serial_number = COALESCE(serial_number, '08-002'),
total_time = COALESCE(total_time, 12000.5),
total_cycles = COALESCE(total_cycles, 7200),
current_status = COALESCE(current_status, 'in_service')
WHERE registration_number = 'RA-12346';
UPDATE aircraft
SET
operator_id = COALESCE(operator_id, ural_id),
serial_number = COALESCE(serial_number, '08-003'),
total_time = COALESCE(total_time, 18000.0),
total_cycles = COALESCE(total_cycles, 10200),
current_status = COALESCE(current_status, 'maintenance')
WHERE registration_number = 'RA-12347';
UPDATE aircraft
SET
operator_id = COALESCE(operator_id, aeroflot_id),
serial_number = COALESCE(serial_number, '08-004'),
total_time = COALESCE(total_time, 14000.0),
total_cycles = COALESCE(total_cycles, 8000),
current_status = COALESCE(current_status, 'in_service')
WHERE registration_number = 'RA-12348';
UPDATE aircraft
SET
operator_id = COALESCE(operator_id, s7_id),
serial_number = COALESCE(serial_number, '08-005'),
total_time = COALESCE(total_time, 16000.5),
total_cycles = COALESCE(total_cycles, 9200),
current_status = COALESCE(current_status, 'in_service')
WHERE registration_number = 'RA-12349';
-- Обновляем вертолеты Ми-26
UPDATE aircraft
SET
operator_id = COALESCE(operator_id, aeroflot_id),
serial_number = COALESCE(serial_number, '26-001'),
total_time = COALESCE(total_time, 20000.0),
total_cycles = COALESCE(total_cycles, 5500),
current_status = COALESCE(current_status, 'in_service')
WHERE registration_number = 'RA-12450';
-- Обновляем все остальные вертолеты, у которых отсутствуют данные
UPDATE aircraft a
SET
operator_id = COALESCE(a.operator_id, (SELECT id FROM organizations WHERE kind = 'operator' LIMIT 1)),
serial_number = COALESCE(a.serial_number, 'SN-' || SUBSTRING(a.registration_number, 4)),
total_time = COALESCE(a.total_time, 10000.0),
total_cycles = COALESCE(a.total_cycles, 5000),
current_status = COALESCE(a.current_status, 'in_service')
WHERE EXISTS (
SELECT 1 FROM aircraft_types at
WHERE at.id = a.aircraft_type_id
AND at.manufacturer IN ('Миль', 'Камов', 'Казанский вертолетный завод')
)
AND (a.operator_id IS NULL OR a.serial_number IS NULL OR a.total_time IS NULL OR a.total_cycles IS NULL);
END $$;
-- Проверка результата
SELECT
a.registration_number,
o.name as operator_name,
a.serial_number,
a.total_time,
a.total_cycles,
a.current_status
FROM aircraft a
LEFT JOIN organizations o ON o.id = a.operator_id
WHERE a.registration_number IN ('RA-12345', 'RA-12346', 'RA-12347', 'RA-12348', 'RA-12349', 'RA-12450')
ORDER BY a.registration_number;