import math
import re
import pandas as pd

electroline_dict = {'Бурение лидерных скважин': {'standard_names': ['Бурение лидерных скважин'],
  'distances': [-5.960464477539062e-07]},
 'Установка в скважины свай': {'standard_names': ['Установка в скважины свай'],
  'distances': [-1.1920928955078125e-07]},
 'Монтаж оголовников': {'standard_names': ['Монтаж оголовков'],
  'distances': [0.02141439914703369]},
 'Монтаж ростверков и опорных конструкций под порталы, опоры ВЛ': {'standard_names': ['Монтаж ростверков и опорных конструкций под порталы, опоры вл'],
  'distances': [0.0027936697006225586]},
 'Сборка опор/порталов': {'standard_names': ['Сборка опор/порталов'],
  'distances': [-1.0728836059570312e-06]},
 'Установка опор/порталов': {'standard_names': ['Установка опор/порталов'],
  'distances': [-2.384185791015625e-07]},
 'Подвеска провода': {'standard_names': ['Подвеска провода'],
  'distances': [5.960464477539063e-08]},
 'Подвеска грозозащитного троса': {'standard_names': ['Подвеска грозозащитного троса'],
  'distances': [-5.960464477539062e-07]},
 'Укладка полосового заземления': {'standard_names': ['Укладка полосового заземления'],
  'distances': [5.960464477539063e-08]},
 'Укладка активного соляного заземления': {'standard_names': ['Укладка активного соляного заземления'],
  'distances': [-1.1920928955078125e-07]}}

gas_dict = {'Начало работ по марке': {'standard_names': ['Монтаж марок гтм'],
  'distances': [0.10772007703781128]},
 'Изготовление свай': {'standard_names': ['Изготовление металлических свай'],
  'distances': [0.029938817024230957]},
 'Бурение скважин': {'standard_names': ['Бурение скважин'],
  'distances': [0.0]},
 'Погружение свай': {'standard_names': ['Погружение свай'],
  'distances': [-1.0728836059570312e-06]},
 'Заполнение полости свай ЦПС': {'standard_names': ['Забивка составных железобетонных свай'],
  'distances': [0.10069936513900757]},
 'Срезка свай, монтаж оголовков': {'standard_names': ['Срезка голов свай'],
  'distances': [0.07156085968017578]},
 'Засыпка пространства между сваями щебнем фракции 15-20 мм': {'standard_names': ['Отсыпка площадки щебнем'],
  'distances': [0.1313214898109436]},
 'Монтаж деформационных марок': {'standard_names': ['Монтаж деформационной марки'],
  'distances': [0.01067352294921875]},
 'Монтаж траверс': {'standard_names': ['Монтаж траверс'],
  'distances': [1.1920928955078125e-07]},
 'Монтаж м/к (связи, стойки, упоры, подкосы)': {'standard_names': ['Монтаж стоек'],
  'distances': [0.11791932582855225]},
 'Устройство термометрических скважин': {'standard_names': ['Устройство термометрических скважин'],
  'distances': [4.172325134277344e-07]},
 'Монтаж термометрических трубок': {'standard_names': ['Монтаж термометрической трубки'],
  'distances': [0.00847560167312622]},
 'Устройство песчанной подушки': {'standard_names': ['Устройство песчаной подушки'],
  'distances': [0.0038014650344848633]},
 'Укладка габионов': {'standard_names': ['Укладка георешетки, габионов'],
  'distances': [0.059244632720947266]},
 'Заполнение габионов щебнем фракции 70-120мм': {'standard_names': ['Укладка геосеток, георешеток, габионов с заполнением щебнем'],
  'distances': [0.0966118574142456]},
 'Монтаж термостабилизаторов': {'standard_names': ['Монтаж термостабилизаторов'],
  'distances': [-7.152557373046875e-07]},
 'АКЗ свай и металлоконструкций': {'standard_names': ['Изготовление металлических свай'],
  'distances': [0.11468857526779175]},
 'Окончание работ по марке': {'standard_names': ['Монтаж марок гтм'],
  'distances': [0.12320524454116821]},
 'Монтаж опор DN 500 (неподвижная, направляющая, скользящая)': {'standard_names': ['Монтаж опор'],
  'distances': [0.12729036808013916]},
 'Сварка газопровода 530х24 мм': {'standard_names': ['Сварка трубопроводов'],
  'distances': [0.13709336519241333]},
 'Надземная прокладка газопровода 530х24 мм': {'standard_names': ['Монтаж дворового газопровода'],
  'distances': [0.14499938488006592]},
 'Монтаж опор метанолопровода': {'standard_names': ['Монтаж опор трубопровода'],
  'distances': [0.07172954082489014]},
 'Сварка метанолопровода 57х6мм': {'standard_names': ['Ручная электродуговая сварка труб'],
  'distances': [0.14517462253570557]},
 'Надземная прокладка метанолопровода 57х6мм': {'standard_names': ['Демонтаж стальных отводов(надземная прокладка)'],
  'distances': [0.1477593183517456]},
 'Монтаж заземления': {'standard_names': ['Монтаж заземлений'],
  'distances': [0.005636453628540039]},
 'Очистка полости трубопроводов': {'standard_names': ['Очистка полости трубопровода'],
  'distances': [0.004020094871520996]},
 'Гидроиспытания трубопроводов': {'standard_names': ['Испытание трубопроводов'],
  'distances': [0.037264227867126465]},
 'Изоляция сварных соединений газопровода': {'standard_names': ['Изоляция сварных стыков'],
  'distances': [0.061874449253082275]}}


