Skip to content

Develop - #22

Merged
boffart merged 5 commits into
masterfrom
develop
Jul 16, 2026
Merged

boffart merged 5 commits into
masterfrom
develop

Conversation

@boffart

@boffart boffart commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

Alexey Portnov and others added 5 commits February 16, 2026 16:51
DataTables в режиме serverSide требует обязательное поле recordsTotal в ответе.
Добавлено это поле в методы history() и outgoingEmployeeCalls() для устранения
ошибки "Cannot read properties of undefined (reading 'length')".
Добавлена проверка существования response.stateData перед обращением к его свойствам.
Это предотвращает ошибку "Cannot read properties of undefined (reading 'lastId')"
когда кэш синхронизации пуст или не инициализирован.
Currently translated at 81.8% (54 of 66 strings)

Translation: MIKOPBX/ModuleExtendedCDRs
Translate-URL: https://weblate.mikopbx.com/projects/mikopbx/moduleextendedcdrs/pt_BR/
Несколько учёток одного провайдера приходят на одну линию и различаются
только по DID (ограничение Asterisk). Теперь имя линии в отчёте подбирается
по совпадению DID входящего звонка с username учётки провайдера, с откатом
на прежнее сопоставление по uniqid линии.

Учтены краевые случаи: липкость имени между плечами звонка, защита от
обнуления lineId, только входящие звонки, пустой description, коллизии
одинаковых логинов.
Синхронизация вставала навсегда, когда один linkedid (зависший канал:
конференция, парковка, MOH) накапливал >= 5000 CDR-строк и упирался в
потолок выборки ядра (SelectCDR MAX_QUERY_LIMIT). Обрезка отдавала самые
старые 5000 строк, offset не мог продвинуться за такой звонок.

Решение — служебная таблица oversized_linkedids: звонки, достигшие
потолка 5000 строк, детектируются, их первые 5000 строк сохраняются один
раз, а сам linkedid исключается из последующих выборок (NOT IN). offset
удерживается на цикл детекта, чтобы не потерять вытесненные обычные звонки.

- Models/OversizedLinkedIds: новая модель + статическое создание таблицы
- HistoryParser: MAX_LINKEDID_ROWS, параметр исключений в getHistoryData,
  getActiveLinkedIds (с сигналом успеха запроса)
- ConnectorDB: детект/фиксация oversized, удержание offset, часовая
  очистка завершённых звонков, session-only набор при сбое записи
- SyncRecords: проброс списка исключений, чтобы webhook-воркер не застревал
@boffart
boffart merged commit 110fc77 into master Jul 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant