diff --git a/openspec/changes/intercompany-matrix-ui/specs/intercompany-matrix-ui/spec.md b/openspec/changes/intercompany-matrix-ui/specs/intercompany-matrix-ui/spec.md index bc16be6..cb2b870 100644 --- a/openspec/changes/intercompany-matrix-ui/specs/intercompany-matrix-ui/spec.md +++ b/openspec/changes/intercompany-matrix-ui/specs/intercompany-matrix-ui/spec.md @@ -25,7 +25,8 @@ Экран SHALL загружать матрицу при открытии вкладки (`GET /consolidations/versions/{id}/intercompany-matrix/all`) и показывать таблицу: первая колонка «ДБ / КТ» (закреплена слева) — компании периметра в порядке ответа (`companies[]`), остальные колонки — те же компании. В ячейке пары (строка A, колонка Б) SHALL быть три числа друг под другом: сумма `amount_a`, сумма `amount_b` -и расхождение `variance_amount` в скобках; расхождение выделяется красным, если `exceeds_threshold = true`. Если у пары есть +и расхождение `variance_amount` в скобках; расхождение выделяется красным, если `exceeds_threshold = true` или +`one_sided = true` (пара без встречной стороны; правило подсветки — как в API и xlsx, AURORA-1651). Если у пары есть строки ОСВ без сопоставленного счёта (`skipped_osv_entry_count > 0`), рядом с первым числом SHALL показываться значок предупреждения с подсказкой «Строк ОСВ без сопоставленного счёта: N; в суммы не вошли». Если ячейки пары в ответе нет (в том числе на диагонали), SHALL показываться прочерк «—» на приглушённом фоне. Ниже таблицы закреплена строка «Итого»: до @@ -38,6 +39,10 @@ - **WHEN** для пары `(A, Б)` сервер вернул `exceeds_threshold = true` - **THEN** третье число ячейки (расхождение) показано красным, первые два — обычным цветом +#### Scenario: Пара без встречной стороны +- **WHEN** для пары `(A, Б)` сервер вернул `amount_b = 0`, `one_sided = true`, `exceeds_threshold = false` +- **THEN** третье число ячейки (расхождение) показано красным + #### Scenario: Пары нет в ответе - **WHEN** в `cells[]` нет ячейки для пары компаний - **THEN** на их пересечении показан прочерк «—» diff --git a/web/src/widgets/ConsolidationChessTable/ConsolidationChessTable.tsx b/web/src/widgets/ConsolidationChessTable/ConsolidationChessTable.tsx index 3c824b8..a9d1cc4 100644 --- a/web/src/widgets/ConsolidationChessTable/ConsolidationChessTable.tsx +++ b/web/src/widgets/ConsolidationChessTable/ConsolidationChessTable.tsx @@ -79,7 +79,8 @@ export const ConsolidationChessTable: React.FC = ({ {chessTableCellFormatValue(cell.amount_a, units, decimals)} {chessTableCellFormatValue(cell.amount_b, units, decimals)} - + {/* подсветка как в API и xlsx: порог > 5 % или пара без встречной стороны (AURORA-1651) */} + ({chessTableCellFormatValue(cell.variance_amount, units, decimals)})