dormitory_dict = {'Начало АС (поз.1.1)': {'standard_names': ['Установка и разборка'],
  'distances': [0.15408343076705933]},
 'Окончание АС (поз.1.1)': {'standard_names': ['Окончательная центровка'],
  'distances': [0.15425574779510498]},
 'АС/поз.1.1/Установка свай с заполнением': {'standard_names': ['Установка в скважины свай'],
  'distances': [0.11233580112457275]},
 'АС/поз.1.1/Изготовление свай (наращивание)': {'standard_names': ['Изготовление металлических свай'],
  'distances': [0.11968553066253662]},
 'АС/поз.1.1/Монтаж оголовков': {'standard_names': ['Монтаж оголовков'],
  'distances': [0.07088661193847656]},
 'АС/поз.1.1/Монтаж ростверка': {'standard_names': ['Устройство монолитного железобетонного ростверка'],
  'distances': [0.1248977780342102]},
 'АС/поз.1.1/АКЗ боковой поверхности металлических свай': {'standard_names': ['Антикоррозионная защита боковой поверхности металических свай'],
  'distances': [0.08452588319778442]},
 'АС/поз.1.1/АКЗ м/к надземной части свай и оголовков, ростверка': {'standard_names': ['Бетонирование свайного ростверка'],
  'distances': [0.1405332088470459]},
 'Начало АС.ТТ (поз.1.1)': {'standard_names': ['Монтаж ктп'],
  'distances': [0.1530134677886963]},
 'Окончание АС.ТТ (поз.1.1)': {'standard_names': ['Окончательная засыпка траншей'],
  'distances': [0.15008139610290527]},
 'АС.ТТ/поз.1.1/Монтаж блоков общежития': {'standard_names': ['Монтаж модулей, блок-боксов'],
  'distances': [0.11850029230117798]},
 'АС.ТТ/поз.1.1/Устройство внутренних лестниц': {'standard_names': ['Монтаж лестниц'],
  'distances': [0.1343798041343689]},
 'Монтаж корпуса общежития завершен': {'standard_names': ['Монтаж блока совместной защиты'],
  'distances': [0.1489465832710266]},
 'АС.ТТ/поз.1.1/Монтаж ферм стропильных': {'standard_names': ['Монтаж стропильных и подстропильных ферм'],
  'distances': [0.08270645141601562]},
 'АС.ТТ/поз.1.1/Монтаж нащельников на венткамеры': {'standard_names': ['Монтаж витражей, витрин и остекленных панелей фасадов'],
  'distances': [0.14329564571380615]},
 'АС.ТТ/поз.1.1/Монтаж прогонов': {'standard_names': ['Установка дефлекторов, зонтов, узлов прохода'],
  'distances': [0.1316819190979004]},
 'АС.ТТ/поз.1.1/Монтаж нащельников, элементов примыкания': {'standard_names': ['Установка дефлекторов, зонтов, узлов прохода'],
  'distances': [0.1312248706817627]},
 'Монтаж м/к (ферм стропильных, прогонов) завершен': {'standard_names': ['Монтаж префабрикованных км'],
  'distances': [0.14111757278442383]},
 'АС.ТТ/поз.1.1/Монтаж крепления радиальных вентиляторов': {'standard_names': ['Монтаж системы вентиляции'],
  'distances': [0.12357097864151001]},
 'АС.ТТ/поз.1.1/Монтаж крепления наружных воздуховодов Д 250, 315, 800х400, 1000х600': {'standard_names': ['Монтаж воздуховодов'],
  'distances': [0.12768888473510742]},
 'АС.ТТ/поз.1.1/Монтаж балок пола': {'standard_names': ['Балластировка птбк уложенного трубопровода'],
  'distances': [0.1430530548095703]},
 'АС.ТТ/поз.1.1/Монтаж хомутов для крепления внутренних воздуховодов (27 шт.)': {'standard_names': ['Монтаж воздуховодов'],
  'distances': [0.14827978610992432]},
 'АС.ТТ/поз.1.1/Монтаж крепежных элементов воздуховодов чердака (230 шт)': {'standard_names': ['Монтаж воздуховодов'],
  'distances': [0.13739240169525146]},
 'АС.ТТ/поз.1.1/Крепление панелей венткамер': {'standard_names': ['Монтаж витражей, витрин и остекленных панелей фасадов'],
  'distances': [0.14456582069396973]},
 'АС.ТТ/поз.1.1/Монтаж крыльца №1': {'standard_names': ['Установка корпуса нрп/нуп'],
  'distances': [0.14121633768081665]},
 'АС.ТТ/поз.1.1/Монтаж крыльца №3': {'standard_names': ['Установка корпуса нрп/нуп'],
  'distances': [0.14559680223464966]},
 'АС.ТТ/поз.1.1/Монтаж крыльца №2': {'standard_names': ['Установка корпуса нрп/нуп'],
  'distances': [0.1427220106124878]},
 'АС.ТТ/поз.1.1/Монтаж профилей обрамления проемов (3 шт)': {'standard_names': ['Установка оконных и дверных проемов'],
  'distances': [0.13891977071762085]},
 'АС.ТТ/поз.1.1/Монтаж люка-лаза на кровлю': {'standard_names': ['Нанесение лкм акз'],
  'distances': [0.15793520212173462]},
 'АС.ТТ/поз.1.1/Монтаж подставки под наружный блок кондиционера': {'standard_names': ['Установка блока вентиляции'],
  'distances': [0.13884365558624268]},
 'АС.ТТ/поз.1.1 Устройство оконных проемов': {'standard_names': ['Установка оконных и дверных проемов'],
  'distances': [0.10690748691558838]},
 'АС.ТТ/поз.1.1 Устройство дверных проемов': {'standard_names': ['Установка оконных и дверных проемов'],
  'distances': [0.10664331912994385]},
 'Устройство кровли завершено': {'standard_names': ['Устройство черепичной кровли'],
  'distances': [0.09506356716156006]},
 'АС.ТТ/поз.1.1/Устройство подкровельной антиконденсатной пленки': {'standard_names': ['Устройство противоподкопного барьера'],
  'distances': [0.13525724411010742]},
 'АС.ТТ/поз.1.1/Монтаж профлиста (крыша, фронтон, козырек, цоколь)': {'standard_names': ['Монтаж кровельного покрытия из профлиста'],
  'distances': [0.12203633785247803]},
 'АС.ТТ/поз.1.1/Устройство утеплителя рулонного, жесткого': {'standard_names': ['Устройство теплоизоляции'],
  'distances': [0.14568156003952026]},
 'АС.ТТ/поз.1.1/Монтаж панелей стеновых': {'standard_names': ['Установка панелей наружных стен'],
  'distances': [0.11746317148208618]},
 'АС.ТТ/поз.1.1/Монтаж панелей кровельных': {'standard_names': ['Монтаж кровельного покрытия'],
  'distances': [0.12736600637435913]},
 'Монтаж стеновых и кровельных панелей завершен': {'standard_names': ['Установка панелей наружных стен'],
  'distances': [0.11084163188934326]},
 'АС.ТТ/поз.1.1/Теплоизоляция техподполья': {'standard_names': ['Теплоизоляция покрытий и перекрытий мин. плитами'],
  'distances': [0.12408638000488281]},
 'АС.ТТ/поз.1.1/Внутренняя отделка потолка "Армстронг"': {'standard_names': ['Внутренняя отделка'],
  'distances': [0.16540449857711792]},
 'АС.ТТ/поз.1.1/Внутренняя отделка ЦСП толщ.10 мм': {'standard_names': ['Монтаж ктп'],
  'distances': [0.17422670125961304]},
 'АС.ТТ/поз.1.1/Внутренняя отделка стен "Бук"': {'standard_names': ['Внутренние штукатурные работы'],
  'distances': [0.13696646690368652]},
 'АС.ТТ/поз.1.1/Устройство пола венткамер ЦСП толщ.10 мм и 16 мм': {'standard_names': ['Устройство теплоизоляционного слоя пола'],
  'distances': [0.15469008684158325]},
 'АС.ТТ/поз.1.1/Внутренняя отделка стен фибропанелью': {'standard_names': ['Отделка внутренних поверхностей стен'],
  'distances': [0.13395905494689941]},
 'АС.ТТ/поз.1.1/Внутренняя отделка потолка плитой перфорированной': {'standard_names': ['Теплоизоляция внутренних стен мин. плитами'],
  'distances': [0.1453898549079895]},
 'АС.ТТ/поз.1.1/Устройство пола венткамер линолеум': {'standard_names': ['Устройство полов из линолеума'],
  'distances': [0.1301296353340149]},
 'АС.ТТ/поз.1.1/Внутренняя отделка плинтуса': {'standard_names': ['Теплоизоляция внутренних стен мин. плитами'],
  'distances': [0.13623368740081787]},
 'АС.ТТ/поз.1.1/Внутренняя отделка пола линолеум': {'standard_names': ['Теплоизоляция внутренних стен мин. плитами'],
  'distances': [0.1365140676498413]},
 'Монтаж системы водоснабжения завершен': {'standard_names': ['Монтаж оборудования внутренних систем водоснабжения'],
  'distances': [0.103371262550354]},
 'АС.ТТ/поз.1.1/Водоснабжение, монтаж трубопровода': {'standard_names': ['Монтаж трубопроводов'],
  'distances': [0.13785886764526367]},
 'АС.ТТ/поз.1.1/Водоснабжение, монтаж опор': {'standard_names': ['Монтаж опор трубопровода'],
  'distances': [0.11584603786468506]},
 'АС.ТТ/поз.1.1/Водоснабжение, монтаж хомутов': {'standard_names': ['Монтаж водосточной системы, системы снегозадержания'],
  'distances': [0.13450497388839722]},
 'АС.ТТ/поз.1.1/Водоснабжение, монтаж муфт, угольников, тройников': {'standard_names': ['Монтаж тройников'],
  'distances': [0.14059770107269287]},
 'АС.ТТ/поз.1.1/Водоснабжение, монтаж кранов': {'standard_names': ['Монтаж водосточной системы, системы снегозадержания'],
  'distances': [0.1343679428100586]},
 'АС.ТТ/поз.1.1/Теплоизоляция магистрального водопровода, монтаж теплоизоляции': {'standard_names': ['Монтаж теплоизоляции трубопровода'],
  'distances': [0.11555129289627075]},
 'АС.ТТ/поз.1.1/Канализация выше отм. +0.000, монтаж трубопровода': {'standard_names': ['Монтаж ктп'],
  'distances': [0.14776480197906494]},
 'АС.ТТ/поз.1.1/Канализация ниже отм. -0.000, монтаж трубопровода': {'standard_names': ['Прокладка трубопроводов канализации'],
  'distances': [0.14150136709213257]},
 'Подземная прокладка трубопроводов К1, с учетом монтажа греющего кабеля и устройством теплоизоляции': {'standard_names': ['Прокладка греющего кабеля'],
  'distances': [0.10329973697662354]},
 'АС.ТТ/поз.1.1/Монтаж стальных колодцев бытовой самотечной канализации К1, с учетом внутренней обвязки': {'standard_names': ['Монтаж внутренних систем канализации'],
  'distances': [0.13526111841201782]},
 'АС.ТТ/поз.1.1/Канализация выше отм. +0.000, монтаж муфт, отводов, тройников, ревизии, перехода': {'standard_names': ['Установка дефлекторов, зонтов, узлов прохода'],
  'distances': [0.1488274335861206]},
 'АС.ТТ/поз.1.1/Канализация выше отм. +0.000, монтаж клапанов воздушных': {'standard_names': ['Монтаж огнезадерживающих и регулирующих клапанов сетей вентиляции'],
  'distances': [0.1461002230644226]},
 'АС.ТТ/поз.1.1/Канализация ниже отм. -0.000, монтаж отводов, тройников, ревизии': {'standard_names': ['Демонтаж стальных отводов(надземная прокладка)'],
  'distances': [0.1482325792312622]},
 'АС.ТТ/поз.1.1/Теплоизоляция канализации, монтаж теплоизоляции': {'standard_names': ['Монтаж теплоизоляции трубопровода'],
  'distances': [0.1162218451499939]},
 'АС.ТТ/поз.1.1/Прохождение труб через стык блок-модулей': {'standard_names': ['Погрузка трубоукладчиком труб/секций труб'],
  'distances': [0.13278961181640625]},
 'АС.ТТ/поз.1.1/Крепление канализации под зданием': {'standard_names': ['Сооружение внутренних систем канализации'],
  'distances': [0.14139235019683838]},
 'АС.ТТ/поз.1.1/Противопожарный трубопровод, монтаж трубопровода': {'standard_names': ['Водопровод противопожарный'],
  'distances': [0.1295912265777588]},
 'АС.ТТ/поз.1.1/Противопожарный трубопровод, монтаж тройников, отводов': {'standard_names': ['Водопровод противопожарный'],
  'distances': [0.13437753915786743]},
 'АС.ТТ/поз.1.1/Противопожарный трубопровод, монтаж шкафа пожарного в комплекте с огнетушителем, рукавом пожарным': {'standard_names': ['Монтаж защитных труб и рукавов'],
  'distances': [0.13324838876724243]},
 'АС.ТТ/поз.1.1/Противопожарный трубопровод, монтаж задвижек': {'standard_names': ['Установка противопожарных дверных блоков'],
  'distances': [0.13794726133346558]},
 'АС.ТТ/поз.1.1/Обвязка бойлера, монтаж трубопровода': {'standard_names': ['Монтаж фасонных элементов и запорной арматуры трубопроводов'],
  'distances': [0.14290499687194824]},
 'АС.ТТ/поз.1.1/Обвязка бойлера, отводов, тройников, ревизии, перехода, ниппель': {'standard_names': ['Трубопроводы обвязки в отсеке гтд'],
  'distances': [0.147699773311615]},
 'АС.ТТ/поз.1.1/Обвязка бойлера, монтаж оборудования (водонагреватель, расширит. бак, регулятор давления, насос)': {'standard_names': ['Монтаж узла подогрева'],
  'distances': [0.14077997207641602]},
 'АС.ТТ/поз.1.1/Обвязка бойлера, монтаж кранов': {'standard_names': ['Монтаж фасонных элементов и запорной арматуры трубопроводов'],
  'distances': [0.1488809585571289]},
 'АС.ТТ/поз.1.1/Обвязка бойлера, монтаж опор': {'standard_names': ['Укладка трубопровода на опоры'],
  'distances': [0.12838107347488403]},
 'Монтаж системы вентиляции и дымоудаления завершен': {'standard_names': ['Монтаж системы обеспечения воздухом'],
  'distances': [0.11231762170791626]},
 'Монтаж системы отопления завершен': {'standard_names': ['Монтаж приборов системы отопления'],
  'distances': [0.09157854318618774]},
 'АС.ТТ/поз.1.1/Общеобменная вентиляция, монтаж воздуховодов': {'standard_names': ['Монтаж системы вентиляции'],
  'distances': [0.12244737148284912]},
 'АС.ТТ/поз.1.1/В-8, монтаж воздуховода': {'standard_names': ['Монтаж воздуховодов'],
  'distances': [0.11955302953720093]},
 'АС.ТТ/поз.1.1/Дымоудаление, прокладка воздуховодов': {'standard_names': ['Прокладка воздуховодов'],
  'distances': [0.10577017068862915]},
 'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж воздуховодов': {'standard_names': ['Монтаж воздуховодов'],
  'distances': [0.11332952976226807]},
 'АС.ТТ/поз.1.1/Дымоудаление, огнезащита воздуховодов': {'standard_names': ['Нанесение огнезащитного покрытия воздуховодов, приточно-вытяжных инженерных систем'],
  'distances': [0.117770254611969]},
 'АС.ТТ/поз.1.1/В-8, монтаж переходника, тройника, зонта': {'standard_names': ['Монтаж ктп'],
  'distances': [0.15127217769622803]},
 'АС.ТТ/поз.1.1/П-1, В1/1, В1/2, ВП1, ВД1, монтаж клапанов, ниппель': {'standard_names': ['Монтаж огнезадерживающих и регулирующих клапанов сетей вентиляции'],
  'distances': [0.1399925947189331]},
 'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж шумоглушителя, зонта': {'standard_names': ['Монтаж ктп'],
  'distances': [0.15288329124450684]},
 'АС.ТТ/поз.1.1/Дымоудаление, монтаж переходников, отводов': {'standard_names': ['Установка дефлекторов, зонтов, узлов прохода'],
  'distances': [0.13746613264083862]},
 'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж тройников, отводов, переходников, врезки': {'standard_names': ['Монтаж тройников'],
  'distances': [0.1423131227493286]},
 'АС.ТТ/поз.1.1/Общеобменная вентиляция, монтаж вентилятора': {'standard_names': ['Монтаж системы вентиляции'],
  'distances': [0.11706334352493286]},
 'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж вентрешетки': {'standard_names': ['Монтаж ростверков и опорных конструкций под порталы, опоры вл'],
  'distances': [0.15011662244796753]},
 'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж крестовины, заглушек, хомутов': {'standard_names': ['Демонтаж заглушек, монтаж промежуточных колец'],
  'distances': [0.12542545795440674]},
 'АС.ТТ/поз.1.1/П-1 монтаж приточной установки': {'standard_names': ['Монтаж системы приточной вентиляции'],
  'distances': [0.10936897993087769]},
 'АС.ТТ/поз.1.1/Дымоудаление, монтаж клапанов': {'standard_names': ['Монтаж огнезадерживающих и регулирующих клапанов сетей вентиляции'],
  'distances': [0.13472306728363037]},
 'АС.ТТ/поз.1.1/П-1,В12-14.1, монтаж комплекта автоматики': {'standard_names': ['Монтаж основного оборудования систем ов и вк'],
  'distances': [0.14538168907165527]},
 'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж воздушно-тепловой завесы': {'standard_names': ['Нанесение огнезащитного покрытия воздуховодов, приточно-вытяжных инженерных систем'],
  'distances': [0.1519365906715393]},
 'АС.ТТ/поз.1.1/Дымоудаление, монтаж зонтов': {'standard_names': ['Установка дефлекторов, зонтов, узлов прохода'],
  'distances': [0.11593234539031982]},
 'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж изоляции воздуховодов': {'standard_names': ['Устройство теплоизоляции воздуховодов'],
  'distances': [0.12425804138183594]},
 'АС.ТТ/поз.1.1/П-1.2.В12-14.1. монтаж сплит-системы': {'standard_names': ['Монтаж систем'],
  'distances': [0.14005988836288452]},
 'АС.ТТ/поз.1.1/Отопление (П1), монтаж трубопровода': {'standard_names': ['Прокладка трубопровода отопления'],
  'distances': [0.1344916820526123]},
 'АС.ТТ/поз.1.1/Отопление (ИТП), монтаж трубопроводов': {'standard_names': ['Монтаж ктп'],
  'distances': [0.1291714906692505]},
 'АС.ТТ/поз.1.1/Отопление, монтаж трубопровода': {'standard_names': ['Прокладка трубопровода отопления'],
  'distances': [0.12323629856109619]},
 'АС.ТТ/поз.1.1/Отопление, монтаж переходов, тройников, уголков, муфт': {'standard_names': ['Установка дефлекторов, зонтов, узлов прохода'],
  'distances': [0.12276279926300049]},
 'АС.ТТ/поз.1.1/Отопление, монтаж опор для труб': {'standard_names': ['Монтаж опор трубопровода'],
  'distances': [0.10125136375427246]},
 'АС.ТТ/поз.1.1/Отопление (П1), монтаж кранов': {'standard_names': ['Монтаж приборов системы отопления'],
  'distances': [0.15275895595550537]},
 'АС.ТТ/поз.1.1/Отопление (ИТП), монтаж счетчиков, кранов, манометров, термометров и др.': {'standard_names': ['Монтаж ктп'],
  'distances': [0.13156497478485107]},
 'АС.ТТ/поз.1.1/Отопление, монтаж радиаторов': {'standard_names': ['Прокладка трубопровода отопления'],
  'distances': [0.1434497833251953]},
 'АС.ТТ/поз.1.1/Отопление (ИТП), монтаж опор для труб': {'standard_names': ['Монтаж опор трубопровода'],
  'distances': [0.10196936130523682]},
 'АС.ТТ/поз.1.1/Отопление, монтаж насоса (ИТП), блока питания': {'standard_names': ['Установка агрегатного блока подготовки топливного газа'],
  'distances': [0.14009332656860352]},
 'АС.ТТ/поз.1.1/Автоматика к вентиляторам, монтаж шкафов': {'standard_names': ['Пульт, рабочее место, шкафы цс, блокировок, управления автоматикой'],
  'distances': [0.11793959140777588]},
 'АС.ТТ/поз.1.1/Отопление (ИТП), монтаж переходов, тройников, уголков, муфт': {'standard_names': ['Монтаж ктп'],
  'distances': [0.1345941424369812]},
 'АС.ТТ/поз.1.1/Отопление, монтаж изоляции': {'standard_names': ['Ремонт, изоляция'],
  'distances': [0.10763418674468994]},
 'АС.ТТ/поз.1.1/Отопление (ИТП), монтаж изоляции': {'standard_names': ['Ремонт, изоляция'],
  'distances': [0.11809957027435303]},
 'Монтаж системы электроснабжения завершен': {'standard_names': ['Монтаж основного электрооборудования'],
  'distances': [0.09382247924804688]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж кабеля': {'standard_names': ['Монтаж кабелей асутп, кипиа'],
  'distances': [0.1168520450592041]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж короба, кабель-канала, перегородки': {'standard_names': ['Монтаж модулей, блок-боксов'],
  'distances': [0.1363375186920166]},
 'АС.ТТ/поз.1.1/Электрообогрев линии канализации до КНС': {'standard_names': ['Технологический электропрогрев'],
  'distances': [0.1394948959350586]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж светильников': {'standard_names': ['Монтаж светильников'],
  'distances': [0.11796140670776367]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж ламп': {'standard_names': ['Монтаж приборов электротехнических'],
  'distances': [0.14575928449630737]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж ящика трансформаторного понижающего': {'standard_names': ['Установка трансформаторной подстанции'],
  'distances': [0.14359962940216064]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж выключателей, розеток': {'standard_names': ['Установка выключателей'],
  'distances': [0.1290077567100525]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж знаков безопасности': {'standard_names': ['Установка знаков, сигнальных столбиков'],
  'distances': [0.11542391777038574]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж конвектора': {'standard_names': ['Установка конвекторов'],
  'distances': [0.12081682682037354]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж обогревателя': {'standard_names': ['Монтаж узла подогрева'],
  'distances': [0.11700892448425293]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж футляра': {'standard_names': ['Монтаж футляра'],
  'distances': [0.11151665449142456]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж трубы ПВХ с зондом': {'standard_names': ['Монтаж временного узла для пневмоиспытаний трубопроводов'],
  'distances': [0.14192402362823486]},
 'АС.ТТ/поз.1.1/ЭОМ, монтаж металлорукава': {'standard_names': ['Монтаж металлоконструкций фундаментов, каркаса зданий и сооружений, эстакад'],
  'distances': [0.12586402893066406]},
 'АС.ТТ/поз.1.1/АОВ, монтаж кабеля': {'standard_names': ['Монтаж кабелей асутп, кипиа'],
  'distances': [0.11451828479766846]},
 'АС.ТТ/поз.1.1/АОВ, монтаж щита управления приточной установкой': {'standard_names': ['Монтаж щита однорядного или двухрядного'],
  'distances': [0.13840532302856445]},
 'АС.ТТ/поз.1.1/АОВ, монтаж щита управления вытяжкой': {'standard_names': ['Монтаж щита однорядного или двухрядного'],
  'distances': [0.13674944639205933]},
 'АС.ТТ/поз.1.1/АОВ, монтаж щита упр-я вентилятором дымоудаления, подпора': {'standard_names': ['Монтаж щита пожарного'],
  'distances': [0.12859588861465454]},
 'АС.ТТ/поз.1.1/АОВ, монтаж блока упр-я клапанами': {'standard_names': ['Монтаж асутп блока контроля и управления'],
  'distances': [0.12477517127990723]},
 'АС.ТТ/поз.1.1/АОВ, монтаж щита пожарной автоматики': {'standard_names': ['Монтаж щита пожарного'],
  'distances': [0.10970431566238403]},
 'АС.ТТ/поз.1.1/АОВ, монтаж пульта контроля и управления, блока контроля и индикации': {'standard_names': ['Монтаж асутп блока контроля и управления'],
  'distances': [0.11430394649505615]},
 'АС.ТТ/поз.1.1/АОВ, монтаж блока питания': {'standard_names': ['Монтаж асутп блока контроля и управления'],
  'distances': [0.12299704551696777]},
 'АС.ТТ/поз.1.1/АОВ, монтаж трубы ПВХ с зондом': {'standard_names': ['Монтаж временного узла для пневмоиспытаний трубопроводов'],
  'distances': [0.14318549633026123]},
 'АС.ТТ/поз.1.1/АОВ, монтаж металлорукава': {'standard_names': ['Монтаж металлоконструкций фундаментов, каркаса зданий и сооружений, эстакад'],
  'distances': [0.12893152236938477]},
 'АС.ТТ/поз.1.1/АОВ, монтаж лотка': {'standard_names': ['Короба, лотки'],
  'distances': [0.1271960735321045]},
 'Начало СС (поз.1.1)': {'standard_names': ['Снятие старой изоляции'],
  'distances': [0.17306476831436157]},
 'Окончание СС (поз.1.1)': {'standard_names': ['Разгрузка секций'],
  'distances': [0.15438145399093628]},
 'СС/поз.1.1/СБП. Монтаж кабеля': {'standard_names': ['Монтаж провода, кабеля связи'],
  'distances': [0.10675942897796631]},
 'СС/поз.1.1/ПС. Монтаж кабеля': {'standard_names': ['Монтаж провода, кабеля связи'],
  'distances': [0.10566115379333496]},
 'СС/поз.1.1/СКС. Установка коробов': {'standard_names': ['Монтаж соединительных коробок и муфт'],
  'distances': [0.11483210325241089]},
 'СС/поз.1.1/СКС. Монтаж кабеля': {'standard_names': ['Монтаж провода, кабеля связи'],
  'distances': [0.10552513599395752]},
 'СС/поз.1.1/ГГС. Монтаж кабеля': {'standard_names': ['Монтаж провода, кабеля связи'],
  'distances': [0.10745537281036377]},
 'СС/поз.1.1/ГГС. Устройство трубы гофрированной с держателями': {'standard_names': ['Устройство водопропускной трубы'],
  'distances': [0.14461398124694824]},
 'СС/поз.1.1/ГГС. Установка распределительных коробов': {'standard_names': ['Установка воздухораспределителей'],
  'distances': [0.12889742851257324]},
 'СС/поз.1.1/СКС. Монтаж блока оптического': {'standard_names': ['Монтаж оптического кросса'],
  'distances': [0.10620784759521484]},
 'СС/поз.1.1/СКС. Монтаж адаптеров, пигтейл, патч корд': {'standard_names': ['Монтаж спцв'],
  'distances': [0.14294672012329102]},
 'СС/поз.1.1/ЛВС. Установка шкафа Rittal': {'standard_names': ['Монтаж шкафа'],
  'distances': [0.1401386857032776]},
 'СС/поз.1.1/ЛВС. Установка коммутаторов и модуля': {'standard_names': ['Программирование и настройка коммутатора/маршрутизатора'],
  'distances': [0.12371194362640381]},
 'СС/поз.1.1/СБП. Монтаж источника бесперебойного питания': {'standard_names': ['Монтаж основного электрооборудования'],
  'distances': [0.12946879863739014]},
 'СС/поз.1.1/СБП. Монтаж карты управления и мониторинга': {'standard_names': ['Монтаж асутп блока контроля и управления'],
  'distances': [0.12460744380950928]},
 'СС/поз.1.1/СКС. Установка коробок с розеткой': {'standard_names': ['Монтаж соединительных коробок и муфт'],
  'distances': [0.12257963418960571]},
 'СС/поз.1.1/ЛВС. Электрическая проверка и настройка': {'standard_names': ['Электрическая проверка технических характеристик приборов и датчиков'],
  'distances': [0.13076497604088821]},
 'СС/поз.1.1/СТС. Установка аппаратов телефонных': {'standard_names': ['Установка оборудования'],
  'distances': [0.1422378420829773]},
 'СС/поз.1.1/СТС. Проверка и настройка АТС': {'standard_names': ['Конфигурация и настройка сетевых компонентов'],
  'distances': [0.14351487159729004]},
 'СС/поз.1.1/ГГС. Установка громкоговорителей, IP- пульта': {'standard_names': ['Монтаж системы сгу'],
  'distances': [0.14528018236160278]},
 'СС/поз.1.1/ГГС. Монтаж ящик распределительный Rittal': {'standard_names': ['Комплектное распределительное устройство внутренней установки'],
  'distances': [0.15933263301849365]},
 'Монтаж МК крепления Профлиста цоколь (Швеллер 100*50*4)': {'standard_names': ['Монтаж кровельного покрытия из профлиста'],
  'distances': [0.13344061374664307]},
 'Монтаж кронштейнов Кр1': {'standard_names': ['Монтаж блока рву'],
  'distances': [0.12383341789245605]},
 'Зашивка цоколя профлистом С8-1150-0,7': {'standard_names': ['Боковая обмазочная гидроизоляция забивных свай'],
  'distances': [0.16736948490142822]},
 'Монтаж цветных кассет на фасаде здания': {'standard_names': ['Окраска фасадов зданий'],
  'distances': [0.12054800987243652]},
 'Монтаж нащельников и герметизация': {'standard_names': ['Монтаж оголовков'],
  'distances': [0.11396616697311401]},
 'Демонтаж нащельников, с учетом герметика': {'standard_names': ['Демонтаж металлических щитов опалубки'],
  'distances': [0.11776912212371826]},
 'Монтаж светильников на фасаде Глобус G300 - 8 шт., двухсторонний - 8 шт.': {'standard_names': ['Монтаж наружных светильников'],
  'distances': [0.14679741859436035]},
 'Монтаж светового короба СК-8 "Общежитие №3"': {'standard_names': ['Монтаж осветительной электроустановки'],
  'distances': [0.1484491229057312]},
 'Монтаж м/к (решетки, ограждения)': {'standard_names': ['Монтаж ограждений'],
  'distances': [0.11109089851379395]},
 'Демонтаж м/к (решетки, ограждения)': {'standard_names': ['Демонтаж стояков и разводок'],
  'distances': [0.11568158864974976]},
 'Монтаж МК крепления Плофлиста цоколя': {'standard_names': ['Монтаж кровельного покрытия из профлиста'],
  'distances': [0.10736167430877686]},
 'Зашивка цоколя профлистом': {'standard_names': ['Монтаж кровельного покрытия из профлиста'],
  'distances': [0.11047136783599854]},
 'Подшивка козырька': {'standard_names': ['Монтаж кожуха'],
  'distances': [0.11357998847961426]},
 'Монтаж решёток для витражей': {'standard_names': ['Установка решеток жалюзийных'],
  'distances': [0.0781826376914978]},
 'АКЗ МК входной группы': {'standard_names': ['Нанесение лкм акз'],
  'distances': [0.11687350273132324]},
 'Монтаж Профлиста фронтона С8-1150-0.7': {'standard_names': ['Монтаж кровельного покрытия из профлиста'],
  'distances': [0.14164704084396362]},
 'Монтаж гофры': {'standard_names': ['Монтаж трубы гофрированной'],
  'distances': [0.05176103115081787]},
 'Монтаж каб.канал': {'standard_names': ['Монтаж кабельных муфт'],
  'distances': [0.08711415529251099]},
 'Монтаж кабеля 5х6': {'standard_names': ['Монтаж кабелей связи'],
  'distances': [0.0995713472366333]},
 'Монтаж кабеля 3х2.5': {'standard_names': ['Монтаж кабелей связи'],
  'distances': [0.11677342653274536]}}

