Repository navigation
fix(etl): каноничното име на възложителя (MIN на името) подвежда при споделен ЕИК — поръчки на МОН излизат под училище #194
Description
Activity
- addedbugНещо не работиНещо не работиdata-qualityКачество/коректност на данните (ETL, регистри)Качество/коректност на данните (ETL, регистри)etlОбласт: etlОбласт: etlpriority: highВисок приоритетВисок приоритет
on Jul 3, 2026 - added a commit that references this issue
on Jul 5, 2026 Двата PR-а решават #194, но и двата са на един и същ branch
fix/authority-canonical-name(от различни fork-ове) → ще се конфликтнат поnormalize-raw.sql+refresh-slice.sql; само единият може да влезе. Проверено локално:- И двата фиксват самото fix(etl): каноничното име на възложителя (MIN на името) подвежда при споделен ЕИК — поръчки на МОН излизат под училище #194 коректно: за ЕИК
000695114модата (620 реда) избира МОН преди какъвто и да е tie-break. Ключътauth:ЕИКе непокътнат и в двата (slug/URL не мърдат). - fix(etl): canonical authority name by frequency-mode + curated override, not MIN() (#194) #215 (@cefothe): windowed CTE + курирана
authority_name_overridesтаблица, обхват само fix(etl): каноничното име на възложителя (MIN на името) подвежда при споделен ЕИК — поръчки на МОН излизат под училище #194, ADR. Tie-break: по-късо име. - fix(etl): authority/executor identity — canonical name, EIK checksum, multi-ЕИК guard (#194 #195 #196) #203 (@StanislavBG): корелиран subquery, без override; плюс Cyrillic-aware mixed-case предпочитание (хубаво). Но е 3-в-1 — носи и fix(etl): eik_valid е само синтактична проверка без контролна сума — служебни/сгрешени ЕИК обединяват несвързани изпълнители #195 (ЕИК checksum → разцепва слети bidder-и, мести
won_eur/фасети) и fix(etl): многоЕИК-ови стойности в authority_eik се ключат като един несъществуващ възложител (~406 реда) #196 (NOT LIKE '%;%'маха ~405 joint-procurement възложителя от rollup-ите). Tie-break: по-дълго име.
Материалната разлика не е посоката на tie-break (по-късо хваща абревиатури като „МОН", по-дълго хваща съставни „дете–родител" имена — нито едното не е универсално вярно), а че само #215 има курирания override — детерминистичен изход при мода-на-типо/дрейф за бюджетните тела (които ги няма в ТР). Това е решаващото за #194.
Предложение: за самото #194 — #215 (обхватен, override, ADR); #203 да влезе само след като #195/#196 се извадят в отделни PR-и (променят authority/bidder агрегати — извън обхвата на #194). Изборът е на @todorkolev.
- И двата фиксват самото fix(etl): каноничното име на възложителя (MIN на името) подвежда при споделен ЕИК — поръчки на МОН излизат под училище #194 коректно: за ЕИК
lyubomir-bozhinov commented
on Jul 16, 2026 CollaboratorMore actionsТриаж: адресира се от два PR-а — #203 (@StanislavBG, „Fixes #194", покрива и #195/ЕИК checksum) и #215 (@cefothe, „Closes #194", каноничното име по frequency-mode). И двата ще затворят #194 при merge и се припокриват по каноничното име на възложителя. Нужно е решение кой води и в какъв ред се merge-ват, за да не се дублира логиката.
- added a commit that references this issue
on Jul 17, 2026 - added 4 commits that reference this issue
on Jul 23, 2026 Затворено от PR #251 (merged 2026-07-23) - каноничното име и видът на възложителя вече се избират по честотна мода, а не с
MIN()/MAX().scripts/normalize-raw.sqlградиauthority_canonical_nameиauthority_canonical_typeс прозоречен CTE над броя срещания, с детерминирани tie-break-ове. За ЕИК 000695114 модата (620 договорни реда) избира МОН преди какъвто и да е tie-break; ключътauth:ЕИКе непокътнат, така че адресите не мърдат.Работата дойде през разделянето на #203 на фокусирани PR-и; #215 на @cefothe покриваше същото и е затворен в полза на този път.
Симптом (потребителски сигнал)
Профилът на "БСУ „Д-р Петър Берон" - МОН" показва обществени поръчки за много големи суми (национален достъп до Elsevier / Web of Science, доставки на компютри за ученици, платформата „Дигитална раница", лицензи Microsoft). Това създава впечатление, че възложител е училище, което изглежда невярно.
Първопричина
Възложителите се дедупликират по ЕИК, а изписваното име се избира с
MIN(authority_name)вscripts/normalize-raw.sql(редове 47-56):MIN()връща азбучно най-ранния низ. В кирилицата „Б..." (БСУ) се нарежда преди „М..." (Министерство), затова печели училищното съставно име, а не името на министерството.Доказателства (проверени срещу обслужващата база)
МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА(доминиращ, 620 договорни реда / 444 реда обявления),БСУ „Д-Р ПЕТЪР БЕРОН", Прагаи съставнотоБСУ „Д-Р ПЕТЪР БЕРОН" - МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА.auth:000695114: 285 договора, 295 946 730 EUR (SUMamount_eur), 272 обявления. Най-големите пера са безспорно министерски: 32.2M EUR устройства с Windows за ученици, 18.0M + 11.6M + 6.4M EUR национален достъп до Elsevier / Web of Science, 17.0M EUR Chromebook-програма, 13.2M EUR „Дигитална раница", 9.3M EUR лицензи Microsoft.Класификация
Дефект в избора на изписваното име върху реалност на споделен ЕИК. Договорите са коректно свързани с ЕИК-а на МОН - обединяването е правилно (едно юридическо лице). Не е сгрешен ЕИК в изходните данни и не е визуален проблем на клиента.
Предложения за корекция (с компромиси)
MIN(). За този случай избира „МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА" (620 реда) вместо съставното. Евтино. Недостатък: mode може да улучи вариант само с главни букви - трябва тайбрек (напр. предпочитане на смесен регистър / най-скорошния).tr-companies- нужно е picване от административен регистър.Бележка за адресите: слъговете на възложителите/фирмите се ключат по ЕИК (
packages/db/src/queries/identity.ts), затова опции 1-3 сменят само надписа, не адреса (URL остава стабилен).Свързани
eik_validбез контролна сума и за многоЕИК-овите редове).