Andrey Epifancev 4401fbb510 Архив OpenSpec intercompany-matrix-one-sided (PR #165)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 00:05:52 +04:00

3.1 KiB
Raw Blame History

Context

PR RSHB/arm-core#165, задача AURORA-1651 (технический долг ревью PR #114). Шахматка — чистая функция от сводной ОСВ версии (DECISION-5), контракт ответа не меняется: меняются смысл one_sided, состав счетов режима ALL и заливка xlsx.

Decisions

  1. one_sided = (amount_a == 0) != (amount_b == 0). Формула из описания задачи (min(amount_a, amount_b) == 0 and variance_amount > 0) на неотрицательных суммах даёт то же, но на отрицательном сальдо (возможно по §1) пропускает пару: −50 против 0 → min = −50. Знак ненулевой суммы не важен.
  2. Подсветка в API и в xlsx — exceeds_threshold or one_sided. Поле exceeds_threshold сохраняет смысл «процент > 5»; экран шахматки красит пару по тому же правилу (PR #158, change intercompany-matrix-ui).
  3. Забалансовые счета (is_off_balance = true) исключаются только в ALL; MANUAL выбирает их явно, это не ошибка.
  4. Фильтры 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 не меняется.