From da1c619a9cc8e091bfbab65319130a4e2b7d8b1d Mon Sep 17 00:00:00 2001 From: lekss361 Date: Sun, 17 May 2026 13:36:34 +0300 Subject: [PATCH] =?UTF-8?q?fix(sf-04b):=20bulk=20seed=20mappings=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B2=D1=81=D0=B5=D1=85=20=D0=96=D0=9A=20=D1=81?= =?UTF-8?q?=20=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=BD=D0=BE=D1=81=D1=82=D1=8C?= =?UTF-8?q?=D1=8E=20=D0=B2=20Objective?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Audit 2026-05-17 (extension PR #273): 13 high-confidence (sim > 0.85) auto-inserted, 25 medium-confidence (0.6-0.85) commented for manual review. 118 unmapped projects scanned via pg_trgm vs domrf_kn_objects EKB. Closes (epic part) #271 item 4 extension --- data/sql/104_seed_bulk_mappings.sql | 232 ++++++++++++++++++++++++++++ 1 file changed, 232 insertions(+) create mode 100644 data/sql/104_seed_bulk_mappings.sql diff --git a/data/sql/104_seed_bulk_mappings.sql b/data/sql/104_seed_bulk_mappings.sql new file mode 100644 index 00000000..cd4f122c --- /dev/null +++ b/data/sql/104_seed_bulk_mappings.sql @@ -0,0 +1,232 @@ +-- 104_seed_bulk_mappings.sql +-- Audit 2026-05-17 (extension of PR #273): bulk seed objective_complex_mapping +-- for ALL active ЖК in objective_corpus_room_month (last 12 months) without mapping. +-- +-- Context: +-- PR #273 (103_seed_prinzip_mappings.sql) covered only Малевич + Ньютон парк. +-- This audit found 118 additional unmapped project_names with activity in the +-- last 12 months. Prior fuzzy import had already populated ~108 rows; this file +-- adds 13 HIGH-confidence (sim > 0.85) auto-inserts + comments out 25 MEDIUM +-- (sim 0.6-0.85) candidates for manual review. +-- +-- Audit summary: +-- HIGH (sim > 0.85): 13 projects — auto-inserted below +-- MEDIUM (sim 0.6-0.85): ~25 projects — commented out, need review +-- LOW / orphan (sim < 0.6 or no match): ~80 projects — dropped (no domrf corpus found) +-- +-- UNIQUE constraint: (objective_complex_name, objective_group) +-- MV join key: objective_complex_mapping.objective_complex_name = objective_corpus_room_month.project_name +-- +-- After applying, run manually (post-deploy): +-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_layout_velocity; +-- See runbook: runbooks/Refresh_MV_Layout_Velocity.md +-- +-- Dependencies: objective_complex_mapping (exists), mv_layout_velocity (refresh separately) +-- Deploy: auto-applied by deploy.yml via _schema_migrations tracking. +-- Idempotent: ON CONFLICT (objective_complex_name, objective_group) DO NOTHING + +BEGIN; + +-- ============================================================================= +-- HIGH confidence (sim > 0.85) — auto-insert +-- ============================================================================= +INSERT INTO objective_complex_mapping + (objective_complex_name, objective_group, domrf_obj_id, + match_method, match_score, is_reviewed, note) +VALUES + -- 140 deals/12m. "Б-26" → domrf "Б.26" (СКМ Девелопмент). sim=1.000 + ('Б-26', 'Екатеринбург', 50754, 'fuzzy', 1.000, false, + 'Audit 2026-05-17: sim=1.0 to Б.26 (СКМ Девелопмент, Строящиеся)'), + + -- 102 deals/12m. "Астон.Сезоны" → domrf "Астон. Сезоны" (Астон). sim=1.000 + ('Астон.Сезоны', 'Екатеринбург', 58721, 'fuzzy', 1.000, false, + 'Audit 2026-05-17: sim=1.0 to Астон. Сезоны (Астон, Сданные)'), + + -- 100 deals/12m. "Премиум Кварталы Маяковка" → exact domrf match. sim=1.000 + ('Премиум Кварталы Маяковка', 'Екатеринбург', 57364, 'fuzzy', 1.000, false, + 'Audit 2026-05-17: sim=1.0 exact match (СЗ ДЕЛОВОЙ КВАРТАЛ ДЕВЕЛОПМЕНТ, Сданные)'), + + -- 51 deals/12m. "Дом на Библиотечной" → exact domrf match. sim=1.000 + ('Дом на Библиотечной', 'Екатеринбург', 58788, 'fuzzy', 1.000, false, + 'Audit 2026-05-17: sim=1.0 exact match (СТОРИНГ, Сданные)'), + + -- 43 deals/12m. "Даблхаус 1:1" → domrf "Даблхаус 1:1" (Астра). sim=1.000 + ('Даблхаус 1:1', 'Екатеринбург', 50428, 'fuzzy', 1.000, false, + 'Audit 2026-05-17: sim=1.0 to Даблхаус "1:1" (Астра, Сданные)'), + + -- 42 deals/12m. "Астон.Реформа" → domrf "Астон. Реформа" (Астон). sim=1.000 + ('Астон.Реформа', 'Екатеринбург', 58381, 'fuzzy', 1.000, false, + 'Audit 2026-05-17: sim=1.0 to "Астон. Реформа" (Астон, Сданные)'), + + -- 30 deals/12m. "Астон.Отрадный" → exact domrf match (Астон). sim=1.000 + ('Астон.Отрадный', 'Екатеринбург', 48570, 'fuzzy', 1.000, false, + 'Audit 2026-05-17: sim=1.0 exact match (Астон, Сданные)'), + + -- 22 deals/12m. "Космонавтов 11" → domrf "Космонавтов 11" (ПИК). sim=1.000 + -- NB: "9 Космонавтов" is a DIFFERENT project — NOT mapped here (LOW, wrong address) + ('Космонавтов 11', 'Екатеринбург', 44337, 'fuzzy', 1.000, false, + 'Audit 2026-05-17: sim=1.0 exact match (ПИК, Сданные). NB: "9 Космонавтов" is separate.'), + + -- 16 deals/12m. "Кварталы конструктивизма" → domrf "КВАРТАЛЫ КОНСТРУКТИВИЗМА" (КОРТРОС). sim=1.000 + ('Кварталы конструктивизма', 'Екатеринбург', 43430, 'fuzzy', 1.000, false, + 'Audit 2026-05-17: sim=1.0 case-insensitive match (КОРТРОС, Сданные)'), + + -- 14 deals/12m. "Квартал Сюжеты" → domrf "Квартал СЮЖЕТЫ" (Фортис Девелопмент). sim=1.000 + ('Квартал Сюжеты', 'Екатеринбург', 63631, 'fuzzy', 1.000, false, + 'Audit 2026-05-17: sim=1.0 case-insensitive match (Фортис Девелопмент, Сданные)'), + + -- 28 deals/12m. "Архитектон. Декабристов,20" → domrf ЖК "Архитектон.Декабристов 20". sim=0.897 + ('Архитектон. Декабристов,20', 'Екатеринбург', 41762, 'fuzzy', 0.897, false, + 'Audit 2026-05-17: sim=0.897 to ЖК "Архитектон.Декабристов 20" (Корпорация Маяк, Сданные)'), + + -- 115 deals/12m. "Хрустальные ключи" → domrf ЖК "Хрустальные ключи" (ЛСР). sim=0.857 + ('Хрустальные ключи', 'Екатеринбург', 17471, 'fuzzy', 0.857, false, + 'Audit 2026-05-17: sim=0.857 to ЖК "Хрустальные ключи" (ЛСР, Сданные)'), + + -- 128 deals/12m. "Большой каретный" → domrf ЖК "Большой каретный". sim=0.850 + ('Большой каретный', 'Екатеринбург', 45859, 'fuzzy', 0.850, false, + 'Audit 2026-05-17: sim=0.850 to ЖК "Большой каретный" (СЗ НИЖНЕИСЕТСКИЙ ПРУД, Сданные)') + +ON CONFLICT (objective_complex_name, objective_group) DO NOTHING; + +-- ============================================================================= +-- MEDIUM confidence (sim 0.6-0.85) — manual review required +-- Uncomment and verify each INSERT before applying to prod. +-- ============================================================================= + +-- 207 deals/12m. "Зеленая горка" → domrf ЖК "Зеленая горка" (СЗ ДИККИТ, Сданные). sim=0.824 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Зеленая горка', 'Екатеринбург', 59810, 'fuzzy', 0.824, false, 'sim=0.824 review: Зеленая горка (СЗ ДИККИТ)') ON CONFLICT DO NOTHING; + +-- 16 deals/12m. "Куйбышева 100" → domrf ЖК "Куйбышева 100" (СЗ ПРЕМЬЕРСТРОЙ, Сданные). sim=0.824 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Куйбышева 100', 'Екатеринбург', 47419, 'fuzzy', 0.824, false, 'sim=0.824 review: Куйбышева 100 (СЗ ПРЕМЬЕРСТРОЙ)') ON CONFLICT DO NOTHING; + +-- 71 deals/12m. "Белый парус" → domrf ЖК "Белый парус" (Астра, Сданные). sim=0.800 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Белый парус', 'Екатеринбург', 20814, 'fuzzy', 0.800, false, 'sim=0.800 review: Белый парус (Астра, Сданные)') ON CONFLICT DO NOTHING; + +-- 164 deals/12m. "Небосклоны" → domrf ЖК «Небосклоны» (Унистрой, Сданные). sim=0.786 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Небосклоны', 'Екатеринбург', 55308, 'fuzzy', 0.786, false, 'sim=0.786 review: Небосклоны (Унистрой, Сданные)') ON CONFLICT DO NOTHING; + +-- 99 deals/12m. "Огни Исети" → domrf ЖК "Огни Исети" (СЗ СК УРАЛКОМПЛЕКТ, Сданные). sim=0.786 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Огни Исети', 'Екатеринбург', 46431, 'fuzzy', 0.786, false, 'sim=0.786 review: Огни Исети (СЗ СК УРАЛКОМПЛЕКТ, Сданные)') ON CONFLICT DO NOTHING; + +-- 234 deals/12m. "Абрикос" → domrf ЖК Абрикос (Стройтэк, Сданные). sim=0.727 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Абрикос', 'Екатеринбург', 50239, 'fuzzy', 0.727, false, 'sim=0.727 review: Абрикос (Стройтэк, Сданные)') ON CONFLICT DO NOTHING; + +-- 33 deals/12m. "Estelle" → domrf ЖК Estelle (СЗ ИНВЕСТСТРОЙ, Сданные). sim=0.727 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Estelle', 'Екатеринбург', 53948, 'fuzzy', 0.727, false, 'sim=0.727 review: Estelle (СЗ ИНВЕСТСТРОЙ, Сданные)') ON CONFLICT DO NOTHING; + +-- 25 deals/12m. "Мирлеон" → domrf ЖК "Мирлеон" (Виктория, Сданные). sim=0.727 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Мирлеон', 'Екатеринбург', 62711, 'fuzzy', 0.727, false, 'sim=0.727 review: Мирлеон (Виктория, Сданные)') ON CONFLICT DO NOTHING; + +-- 318 deals/12m. "Первый" → domrf ЖК "ПЕРВЫЙ" (ИКАР, Сданные). sim=0.700 +-- CAUTION: 103_seed note said "Первый" belongs to ИКАР, not PRINZIP. Mapping is valid for +-- velocity purposes (not PRINZIP-specific). Verify obj_id 52307 is the right corpus. +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Первый', 'Екатеринбург', 52307, 'fuzzy', 0.700, false, 'sim=0.700 review: ЖК ПЕРВЫЙ (ИКАР, Сданные). Not PRINZIP — skipped in 103, valid here.') ON CONFLICT DO NOTHING; + +-- 107 deals/12m. "Мохито" → domrf ЖК Мохито (Стройтэк, Сданные). sim=0.700 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Мохито', 'Екатеринбург', 41887, 'fuzzy', 0.700, false, 'sim=0.700 review: Мохито (Стройтэк, Сданные)') ON CONFLICT DO NOTHING; + +-- 215 deals/12m. "на Ясной" → domrf "Дом на Ясной" (Практика, Сданные). sim=0.692 +-- CAUTION: short name "на Ясной" may collide. Verify project is the same as "Дом на Ясной". +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('на Ясной', 'Екатеринбург', 51568, 'fuzzy', 0.692, false, 'sim=0.692 review: Дом на Ясной (Практика, Сданные). Short name match, verify.') ON CONFLICT DO NOTHING; + +-- 109 deals/12m. "Изумрудный бор 2.0" → domrf ЖР Изумрудный Бор (УГМК-ЗАСТРОЙЩИК). sim=0.682 +-- NB: "Изумрудный бор" already mapped to obj_id 67678. "2.0" suffix → different phase/corp. +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Изумрудный бор 2.0', 'Екатеринбург', 45017, 'fuzzy', 0.682, false, 'sim=0.682 review: ЖР Изумрудный Бор (УГМК, Сданные). "2.0" suffix — different from mapped obj_id 67678.') ON CONFLICT DO NOTHING; + +-- 317 deals/12m. "СТАРТ" → domrf ЖК СТАРТ (ТЭН, Сданные). sim=0.667 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('СТАРТ', 'Екатеринбург', 53947, 'fuzzy', 0.667, false, 'sim=0.667 review: ЖК СТАРТ (ТЭН, Сданные)') ON CONFLICT DO NOTHING; + +-- 101 deals/12m. "Горки" → domrf ЖК "Горки" (СЗ ЖИЛСТРОЙ, Сданные). sim=0.667 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Горки', 'Екатеринбург', 45653, 'fuzzy', 0.667, false, 'sim=0.667 review: Горки (СЗ ЖИЛСТРОЙ, Сданные)') ON CONFLICT DO NOTHING; + +-- 78 deals/12m. "Милый дом (BAZA)" → domrf Дом "Милый дом" (BAZA Development, Сданные). sim=0.667 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Милый дом (BAZA)', 'Екатеринбург', 54751, 'fuzzy', 0.667, false, 'sim=0.667 review: Дом Милый дом (BAZA Development, Сданные)') ON CONFLICT DO NOTHING; + +-- 237 deals/12m. "Основинские кварталы" → domrf "Паркинг ЖК Основинские кварталы" (ТЭН). sim=0.656 +-- CAUTION: domrf match is a PARKING object, not residential. Verify correct obj_id manually. +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Основинские кварталы', 'Екатеринбург', 55182, 'fuzzy', 0.656, false, 'sim=0.656 CAUTION: domrf match is Паркинг object. Find correct residential obj_id.') ON CONFLICT DO NOTHING; + +-- 420 deals/12m. "Южные кварталы (Брусника)" → domrf "Южные кварталы" (Брусника, Строящиеся). sim=0.625 +-- Multiple Брусника Южные кварталы corpora found: 59867, 70970, 67220 (Строящиеся), 45857, etc. +-- Need to pick the primary active one. obj_id 59867 suggested (Строящиеся, latest). +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Южные кварталы (Брусника)', 'Екатеринбург', 59867, 'fuzzy', 0.625, false, 'sim=0.625 review: Юж.кварталы Брусника (Строящиеся). Multiple corpora — verify primary obj_id.') ON CONFLICT DO NOTHING; + +-- 51 deals/12m. "На Некрасова" → domrf "Квартал на Некрасова" (Брусника, Сданные). sim=0.600 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('На Некрасова', 'Екатеринбург', 40819, 'fuzzy', 0.600, false, 'sim=0.600 review: Квартал на Некрасова (Брусника, Сданные)') ON CONFLICT DO NOTHING; + +-- 182 deals/12m. "Уральский" → domrf "ЖК Уральский сад" (Страна Девелопмент, Строящиеся). sim=0.588 +-- CAUTION: short generic name "Уральский" — may not be "Уральский сад". Verify. +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Уральский', 'Екатеринбург', 65611, 'fuzzy', 0.588, false, 'sim=0.588 review: ЖК Уральский сад (Страна Девелопмент). Verify "Уральский" = "Уральский сад".') ON CONFLICT DO NOTHING; + +-- 154 deals/12m. "Екатерининский парк" → domrf "Концепт-проект Екатерининский парк" (ТЭН). sim=0.588 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Екатерининский парк', 'Екатеринбург', 47004, 'fuzzy', 0.588, false, 'sim=0.588 review: Концепт-проект Екатерининский парк (ТЭН, Сданные)') ON CONFLICT DO NOTHING; + +-- 97 deals/12m. "Башня Времени" → domrf ЖД "Башня Времени" (Фортис Девелопмент, Строящиеся). sim=0.583 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Башня Времени', 'Екатеринбург', 60557, 'fuzzy', 0.583, false, 'sim=0.583 review: Башня Времени (Фортис Девелопмент, Строящиеся)') ON CONFLICT DO NOTHING; + +-- 48 deals/12m. "Re:Volution Towers (НКС-Девелопмент)" → domrf RE.VOLUTION TOWERS (НКС-Девелопмент, Строящиеся). sim=0.543 +-- Developer name matches exactly. High-confidence despite lower sim (long name with punctuation diff). +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Re:Volution Towers (НКС-Девелопмент)', 'Екатеринбург', 39106, 'fuzzy', 0.543, false, 'sim=0.543 review: RE.VOLUTION TOWERS (НКС-Девелопмент, Строящиеся). Dev name matches.') ON CONFLICT DO NOTHING; + +-- 146 deals/12m. "Квартал Моменты" → domrf "Квартал Моменты на Космонавтов" (TETRIS GROUP, Строящиеся). sim=0.533 +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Квартал Моменты', 'Екатеринбург', 64556, 'fuzzy', 0.533, false, 'sim=0.533 review: Квартал Моменты на Космонавтов (TETRIS GROUP, Строящиеся)') ON CONFLICT DO NOTHING; + +-- 914 deals/12m. "Новокольцовский" → domrf Жилой р-н Новокольцовский (Синара-Девелопмент). sim=0.485 +-- Large multi-corpus project (6 corpora found). obj_id 59217 = Строящиеся (4 оч. ЖД5). +-- Pick most active Строящиеся corpus. Needs manual verification of primary obj_id. +-- INSERT INTO objective_complex_mapping (objective_complex_name, objective_group, domrf_obj_id, match_method, match_score, is_reviewed, note) VALUES +-- ('Новокольцовский', 'Екатеринбург', 59217, 'fuzzy', 0.485, false, 'sim=0.485 review: Новокольцовский (Синара-Девелопмент). 914 deals/12m, large multi-corpus. Verify obj_id.') ON CONFLICT DO NOTHING; + +-- ============================================================================= +-- LOW / ORPHAN — no domrf match found (sim < 0.4 or wrong project) +-- These Objective project_names have no reliable domrf_kn_objects counterpart. +-- velocity.py will show velocity=0 for them until matched or until rosreestr fallback is used. +-- ============================================================================= +-- Новокольцовский (if MEDIUM above rejected) +-- Солнечный (Эталон) — sim=0.393 to wrong developer. Эталон has obj 68595 (Строящиеся) but +-- name only "Район Солнечный" — ambiguous. Orphan for now. +-- Forum Park — no EKB match in domrf_kn_objects at all. +-- Береговой — sim=0.370, "Семейный квартал Береговой" (Талан). Below threshold. +-- Лайв — sim=0.385 to Квартал Лайв (Атомстройкомплекс). Below threshold. +-- Тетро — sim=0.375. Below threshold. +-- Московский квартал (Земельный ресурс) — best match is sданные old project, ambiguous. +-- Река. Дом на набережной — no reliable match. +-- Русь, Русь XXI — no match found. +-- Тактика, Новация, Утес, Добрый, К100, 9 Космонавтов, Орбита на Титова, +-- Тетро, Курчатов, River Park (Кургансельстрой), Современник, Новый ВИЗ (Астра-Девелопмент), +-- Самоцветы, Белый парус (if MEDIUM rejected), А+, Центральный Парк (Екатеринбург), +-- 7 Ключей, GRAFIT, 7Я, Тишина 2, Грин Гарден, Дружный, Дружный-2, Соната Парк, +-- Проспект Мира. Компаунд, Мир Труд Май, Викулов, Астон.Время, Голос Заря (Голос), +-- Тихий центр, Федерация, Теплые кварталы (Паритет Девелопмент), +-- Теплые кварталы (Призвание), Уралмаш, Цветочный, Каменные палатки (BAZA), +-- На Некрасова (if MEDIUM rejected), ЖК на Ботанике, Традиции (Квартал на Турбинке), +-- NOVA Park, ПТ На Ежевичной, Пушкин, DOM 7, Аура, Кварталы конструктивизма (already HIGH), +-- RedRock, Шолохов, 19/05, М1, Атмосфера, Рио-3, 4Ю, Северный Химмаш, Олимпика, +-- АЛЛЕГРО, Форум Сити, Литературный, Просторы, Рижский, Ботаника LIFE, Discovery Residence, +-- Дом на Бардина — all orphans, no action. + +COMMIT;