prozorro-sale issueshttps://gitlab.prozorro.sale/groups/prozorro-sale/-/issues2024-03-19T12:42:48+02:00https://gitlab.prozorro.sale/prozorro-sale/auction/-/issues/257generate_auction_report не коректный импорт csv to xls2024-03-19T12:42:48+02:00Pavel Kuzmenkogenerate_auction_report не коректный импорт csv to xlsесли в репорте, было несколько активных сесий, то ломаеться импорт в иксель из-за запятой
```
4d7b213825b04dd7ac,ТОВАРИСТВО,10.55.30.24 (Chrome),10.09.2023,20:00:01,Автентифікація учасника з айпі 10.55.30.24
4d7b213825b04dd7ac,ТОВАРИСТВО...если в репорте, было несколько активных сесий, то ломаеться импорт в иксель из-за запятой
```
4d7b213825b04dd7ac,ТОВАРИСТВО,10.55.30.24 (Chrome),10.09.2023,20:00:01,Автентифікація учасника з айпі 10.55.30.24
4d7b213825b04dd7ac,ТОВАРИСТВО",10.55.93.175 (Chrome), 10.55.30.24 (Chrome),10.09.2023,22:47:57,Автентифікація учасника з айпі 10.55.30.24
```
заменить разделитель с , на /
```
'active_sessions': "/ ".join([f"{session['ip']} ({session['browser']})" for session in sessions]),
```Vitalii CherednichenkoVitalii Cherednichenkohttps://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/867[ЗПА] Реалізувати JS для відображення попа та динамічної формою.2024-03-28T19:17:21+02:00Pavel Kuzmenko[ЗПА] Реалізувати JS для відображення попа та динамічної формою.Вимоги [**тут**](https://confluence-sale.prozorro.org/pages/viewpage.action?pageId=167674083)\
Макет [**тут**](https://www.figma.com/file/jX7EcQflKPB6s4ErCyTqDO/Prozorro-Sale-Client?type=design&node-id=14691-134634&mode=design&t=bXKhgqv8...Вимоги [**тут**](https://confluence-sale.prozorro.org/pages/viewpage.action?pageId=167674083)\
Макет [**тут**](https://www.figma.com/file/jX7EcQflKPB6s4ErCyTqDO/Prozorro-Sale-Client?type=design&node-id=14691-134634&mode=design&t=bXKhgqv8SVwwNMY9-4)
При натисканні на кнопку має відображатися форма в попапі. Форма повинна формуватися із переданої схеми, за аналогією з сюрвеєм (але без запитів по мережі)
саму схему беремо із тіла сторінки
```plaintext
<script id="data" type="application/json">{"org": 10, "items":["one","two"]}</script>
var data = JSON.parse(document.getElementById('data').textContent);
```v3.97.0Bogdan SlusarenkoBogdan Slusarenkohttps://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/866[ЗПА] Створити CMS плагін Заявка на підбір аукціону2024-03-29T00:26:25+02:00Pavel Kuzmenko[ЗПА] Створити CMS плагін Заявка на підбір аукціонуПлагін являє собою кнопку з текстом і картинкою
При натисканні на кнопку відкривається попапом форма
![image](/uploads/54ff1d986b1285f38adeb48b1dfaab92/image.png)
JS форми зробить окремо богдан. Там має бути динамічна побудова форми, ...Плагін являє собою кнопку з текстом і картинкою
При натисканні на кнопку відкривається попапом форма
![image](/uploads/54ff1d986b1285f38adeb48b1dfaab92/image.png)
JS форми зробить окремо богдан. Там має бути динамічна побудова форми, схожа на сюрвей
Різниця з сюрвей полягає в тому, що ми не робимо запити по мережі на отримання форми, а схема форми надається відразу в HTML приблизно так
```plaintext
<script id="data" type="application/json">{"org": 10, "items":["one","two"]}</script>
```
У формі є обов'язкові поля та додаткові![image](/uploads/ed8d1e06a7b613a539303d40b601a571/image.png)Дод. поля працюють за аналогією з сюрвеєм, за винятком того, що налаштування їх зберігатиметься відразу в інстансі моделі плагіна
Налаштування пропонується зберігати в JSONField (marketplace_portal.jsonforms.models.fields.JSONField)
Для збереження форми треба подивитися убік get_plugin_urls
https://docs.django-cms.org/en/latest/reference/plugins.html#cms.plugin_base.CMSPluginBase.get_plugin_urls
Якось вот так
```plaintext
class AuctionRequest(CMSPluginBase):
name = _("AuctionRequest")
allow_children = False
model = AuctionRequestModel
render_template = "....../auction_request.html"
def render(self, context, instance, placeholder):
context = super().render(context, instance, placeholder)
context['form_url'] = reverse("admin:auction_request_save", kwargs={"plugin_id": instance.id})
return context
def get_plugin_urls(self):
urlpatterns = [
re_path(r'^auction_request_save/<plugin_id>/$', self.auction_request_save, name='auction_request_save'),
]
return urlpatterns
def auction_request_save(self, request):
...
```v3.97.0Anastasiia LeshkevychAnastasiia Leshkevychhttps://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/860[Сторінка Партнери]Кнопка згорнути на секунду відображається при завантаженні...2024-02-28T17:42:36+02:00Vladislav Shepelenko[Сторінка Партнери]Кнопка згорнути на секунду відображається при завантаженні сторінки в катрці з маленьким описом (mobile)**Кроки:**
1. Відкрити мобільний браузер
1. Перейти на сторінку партнерів https://marketplace-dev.prozorro.sale/partneri
1. Звернути увагу на картку партнера з маленьким описом
1. Оновити сторінку
**Актуальний результат**
![Screenreco...**Кроки:**
1. Відкрити мобільний браузер
1. Перейти на сторінку партнерів https://marketplace-dev.prozorro.sale/partneri
1. Звернути увагу на картку партнера з маленьким описом
1. Оновити сторінку
**Актуальний результат**
![Screenrecorder-2024-02-21-20-11-48-474](https://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/uploads/be18c893dc22021088aa320a24edd209/Screenrecorder-2024-02-21-20-11-48-474.mp4)v3.x.xAnastasiia LeshkevychAnastasiia Leshkevychhttps://gitlab.prozorro.sale/prozorro-sale/billing/-/issues/146[Billing] Некоректне визначення ownerName2024-03-11T14:00:51+02:00Vitalii Cherednichenko[Billing] Некоректне визначення ownerNameДля [ендпоінта](https://procedure.prozorro.sale/api/billing/accountData/fromDate/2023-03-16) визначаємо ownerName
Поточна логіка передбачує, що це має бути значення bid.owner і якщо ми не можемо його визначити беремо procedure.owner
`w...Для [ендпоінта](https://procedure.prozorro.sale/api/billing/accountData/fromDate/2023-03-16) визначаємо ownerName
Поточна логіка передбачує, що це має бути значення bid.owner і якщо ми не можемо його визначити беремо procedure.owner
`winnerOwner = bid.get('owner', procedure.owner)`
На даний час є помилка в визначенні біда тому завжди заповнюємо значенням procedure.ownerValeriiaValeriiahttps://gitlab.prozorro.sale/prozorro-sale/protocol-service/-/issues/203[SSW, NLE] Дата формування протоколу відображається не коректно2024-03-13T13:37:08+02:00Vitalii Cherednichenko[SSW, NLE] Дата формування протоколу відображається не коректноДля випадку якщо було дискваліфіковано 2 учасників, в полі **Протокол електронного аукціону сформовано:** буде відображатися дата модифікаціі першого аварду, а не 2 аварда
[протокол](https://procedure-dev.prozorro.sale/api/protocol/NLE0...Для випадку якщо було дискваліфіковано 2 учасників, в полі **Протокол електронного аукціону сформовано:** буде відображатися дата модифікаціі першого аварду, а не 2 аварда
[протокол](https://procedure-dev.prozorro.sale/api/protocol/NLE001-UA-20221115-89415/print)
[процедура](https://procedure-dev.prozorro.sale/api/search/byAuctionId/NLE001-UA-20221115-89415)
By analyst:
У нас існують тільки дві процедури, де є можливість кваліфікувати більше двох учасників: SSW та NLE.
Необхідно додати логіки: якщо дискваліфікують другого учасника(Учасник_1), то **Протокол електронного аукціону сформовано:** має бути procedure.Awards[0].dateModified
Якщо дискваліфікують Учасника_N, то дата **Протокол електронного аукціону сформовано:**
== procedure.Awards[n-1].dateModified
ВАЖЛИВО!
В коді
```python
def _has_unsuccessful_winner_award(self):
"""Check for winner award status is unsuccessful or cancelled
Returns:
bool:
"""
return self.proc_obj['awards'][0]['status'] in {'unsuccessful', 'cancelled'}
```
необхідно враховуввти тільки Awards у статусі unsuccessful.
Авард, якого кваліфікують не може набути статусу cancelled. А може трапитись ситуація, коли є два Аварди і кваліфікують пешого. В цей час другий "відмовився від очікування" (pending_waiting --> cancelled) і в такому випадку Дата формування протоколу НЕ має помінятися для Першого Аварду!
Іншими словами: Дата формування протоколу Учасника, якого кваліфікують, має бути awards[].dateModified того Аварда, який останній набув статусу unsuccessful. Ігноруємо Аварди, які переходять у статус cancelled
Так як станом на 01.03.24 немає продових реальних процедур вказаних напрямків, де б відтворилася ситуація з дискваліфікацією більше одного учасника, то зміни вносимо для всіх існуючих протоколів.Vitalii CherednichenkoVitalii Cherednichenkohttps://gitlab.prozorro.sale/prozorro-sale/change-requests/-/issues/341Пошук на порталі2024-03-11T13:16:51+02:00Andrii SaliiПошук на порталіПриклади сценаріїв \
1. Запит “Глушкова Академіка” - 1й результат пошукової видачі https://prozorro.sale/auction/ALE001-UA-20240209-78283/ В назві адреси місцезнаходження є слово “академіка”. При цьому на момент виконання пошуку присту...Приклади сценаріїв \
1. Запит “Глушкова Академіка” - 1й результат пошукової видачі https://prozorro.sale/auction/ALE001-UA-20240209-78283/ В назві адреси місцезнаходження є слово “академіка”. При цьому на момент виконання пошуку пристуні аукціони у статусі прийняття заяв на участь, де у назві торгів та у розміщенні присутня фраза “Глушкова Академіка” (https://prozorro.sale/auction/RLE001-UA-20240206-32616/)
2. Запит “7124981000:01:001:0022” - 1й результат пошукової видачі https://prozorro.sale/auction/BSD001-UA-20240220-27896/. При цьому на моент виконання пошуку є аукціон у статусі прийняття заяв на участь з ділянкою за вказаним кадастровим номером https://prozorro.sale/auction/LAP001-UA-20240129-81096/
3. Для запитів де користувач шукає конкретний аукціон по кадастровому номеру (формат 7124981000:01:001:0022) звузуити результат пошукової видачі та не виводити аукціони з іншим кадастровим номером
4. Для запитів де користувач шукає по конткретній судовій справі (формат "n/n/хх", де n відповідає будь-якій кількості числових символів, хх - 2 чсилові символи)Olga KochubynskaOlga Kochubynskahttps://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/858[Майданчикам] Набір документів під Напрям Роботи (AdvancedDocumentPlugin - Пе...2024-03-21T10:52:27+02:00Pavel Kuzmenko[Майданчикам] Набір документів під Напрям Роботи (AdvancedDocumentPlugin - Перший варіант реалізації)![image](/uploads/b2997e7c543db8e26ce64a69d79be30d/image.png)
Всі документи [тут](https://drive.google.com/drive/folders/13a1YGGz4ADpNJMj37e5HGbALXd4U-XI_?usp=drive_link)
Почитати [тут](https://confluence-sale.prozorro.org/pages/vi...![image](/uploads/b2997e7c543db8e26ce64a69d79be30d/image.png)
Всі документи [тут](https://drive.google.com/drive/folders/13a1YGGz4ADpNJMj37e5HGbALXd4U-XI_?usp=drive_link)
Почитати [тут](https://confluence-sale.prozorro.org/pages/viewpage.action?pageId=148411457#:~:text=%D0%A7%D0%B8%D0%BD%D0%BD%D1%96%20%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B8%20%D0%B4%D0%BB%D1%8F%20%D0%B0%D0%BA%D1%80%D0%B5%D0%B4%D0%B8%D1%82%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%85%20%D0%9C%D0%B0%D0%B9%D0%B4%D0%B0%D0%BD%D1%87%D0%B8%D0%BA%D1%96%D0%B2)v3.98.0Pavel KuzmenkoPavel Kuzmenkohttps://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/857[Популярні сутності] - переробити логіку2024-02-22T13:01:33+02:00Denis Brekhunov[Популярні сутності] - переробити логікуtag - `<ul>` должен содержать `<li>`
![Снимок_экрана_2024-02-21_в_18.43.04](/uploads/7a40386244e544bf9469802dc9a149ac/Снимок_экрана_2024-02-21_в_18.43.04.png)![Снимок_экрана_2024-02-21_в_18.45.50](/uploads/03a1c1433f0f7aa9165426ff5a3f0fe...tag - `<ul>` должен содержать `<li>`
![Снимок_экрана_2024-02-21_в_18.43.04](/uploads/7a40386244e544bf9469802dc9a149ac/Снимок_экрана_2024-02-21_в_18.43.04.png)![Снимок_экрана_2024-02-21_в_18.45.50](/uploads/03a1c1433f0f7aa9165426ff5a3f0fe7/Снимок_экрана_2024-02-21_в_18.45.50.png)ТЕХБОРГDenis BrekhunovDenis Brekhunovhttps://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/856Заявка на підбір аукціону2024-03-21T10:52:53+02:00Philipfilip.kuzmin@prozorro.saleЗаявка на підбір аукціонуВимоги **[тут](https://confluence-sale.prozorro.org/pages/viewpage.action?pageId=167674083)**
Макет **[тут](https://www.figma.com/file/jX7EcQflKPB6s4ErCyTqDO/Prozorro-Sale-Client?type=design&node-id=14691-134634&mode=design&t=bXKhgqv8S...Вимоги **[тут](https://confluence-sale.prozorro.org/pages/viewpage.action?pageId=167674083)**
Макет **[тут](https://www.figma.com/file/jX7EcQflKPB6s4ErCyTqDO/Prozorro-Sale-Client?type=design&node-id=14691-134634&mode=design&t=bXKhgqv8SVwwNMY9-4)**v3.97.0Anastasiia LeshkevychAnastasiia Leshkevychhttps://gitlab.prozorro.sale/prozorro-sale/procedure/-/issues/2064Провести аналіз та за потреби завести нові задачі на виправлення2024-02-29T10:29:25+02:00Vitalii CherednichenkoПровести аналіз та за потреби завести нові задачі на виправлення1. В процедурі банкрутства для айтема з типом **land** додається 2 обов‘язкових поля
```
bankRuptcy.LandProps:
- utilitiesAvailability
- specialLandPurpose
```
В айтемі з типом **jointPropertyComplex** обов‘язковим є поле **landPro...1. В процедурі банкрутства для айтема з типом **land** додається 2 обов‘язкових поля
```
bankRuptcy.LandProps:
- utilitiesAvailability
- specialLandPurpose
```
В айтемі з типом **jointPropertyComplex** обов‘язковим є поле **landProps** але ці поля не додаються
Чи треба розширити набір обов‘язкових полів також для **jointPropertyComplex.landProps**?
2. В деяких процедурах додається поле **landIntendedUse** до LandProps
Чи має це поле бути в процедурах **landArrested, landRental, landSell** та **simpleSell**
```
commercialSell.LandProps:
type: object
title: commercialSell.LandProps
allOf:
- $ref: ‘#/components/schemas/base.LandProps’
- type: object
properties:
landIntendedUse:
type: string
x-legalNameUa: Поточне використання земельної ділянки
x-legalNameEn: Land intended use
```https://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/855[Safari] Скрол сторінки процедури при відкритому вікні перегляду документів у...2024-02-28T17:42:00+02:00Vladislav Shepelenko[Safari] Скрол сторінки процедури при відкритому вікні перегляду документів учасників**Precondition**
- Safari
- iPhone 12
**Steps**
1. Перейти на сторінку процедури після аукціону (https://marketplace-sandbox.prozorro.sale/auction/RCD001-UA-20240214-76592/)
2. Відкрити табу "Інформація про проведення"
3. Натиснути н...**Precondition**
- Safari
- iPhone 12
**Steps**
1. Перейти на сторінку процедури після аукціону (https://marketplace-sandbox.prozorro.sale/auction/RCD001-UA-20240214-76592/)
2. Відкрити табу "Інформація про проведення"
3. Натиснути на посилання "Список документів"
4. Виконати свайп за межами модального вікна
**Actual result**
Відбувається скрол сторінки аукціону на фоні відкритого модального вікна
![rpreplay-final1708382370_caiQe46r](/uploads/ac8fb06cd9721ab677dd197eff480c2b/rpreplay-final1708382370_caiQe46r.mp4)
**Expected result**
Скрол сторінки не можливий якщо відкрито модальне вікноv3.x.xDenis BrekhunovDenis Brekhunovhttps://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/854[Mobile iOS] Автоматичне приближення при фокусуванні на полях фільтрів з типо...2024-02-28T17:30:59+02:00Vladislav Shepelenko[Mobile iOS] Автоматичне приближення при фокусуванні на полях фільтрів з типом пошук по тексту**Бізнес контекст**
Це не юзаіліти оскільки автоматичної відміни приближення не відбувається тому користувач змушений сам зменшувати розмір до дефолтного
**Precondition**
- Safari
- iOS
**Steps**
1. Перейти на сторінку пошуку https:/...**Бізнес контекст**
Це не юзаіліти оскільки автоматичної відміни приближення не відбувається тому користувач змушений сам зменшувати розмір до дефолтного
**Precondition**
- Safari
- iOS
**Steps**
1. Перейти на сторінку пошуку https://marketplace-sandbox.prozorro.sale/auction/
2. Відкрити панель фільтрів
3. Знайти текстове пошукове поле (Наприклад Ідентифікатор аукціону)
4. Тапніть по полю для вводу
**Actual result**
Відбувається автоматичне приближення
![rpreplay-final1708379837_TbGzyIfh](/uploads/6f9f94bf32e5684d7f3ee24d26425dd4/rpreplay-final1708379837_TbGzyIfh.mp4)
**Expected result**
Авто приближення не має відбуватисяDenis BrekhunovDenis Brekhunovhttps://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/853[Mobile] Тест банеру приховано формою пошуку2024-02-28T17:09:48+02:00Vladislav Shepelenko[Mobile] Тест банеру приховано формою пошуку**Preconditions**
- Мобільне розширення екрану
- Заголовок Банеру містить максимальну кількість символів
**Step to reproduce**
1. Перейти на сторінку з банером за допомогою мобільного браузеру
**Actual result**
Частину тексту прихо...**Preconditions**
- Мобільне розширення екрану
- Заголовок Банеру містить максимальну кількість символів
**Step to reproduce**
1. Перейти на сторінку з банером за допомогою мобільного браузеру
**Actual result**
Частину тексту приховано за банером
![image](/uploads/1a8e1d8d86bececb3e73a1024f4ba449/image.png)
**Expected result**
В мобільній адаптації форма пошуку не накладається на блок з банером
![image](/uploads/2029e30e0f362142285431118b047f23/image.png)Denis BrekhunovDenis Brekhunovhttps://gitlab.prozorro.sale/prozorro-sale/change-requests/-/issues/340Доаповнити інформацію в енпоінті для експорту відповідей опитування2024-02-15T15:54:13+02:00Andrii SaliiДоаповнити інформацію в енпоінті для експорту відповідей опитуванняДля ендпоінту, що був створений у расках задачі https://gitlab.prozorro.sale/prozorro-sale/survey/-/issues/89 і використовується для експорту відповідей у модуль аналітики, додати поле з id питання. Це потрібно для можливості на стороні...Для ендпоінту, що був створений у расках задачі https://gitlab.prozorro.sale/prozorro-sale/survey/-/issues/89 і використовується для експорту відповідей у модуль аналітики, додати поле з id питання. Це потрібно для можливості на стороні модулю аналітики виключати з розрахунку показників окремі питання. \
**AR**: ендпонт не повертає id питання \
**ER**: разом з існуючими даними повертати id питанняOlga KochubynskaOlga Kochubynskahttps://gitlab.prozorro.sale/prozorro-sale/auction-frontend/-/issues/994Перевірка відображення фронту аукціонів ЦБД22024-03-21T10:53:13+02:00Olga KochubynskaПеревірка відображення фронту аукціонів ЦБД2- проаналізувати з Славою які поля необхдні для відображення аукціону у статусі завершено
- коли зробиться міграція додатково продивитися чи всі поля присутні- проаналізувати з Славою які поля необхдні для відображення аукціону у статусі завершено
- коли зробиться міграція додатково продивитися чи всі поля присутніv3.97.0Bogdan SlusarenkoBogdan Slusarenkohttps://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/847Регресс Портал v1.24.02024-02-23T01:56:45+02:00Vladislav ShepelenkoРегресс Портал v1.24.0**Зміни**
https://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/?sort=created_date&state=closed&milestone_title=v3.93.0&first_page_size=20
**Оточення**
https://marketplace-sandbox.prozorro.sale/
**Тест кейси****Зміни**
https://gitlab.prozorro.sale/prozorro-sale/marketplace-portal/-/issues/?sort=created_date&state=closed&milestone_title=v3.93.0&first_page_size=20
**Оточення**
https://marketplace-sandbox.prozorro.sale/
**Тест кейси**Vladislav ShepelenkoVladislav Shepelenkohttps://gitlab.prozorro.sale/prozorro-sale/change-requests/-/issues/339[APE, APD] Зміни в білінгу і протоколах по процедурам АРМА2024-02-08T13:21:03+02:00Philipfilip.kuzmin@prozorro.sale[APE, APD] Зміни в білінгу і протоколах по процедурам АРМА1. **Білінг**. Необхідно додати дві нові змінні і логіку їх розрахунку:
1.1. "**balanceWinnerToOrganizer**"
Опис логіки розрахунку [тут](https://confluence-sale.prozorro.org/pages/viewpage.action?pageId=148412826) у **п.5**
1.2. "*...1. **Білінг**. Необхідно додати дві нові змінні і логіку їх розрахунку:
1.1. "**balanceWinnerToOrganizer**"
Опис логіки розрахунку [тут](https://confluence-sale.prozorro.org/pages/viewpage.action?pageId=148412826) у **п.5**
1.2. "**balanceWinnerToOperator**"
Опис логіки розрахунку [тут](https://confluence-sale.prozorro.org/pages/viewpage.action?pageId=148412826) у **п.6**
У обох змінних є залежність від інших розрахунків.
2. **Протоколи.** Необхідно внести зміни у шість шаблонів згідно опису [тут](https://docs.google.com/document/d/1m9vn9K2Q1O_6T7vuMFr3jWJtA9d1tW66Q2xVMsUkjuM/edit)
Зміни необхідно застосувати для всіх існуючих і ще не створених обʼєктів
Тестові приклади [тут](https://docs.google.com/spreadsheets/d/10L9Hyx3OQSieLdOxcEcCTQkZXPbfZHAkfPQ3Up5Mmuc/edit#gid=312101883)Liudmyla ZdryliukLiudmyla Zdryliuk2024-03-11https://gitlab.prozorro.sale/prozorro-sale/procedure/-/issues/2058Обмеження роботи з процедурами(only get)2024-03-21T18:06:17+02:00Olga KochubynskaОбмеження роботи з процедурами(only get)Створити ендпоінт з доступом до процедур ЦБД2 лише через get procСтворити ендпоінт з доступом до процедур ЦБД2 лише через get procv3.97.0Viacheslav SukhovieievViacheslav Sukhovieievhttps://gitlab.prozorro.sale/prozorro-sale/prozorro-auth/-/issues/22KeyError не информативно и не коректно, вывывать свое исключение2024-03-01T12:20:09+02:00Pavel KuzmenkoKeyError не информативно и не коректно, вывывать свое исключениеНеобходимо обработать исключение и задать логику рейса своей ошибки которая будет обьяснять причину без ненужного Traceback
Написать тесты
```
| [2024-02-06T09:51:01.174Z] | aiohttp.access | INFO - "85.209.44.92 GET /api/auth/auction?t...Необходимо обработать исключение и задать логику рейса своей ошибки которая будет обьяснять причину без ненужного Traceback
Написать тесты
```
| [2024-02-06T09:51:01.174Z] | aiohttp.access | INFO - "85.209.44.92 GET /api/auth/auction?token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEyMyIsImR1ciI6ODY0MDAsImJpZCI6MTIzLCJpc3MiOiJwcm96b3Jyby5hcGkifQ.TvD1IdYDJfPMdLuaIIJtnxB5BSYfdy2FN6_o9Ww4LTDlIPPg2r4cLMQ8sixGsLhxnuH71ZYbZh4rY-UH8hdbGhRwAV7DqOOKhjbLd965DC3vciU8i2xpqOmt4Ulr3zvEuHMGKx0mynFCGmPN_dng9_JVa_6qfK8byWGgtTcLQuRgp4ibjIRDdn2dbTi8w8L5PJuk1uasTCqC4QVuTAm0EcfXW8hvv9fxXlv3W3vonNlDL49Phv4_8_ib53snQ6wT0vDBYQ7vytIVTUnTorWnrEvdQCxBHdU1iBu8fTDYCx2PB691n2pMlDXk1jUc1O2xHU4KMjES0KevzyMFK2sqLQ HTTP/1.1 500 272 https://procedure-sandbox.prozorro.sale/api/doc Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.85 Safari/537.36 0.001000 " | X-Request-ID: 17AC7F000001AE607F000001005065C2010544D53C19 |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
[2024-02-06T09:51:01.174Z] | prozorro_sale.tools.errors | ERROR - Unknown error caught in API - 'kid' | X-Request-ID: 17AC7F000001AE607F000001005065C2010544D53C19
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/prozorro_sale/tools/errors.py", line 48, in handler
return await func(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/prozorro_sale/tools/errors.py", line 108, in _catch_error_middleware
return await handler(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/prozorro_sale/auth/__init__.py", line 269, in context_middleware
return await handler(request)
File "/auth/prozorro_sale/auth_service/api/api.py", line 91, in auth_auction
data = utils.get_token(request)
File "/auth/prozorro_sale/auth_service/utils.py", line 25, in get_token
return decode_token(token)
File "/auth/prozorro_sale/auth_service/utils.py", line 109, in decode_token
key_id = jwt.get_unverified_header(token)['kid']
KeyError: 'kid'
```
а также
```
[2024-02-06T09:51:57.459Z] | aiohttp.access | INFO - "85.209.44.92 GET /api/auth/auction?token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imh0dHA6Ly92NTF6MDZmOHBub2czb2w3M29wend5cW0zZDk0eHdsbC5vYXN0aWZ5LmNvbSJ9.eyJpZCI6IjEyMyIsImR1ciI6ODY0MDAsImJpZCI6MTIzLCJpc3MiOiJwcm96b3Jyby5hcGkifQ.pPl4Bd17IjLMO3CLg9f2hYXs2O3rh1UhRpz6t32d8gUW9W1t5aeTtqhE4PP3U1zDKF3zUZ8-dbYcNP2X_Ou7-PJS3FvJH_rUgGkuNVyqjgihgN0dezCG9lNraE3_5aA1ID6Yx2xpaXvrK4PmQrGWL0P04OFUKVjaDsoXuTAwQ4aUNJz7LuKaICdaVwlBBALudva3dq84aoCSrkEm_lZdWlX64CDDfMdf8xsrrjXMB9WjtSL90R63EkmhrHSgwR735oe2X8ouOulr0JI56TZMKBBpvoJT3eTkpUvG1Vchcala6umAFbh63v0hTEVeZWGhMWURngrD1HrPCfWLGCT5aQ HTTP/1.1 500 273 https://procedure-sandbox.prozorro.sale/api/doc Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.85 Safari/537.36 0.001000 " | X-Request-ID: 17AC7F000001B2287F000001005065C2013D198D54033
```
```
[2024-02-06T09:51:57.458Z] | prozorro_sale.tools.errors | ERROR - Unknown error caught in API - 'http://v51z06f8pnog3ol73opzwyqm3d94xwll.oastify.com' | X-Request-ID: 17AC7F000001B2287F000001005065C2013D198D54033
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/prozorro_sale/tools/errors.py", line 48, in handler
return await func(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/prozorro_sale/tools/errors.py", line 108, in _catch_error_middleware
return await handler(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/prozorro_sale/auth/__init__.py", line 269, in context_middleware
return await handler(request)
File "/auth/prozorro_sale/auth_service/api/api.py", line 91, in auth_auction
data = utils.get_token(request)
File "/auth/prozorro_sale/auth_service/utils.py", line 25, in get_token
return decode_token(token)
File "/auth/prozorro_sale/auth_service/utils.py", line 110, in decode_token
key = REGISTERED_KEYS[key_id]
KeyError: 'http://v51z06f8pnog3ol73opzwyqm3d94xwll.oastify.com'
```Vitalii CherednichenkoVitalii Cherednichenko