3.1 KiB
3.1 KiB
Context
PR RSHB/arm-core#165, задача AURORA-1651 (технический долг ревью PR #114). Шахматка — чистая функция от сводной ОСВ
версии (DECISION-5), контракт ответа не меняется: меняются смысл one_sided, состав счетов режима ALL и заливка xlsx.
Decisions
one_sided = (amount_a == 0) != (amount_b == 0). Формула из описания задачи (min(amount_a, amount_b) == 0 and variance_amount > 0) на неотрицательных суммах даёт то же, но на отрицательном сальдо (возможно по §1) пропускает пару: −50 против 0 →min = −50. Знак ненулевой суммы не важен.- Подсветка в API и в xlsx —
exceeds_threshold or one_sided. Полеexceeds_thresholdсохраняет смысл «процент > 5»; экран шахматки красит пару по тому же правилу (PR #158, changeintercompany-matrix-ui). - Забалансовые счета (
is_off_balance = true) исключаются только в ALL; MANUAL выбирает их явно, это не ошибка. - Фильтры
GET /directories/accounts(kind[],row_type,is_off_balance) из первой редакции PR убраны: в задаче их нет, потребителей нет, при фильтре поkindв ответе оставалисьparent_idна строки вне ответа.
Decisions made without discussion
- 2026-10-22. Формула
one_sidedчерез «ровно одна сумма нулевая» вместо формулы из описания задачи. Обоснование — отрицательное сальдо (решение 1). Цена ошибки: если аналитик решит, что отрицательная сторона — не «пара без встречной стороны», меняется одна строка и тест. - 2026-10-22. Влив
mainс #141 и разрешение конфликтов выполнил ревьюер (владелец: «доведём задачу до ума, потом сольём»). В ALL сохранены и фильтр забалансовых, иMatrixSelection(..., "closing")из #141; тесты #141 на старый смыслone_sidedпереписаны. Цена ошибки: низкая, расчёт PRESET не затронут (свои счета правила).
Решения владельца (2026-10-22)
- Экран красит и по
one_sided(а не бэкенд выставляетexceeds_threshold). - Фильтр
/directories/accountsубрать из PR. - Счёт
000«Вспомогательный» не трогать, вопрос — в07-open-questions.md. - Процент при отрицательной меньшей стороне — вопрос в
07-open-questions.md, в этом PR не меняется.