fix(etl): хващай стотинки грешката и по прогнозата на позицията (#247) - #304
Open
todorkolev wants to merge 1 commit into
Open
fix(etl): хващай стотинки грешката и по прогнозата на позицията (#247)#304todorkolev wants to merge 1 commit into
todorkolev wants to merge 1 commit into
Conversation
Лентата от #298 мери спрямо процедурната прогноза, тъй че вижда грешката само когато процедурата е с една позиция. При процедура с няколко позиции изтърваният десетичен знак пак стои на точно 100x прогнозата НА ПОЗИЦИЯТА, а съотношението към целия процедурен таван пада там, където го отвежда делът на позицията. Докладваният 00621-2020-0008 стои на 89,8x и се сервира като 14 212 416 EUR вместо около 142 000. Само смяна на знаменателя обаче е опасна и docs/etl.md го казва отдавна: при рамковите и unit-price процедури прогнозата на реда е ЕДИНИЧНА цена, а цял call-off законно я надхвърля многократно. Затова рамото е съюз - 95-105x собствената прогноза И поне 10x процедурната, прагът, който вече значи "неправдоподобно голямо за тази процедура". Call-off по единична цена стои на около 1x процедурната и се пощадява. Премерено през прогнозите на позициите: 7 договора, 40,3 млн. EUR показвани падат на 1,75 млн. Всичките са прегледани поединично и са безспорни - учебници за 2 938 EUR прогноза, показани като 293 778. Докладваният договор няма ред в lots, тъй че не влиза в тази бройка, но аритметиката го потвърждава: 14 212 416 / 100 = 277 970,6 лв, точно прогнозата от доклада. Тестът кара истинските скриптове по двата derive пътя и покрива и трите неща: хваща докладваната форма, НЕ пипа call-off при 100x единичната цена, и заковава пода на съюза - точно 10x минава, 8,9x не.
Test coverage
✅ No workspace dropped below its baseline (tolerance 0.5pp). 📈 Coverage rose by more than 1pp — run |
Open
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Довършва #247. Първата половина беше #298; това е втората.
Проблемът
Лентата от #298 мери спрямо процедурната прогноза, тъй че вижда изтървания десетичен знак само когато процедурата е с една позиция. При процедура с няколко позиции грешката пак стои на точно 100x прогнозата на позицията, а съотношението към целия процедурен таван пада там, където го отвежда делът на позицията.
Вторият договор от доклада,
00621-2020-0008, е точно такъв: стои на 89,8x процедурната прогноза, минава под лентата и се сервира като 14 212 416 € при реални около 142 000 €.Защо не просто смяна на знаменателя
Защото
docs/etl.mdотдавна записва обратното, и с основание: при рамковите и unit-price процедури (гориво, храни, лекарства) прогнозата на реда е единична цена, а цял call-off законно я надхвърля десетки пъти. Флаговете „твърде високо" ползват процедурната прогноза именно за да не изядат такъв договор.Затова новото рамо е съюз:
Десетократното не е ново число - това е съществуващият праг за
review, който вече значи „неправдоподобно голямо за тази процедура". Call-off по единична цена стои на около 1x процедурната и се пощадява.Ефект
Премерено през прогнозите на позициите: 7 договора, 40,3 млн. € показвани падат на 1,75 млн. Прегледани са поединично и всичките са безспорни:
Учебници с прогноза 2 938 € показани като 293 778 € - сигнатурата е недвусмислена.
Две уговорки, за да е честно измерването:
00621-2020-0008не е в таблицата, защото няма ред вlotsи заместителят, с който мерих, не го вижда. Аритметиката обаче го потвърждава: 14 212 416 / 100 = 277 970,6 лв, което е точно прогнозата, цитирана в доклада. Тоест реалният брой засегнати е над 7 и ще се уточни при зареждане.Реализация и тестове
Ново
own_est_eurв петте флагови пътя (2 вnormalize-raw.sql, 3 вrefresh-slice.sql), плюс рамото в самите CASE-ове. В reconciliation паса се ползва вече наличнатаclassifier_estimated_value- собствената прогноза на реда с процедурната като резервен вариант.Тестът кара истинските скриптове по двата derive пътя срещу истинска sqlite и покрива и трите неща:
packages/dbминава изцяло (единственото падане в средата е предсъществуващият артефакт с глобалния wrangler вship-domain.test.ts, файл, който не е пипан).Какво остава извън обхвата
Поправката връща стойността към процедурната прогноза, установената котва за
value_suspect. При тези договори тя е малко над позиционната - за докладвания случай 158 347 € вместо 142 124 €. По-точно би било да се връща към позиционната, когато е пламнало позиционното рамо, но това е втора котва на пет места и заслужава отделно решение.