standard_masurements = ['%',
 'РРС',
 'ЦСП',
 'антенна',
 'га',
 'дерево',
 'знак',
 'жил',
 'заземлитель',
 'импульсная линия',
 'испытание',
 'измерение',
 'место',
 'кабель',
 'кг',
 'км',
 'км2',
 'пром',
 'кВт',
 'коммутатор',
 'комплект',
 'котел',
 'котлован',
 'кт',
 'лист',
 'м',
 'м2',
 'м3',
 'мп',
 'конец',
 'опора',
 'образ',
 'фундамент',
 'отметка',
 'переход',
 'рабочая плеть',
 'рез',
 'секция',
 'система',
 'соединение',
 'стык',
 'т',
 'труба',
 'узел',
 'установка',
 'участок',
 'формир',
 'шт',
 'вех',
 'лунка',
 'штатив',
 'рейс']


helping_dict = {'тн':'т', 'м':'м', 'м.':'м', 'проход кабеля':'кабель', 'конец кабеля':'кабель', 'т':'т', 'ст':'стык', '%':'%', 'к-т':'кт','п.м':'мп','ПК+':'комплект','Шт.':'шт','ВУ':'установка','котл':'котлован','ст.':'стык','м 3':'м3','пер':'переход','уст.':'установка','уч':'участок','Фунд.':'фундамент','отм.':'отметка','изм.':'измерение','мест':'место','котл.':'котлован',
                'пер.':'переход','уст.':'установка','уч':'участок','изм.':'измерение',' мест':'место',' изм.':'измерение',
       'м.п .':'мп', 'ком':'комплект', 'ст .':'стык', 'шт ( 1 км )':'шт', 'Монтаж оголовников': 'Монтаж оголовков', 'Монтаж ростверков и опорных конструкций под порталы, опоры ВЛ':'Монтаж ростверков и опорных конструкций под порталы, опоры вл', 'Срезка свай, монтаж оголовков':'Монтаж оголовков', 'Монтаж м/к (связи, стойки, упоры, подкосы)':'Монтаж металлоконструкций',
       'Монтаж термометрических трубок':'Монтаж термометрической трубки','Устройство песчанной подушки':'Устройство песчаного основания с послойным уплотнением',
       'АКЗ свай и металлоконструкций':'Антикоррозионная защита надземных трубопроводов'}

