Skip to content

WTEL-8487: Restrict has_file filter to call recordings in calls history - #454

Merged
vlad-marusyk-wt merged 2 commits into
mainfrom
fix/WTEL-8487/history-has-file-filter
Aug 13, 2026
Merged

WTEL-8487: Restrict has_file filter to call recordings in calls history#454
vlad-marusyk-wt merged 2 commits into
mainfrom
fix/WTEL-8487/history-has-file-filter

Conversation

@vlad-marusyk-wt

Copy link
Copy Markdown
Contributor

Проблема

Фільтр "Запис розмови" у розділі History (has_file=true в /api/calls/history) повертав дзвінки з будь-яким прикріпленим файлом: скріншотами, записами екрана оператора тощо. Причина в тому, що умова в SQL перевіряла лише наявність колонки files (files notnull), а view cc_calls_history_list агрегує в неї всі файли зі storage.files за uuid дзвінка без фільтра за типом.

Вирішення

Умова has_file замінена на прямий exists до storage.files з критерієм "запис розмови": не видалений, з каналом call (або NULL для легасі-записів, створених до появи колонки channel) та mime-типом audio/* або video/. Це відсікає скріншоти (зокрема збережені з каналом call, але з image/), записи екрана оператора (screenrecording) та інші.

@kirychukyurii kirychukyurii left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

може використати опції, щоб не дублювати логіку? в поточному вигляді це важко підтримувати..
або інший варіант - додати у view окреме поле has_record, і у фільтрах використовувати його

крім того, тут пасував би індекс на storage.files, бо цей метод використовується часто і часто є проблеми, що запит виконується довго

@vlad-marusyk-wt

Copy link
Copy Markdown
Contributor Author

може використати опції, щоб не дублювати логіку? в поточному вигляді це важко підтримувати.. або інший варіант - додати у view окреме поле has_record, і у фільтрах використовувати його

крім того, тут пасував би індекс на storage.files, бо цей метод використовується часто і часто є проблеми, що запит виконується довго

згоден із проблемою дублювання, але замість sqloptions я би запропонував спільний хелпер у sqlstore (бо опції не покривають Aggregate через аліас і вимагали б зміни інтерфейсів); індекс додати, але частковий, рівно під умову фільтра

@kirychukyurii

Copy link
Copy Markdown
Contributor

може використати опції, щоб не дублювати логіку? в поточному вигляді це важко підтримувати.. або інший варіант - додати у view окреме поле has_record, і у фільтрах використовувати його
крім того, тут пасував би індекс на storage.files, бо цей метод використовується часто і часто є проблеми, що запит виконується довго

згоден із проблемою дублювання, але замість sqloptions я би запропонував спільний хелпер у sqlstore (бо опції не покривають Aggregate через аліас і вимагали б зміни інтерфейсів); індекс додати, але частковий, рівно під умову фільтра

так, давай тоді через спільний хелпер

@vlad-marusyk-wt
vlad-marusyk-wt merged commit 30809e8 into main Aug 13, 2026
12 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants