Nedevski / hass_kat_bulgaria

This is a custom component that checks periodically if you have any fines from KAT Bulgaria.
6 stars 1 forks source link

Let's get it back to work #4

Open BKirev opened 2 months ago

BKirev commented 2 months ago

Здравейте!

Тествах py_kat_bulgaria и изглежда, че работи нормално към момента.

Относно

Освен това не съм сигурен дали при проверка онлайн глобите не се броят за връчени - т.е. да започва да тече срока за плащане с 30% отстъпка.

image

Фиша е "проверяван" многократно както през уеб интерфейса, така и през скрипт. Както се вижда, отстъпката си остава.

Има ли нещо друго, което възпрепятства работата на интеграцията?

Nedevski commented 2 months ago

Не би трябвало да работи нормално? След ъпдейта на КАТ се промени модела на целия отговор..

Отделно от това се говореше, че при проверка онлайн ще се броят за връчени всички глоби и фишове, затова просто реших че автоматична проверка на всеки Х минути не е много добра идея.

Прилагам примерните формати:

Стар формат Нов формат
image image

Ако действително при наличие на глоби те не се броят на връчени, предполагам е дошло време за пренаписване както на библиотеката, така и на интеграцията.

Единственото което ми трябва са примерни JSONs от КАТ. Нямам идея какво са UnitGroup: 1 и UnitGroup: 2. Предполагам са глоби за скорост и глоби за паркиране, но трябва да се провери.

Бих се радвал да отвориш следния адрес, като замениш EGN_GOES_HERE и SUMPS_GOES_HERE с твоите данни, след което да качиш отговора тук (естествено след редактиране на всякакви лични данни)

https://e-uslugi.mvr.bg/api/Obligations/AND?obligatedPersonType=1&additinalDataForObligatedPersonType=1&mode=1&obligedPersonIdent=EGN_GOES_HERE&drivingLicenceNumber=SUMPS_GOES_HERE

Оттам нататък ще видим какво мога да направя.

BKirev commented 2 months ago

Здравей!

Под 'работи нормално', имах предвид, че получавам response. Не съм се изразил правилно.

Отделно от това се говореше, че при проверка онлайн ще се броят за връчени всички глоби и фишове, затова просто реших че автоматична проверка на всеки Х минути не е много добра идея.

Да се надяваме, че няма да решат да имплементират нещо подобно, тъй като някой може да реши да направи "услуга" на друг човек или група от хора. Въпреки че са необходими лични данни(ЕГН, рег. номер на автомобил/СУМПС) за проверката, знаем колко "добре" се пазят.

Макар че тази

"expirationDate": "2024-08-27T23:59:59",
"obligationDate": "2024-08-27T00:00:00",

част изглежда малко плашеща, понеже не съм я забелязвал до момента. Утре ще разберем дали всъщност прави нещо или само 'плаши гаргите', което е по-вероятно.

Ето и response с новия формат и стари(невръчени) фишове:

{
    "obligationsData": [
        {
            "unitGroup": 1,
            "errorNoDataFound": false,
            "errorReadingData": false,
            "obligations": [
                {
                    "status": 0,
                    "amount": 50,
                    "discountAmount": 35,
                    "bankName": "БНБ",
                    "bic": "BNBGBGSD",
                    "iban": "BG64BNBG96613100147701",
                    "paymentReason": "ЕЛ.ФИШ СЕРИЯ K XXXXXXX 08.10.2022",
                    "pepCin": "epayments_ais_client_521007bd-xxxx-xxxx-xxxx-xxxxxxxxxxx",
                    "expirationDate": "2024-08-27T23:59:59",
                    "obligationDate": "2024-08-27T00:00:00",
                    "obligationIdentifier": "KAT|TICKET|xxxxxxxx",
                    "type": 2,
                    "serviceID": 349,
                    "additionalData": {
                        "discount": "30",
                        "documentType": "TICKET",
                        "documentSeries": "K",
                        "documentNumber": "XXXXXXX",
                        "documentIdentifier": "xxxxxxxx",
                        "amount": "50",
                        "issueDate": "2022-10-08",
                        "obligedPersonIdent": "**********",
                        "obligedPersonIdentType": "person",
                        "vehicleNumber": "X XXXX XX",
                        "breachDate": "2022-07-17",
                        "breachOfOrder": "чл. 21, ал. 2, от ЗДвП"
                    },
                    "andSourceId": 1
                },
                {
                    "status": 0,
                    "amount": 50,
                    "discountAmount": 35,
                    "bankName": "БНБ",
                    "bic": "BNBGBGSD",
                    "iban": "BG64BNBG96613100147701",
                    "paymentReason": "ЕЛ.ФИШ СЕРИЯ K xxxxxxxx 18.10.2023",
                    "pepCin": "epayments_ais_client_521007bd-xxxx-xxxx-xxxx-xxxxxxxxxxx",
                    "expirationDate": "2024-08-27T23:59:59",
                    "obligationDate": "2024-08-27T00:00:00",
                    "obligationIdentifier": "KAT|TICKET|xxxxxxxx",
                    "type": 2,
                    "serviceID": 349,
                    "additionalData": {
                        "discount": "30",
                        "documentType": "TICKET",
                        "documentSeries": "K",
                        "documentNumber": "xxxxxxxx",
                        "documentIdentifier": "xxxxxxxx",
                        "amount": "50",
                        "issueDate": "2023-10-18",
                        "obligedPersonIdent": "**********",
                        "obligedPersonIdentType": "person",
                        "vehicleNumber": "XXXXXXX",
                        "breachDate": "2023-09-19",
                        "breachOfOrder": "чл. 21, ал. 2, от ЗДвП"
                    },
                    "andSourceId": 1
                }
            ]
        },
        {
            "unitGroup": 2,
            "errorNoDataFound": false,
            "errorReadingData": false,
            "obligations": []
        }
    ]
}
BKirev commented 2 months ago

Ето нещо набързо, което се надявам да помогне за py_kat_bulgaria, съответно и за тази интеграция: https://github.com/Nedevski/py_kat_bulgaria/pull/3

ПП: Не handle-вам "unitGroup": 2 към момента, защото нямам представа какво ще има там. Но определено трябва да се погледне, защото в текущия си вид pull заявката върши работа само за "unitGroup": 1

Nedevski commented 2 months ago

Прегледах PR-а, но мисля че библиотеката ще иска малко по-сериозно преправяне.

Относно unitGroup: 2 - теорията ми е че там отиват фишовете за неправилно паркиране, но докато не намеря човек с такъв фиш не мога да съм сигурен. Не искам да започвам нищо преди да съм сигурен, защото ако съм прав ще може да се връщат по-подробни резултати, включително в HomeAssistant.

В момента се опитвам да събера колкото мога повече JSONs от различни хора с нарушения, отворил съм issue в основната библиотека и ги слагам там, включително твоя.

Отделно от това с предишното им API имаше проблеми и падаше по 5-10 пъти на ден за по няколко минути. За тази цел имам един отделен проект който преди бях оставил няколко седмици да върви и да записва получените данни на всеки 5 мин. Това е за да се подсигури библиотеката спрямо очаквани грешки, в старата версия имаше 2 различни.

BKirev commented 2 months ago

Ех, чак ме хвана яд сега, защото през месец-два ми пишат фишове, че спирам пред гаража(тротоар, общинска земя). Ще се постарая да намеря и аз някой с такъв фиш, за да видя JSON response-а. В най-лошия случай ще се прежаля за поредния фиш за неправилно паркиране.