standart_names = pd.read_csv('D:/stairs-resource-model/auxiliary_data/generalized_task_names.csv', sep='/n')
standart_names = list(standart_names['РАБОТА'].values)


from collections import Counter


WORD = re.compile(r"\w+")


def get_cosine(vec1, vec2):
    intersection = set(vec1.keys()) & set(vec2.keys())
    numerator = sum([vec1[x] * vec2[x] for x in intersection])

    sum1 = sum([vec1[x] ** 2 for x in list(vec1.keys())])
    sum2 = sum([vec2[x] ** 2 for x in list(vec2.keys())])
    denominator = math.sqrt(sum1) * math.sqrt(sum2)

    if not denominator:
        return 0.0
    else:
        return float(numerator) / denominator


def text_to_vector(text):
    words = WORD.findall(text)
    return Counter(words)

def cosine_mapping(words, to_what_map):
    result_df = pd.DataFrame(columns=['Activity Name', 'Matched File Name', 'Cosine'])
    for word in words:
        start_cos = 0
        start_word = ''
        for st_word in to_what_map:
            dist = get_cosine(text_to_vector(word), text_to_vector(st_word))
            if dist > start_cos:
                start_cos = dist
                start_word = st_word
        result_df = pd.concat([result_df, pd.DataFrame.from_dict({'Activity Name':[word], 'Matched File Name':[start_word], 'Cosine':[start_cos]})])
    return result_df

def maping_task_names(words):
    df = cosine_mapping(words, standart_names)
    temp_dict = dict(zip(df['Activity Name'], df['Matched File Name']))
    df['Matched File Name'] = df['Activity Name'].apply(lambda x: helping_dict[x] if x in helping_dict else temp_dict[x])
    return df

def maping_measurements_names(mes):
    df = cosine_mapping(mes, standard_masurements)
    temp_dict = dict(zip(df['Activity Name'], df['Matched File Name']))
    df['Matched File Name'] = df['Activity Name'].apply(lambda x: helping_dict[x] if x in helping_dict else temp_dict[x])
    return df

