docs(openspec): рулинги R-27, R-28, чек-лист Task 8, уточнения по ревью ветки (#206)
I-4, M-3, M-9, M-10, M-11. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
09685db0e8
commit
753eccbd97
@ -336,3 +336,5 @@ RSHB/arm-core#206, Jira AURORA-1541.
|
||||
(`../docs/dev/qa-guide.md`) на реальной версии; пройти сценарии spec; расхождения ответа с контрактом — правка в фейке и
|
||||
типах или замечание в PR 1540; `make check-full`; PR в `main` (до этого PR не открывать — фронт без API не сливаем, если
|
||||
владелец не решит иначе).
|
||||
|
||||
Уточнение (R-27): в Task 8 удаляются только `services/api/correctionsFake.ts` (+ `correctionsFake.test.ts`) и ветка флага `CORRECTIONS_MOCK` в `corrections.ts`/`config.ts`; `widgets/CorrectionTable/mockData.ts` и `mockCalc.ts` остаются как тестовые фикстуры — их импортируют тесты моделей.
|
||||
|
||||
@ -73,7 +73,7 @@
|
||||
вся таблица), `GET …/export`.
|
||||
- Клиент — `web/src/services/api/corrections.ts` поверх `api/client.ts`. При `REACT_APP_CORRECTIONS_MOCK=true` те же функции
|
||||
отвечают из фейка контракта в памяти (данные — из дизайна 23.10, с проверками контракта: обязательный комментарий,
|
||||
`expected_version_no`, применимость правила). Флаг по умолчанию выключен; в production-сборке фейк не используется.
|
||||
`expected_version_no`, применимость правила). Флаг по умолчанию выключен; фейк включается только переменной окружения, но код фейка остаётся в бандле (R-21, R-26).
|
||||
|
||||
### Таблица
|
||||
|
||||
@ -131,7 +131,7 @@
|
||||
79,77 % из дизайна — ошибка дизайна, п. 7). Расхождение не запрещает сохранение (ждёт п. 8).
|
||||
- **Сохранить** — `PUT` с `status = APPLIED`, `expected_version_no` из ответа; ошибки сервера показываются в окне по коду
|
||||
(`COMMENT_REQUIRED` — у поля комментария, `INVALID_LINE_CODE` — у статьи, `CORRECTION_VERSION_CONFLICT` — «Корректировку уже
|
||||
изменили, таблица обновлена», окно перечитывает данные).
|
||||
изменили, данные обновлены», окно перечитывает данные).
|
||||
- **Черновик окна в `localStorage`** (решение владельца 28.10.2026 вместо блокировки переходов): статьи распределения и
|
||||
комментарий сохраняются при каждой правке; ключ — пользователь + версия + агрегат (`rule_id`, компании), в записи — время
|
||||
и `version_no` корректировки, от которой начаты правки. Переход «Назад», закрытие вкладки, переход по ссылке правки не
|
||||
@ -206,3 +206,5 @@
|
||||
| 28.10.2026 | R-24: у агрегата флажок «Учитывать в КФО» — серый неактивный индикатор «Да / Частично / Нет», а в дизайне зелёный | решение 28.10 (флажок ставится на строках, у агрегата производное) | ответ по п. 4 «на агрегат» |
|
||||
| 28.10.2026 | R-25: отдельное ревью Task 7 (стиль, два мелких фикса, документация) не делалось, оно покрыто финальным ревью ветки | дифф механический, финальное ревью читает всю ветку | мелкая ошибка в Task 7 всплывёт на финальном ревью |
|
||||
| 28.10.2026 | R-26: фейк (R-21) остаётся в бандле до Task 8, который его удаляет | вырезание требует динамического импорта или `define` в rsbuild, и всё равно временное | ~20 КБ в бандле до подключения API |
|
||||
| 28.10.2026 | R-27: `mockData` и `mockCalc` остаются как тестовые фикстуры (их импортируют тесты `tableModel`, `editorModel`, `readOnly`, `draftStorage`); Task 8 удаляет только `correctionsFake.ts` (+ его тест) и ветку флага в `corrections.ts`. Уточняет R-5, R-21, R-26: «вырезается» относится только к фейку контракта `correctionsFake` | иначе при подключении API пришлось бы переписывать тесты моделей | если фикстуры устареют относительно контракта — тесты моделей перестанут ловить расхождения; сверять при Task 8 |
|
||||
| 28.10.2026 | R-28: окно выбора нераспределённой строки (picker) не показывает исключённые (`excluded`) — исключённую сначала возвращают в учёт флажком в таблице | исключённая строка сознательно убрана из КФО; разнесение её в правило молча вернуло бы её в расчёт | аналитику нужен лишний шаг; если захотят выбирать исключённые — снять условие `!u.excluded` в `pickerCandidates` |
|
||||
|
||||
@ -53,7 +53,7 @@ AURORA-1395 и в AURORA-1396.
|
||||
- `web/src/widgets/ConsolidatedOsv/OsvTabs.tsx` — вкладка `correction` без `disabled`.
|
||||
- `web/src/layouts/ConsolidationReportPage.tsx` — содержимое вкладки `correction`.
|
||||
- Новое: `web/src/widgets/CorrectionTable/` (таблица, панель, окно корректировки, чистые функции + тесты),
|
||||
`web/src/services/api/corrections.ts`, типы контракта в `web/src/types/api.ts` (или `types/corrections.ts`), фейк контракта.
|
||||
`web/src/services/api/corrections.ts`, типы контракта в `web/src/types/corrections.ts`, фейк контракта.
|
||||
- `web/src/conf/config.ts` — флаг `REACT_APP_CORRECTIONS_MOCK`.
|
||||
- Таблицы DBML v5.23: `correction`, `elimination_rule`, `osv_entry` — только читаются через API; новых полей фронт не вводит.
|
||||
- Правила: `05-domain-rules.md` §8 (корректировки) в нынешнем виде описывает только запись корректировки; разнесение строк и
|
||||
|
||||
@ -31,12 +31,18 @@
|
||||
|
||||
## 7. Сверка с дизайном, проверки, документация
|
||||
|
||||
- [x] 7.1 Проход сценариев спеки в браузере на фейке и сверка частей экрана с дизайном (ширина 1920)
|
||||
- [x] 7.1 Проход сценариев спеки в браузере на фейке (ширина 1920, headless Chrome по CDP) и сверка частей экрана с дизайном. Проверено: таблица и группы колонок, панель, фильтры в заголовках, раскрытие, нераспределённые, пресет, настройка таблицы, окно корректировки, решения по строкам (в т.ч. повторный INCLUDE), «Убрать из правила», ошибка загрузки с «Повторить», экспорт, `composition_changed` и «черновик». Не проверено — вынесено в 8.1: полный экран, 409 / `CORRECTION_VERSION_CONFLICT`, недоступный `localStorage`, «Вернуть к автоматике» внутри агрегата, реальный API
|
||||
- [x] 7.2 `make web-check`, `npm test`, `npm run lint`, `openspec validate corrections-table-ui --strict`
|
||||
- [x] 7.3 README (флаг фейка) и ARCHITECTURE (виджет `CorrectionTable`)
|
||||
|
||||
## 8. Подключение к API (после слияния AURORA-1540)
|
||||
|
||||
- [ ] 8.1 Влить `main`, запустить без флага на стенде на реальной версии, пройти сценарии спеки
|
||||
- [ ] 8.2 Расхождения ответа с контрактом — правка фейка и типов или замечание в PR 1540; убрать фейк (`correctionsFake`, `mockData`, `mockCalc`) и флаг
|
||||
- [ ] 8.1 Влить `main`, запустить без флага на стенде на реальной версии, пройти сценарии спеки. Отдельно проверить то, что не проверено на фейке:
|
||||
- полноэкранный режим (уведомления внутри бокса, выпадающие списки);
|
||||
- 409 и `CORRECTION_VERSION_CONFLICT` в окне и при решении по строке;
|
||||
- недоступный `localStorage` (приватное окно): окно корректировки работает без черновика;
|
||||
- «Вернуть к автоматике» на строке внутри агрегата (на нераспределённой фейк не возвращает строку в правило, R-23);
|
||||
- сценарии спеки, которых нет на данных фейка, — на реальных данных: Сатурн — Архол; Бековский с 62.01 / 60.02 / 62.03 / 76.01; ПМП — Бековский комбинат для «Добавить строку ОСВ»;
|
||||
- `allocate` с несколькими `entry_ids` и код `VALIDATION_ERROR` — фейк их не воспроизводит (M-10)
|
||||
- [ ] 8.2 Расхождения ответа с контрактом — правка фейка и типов или замечание в PR 1540; убрать фейк контракта (`correctionsFake.ts` и его тест) и ветку флага в `corrections.ts`; `mockData` и `mockCalc` остаются тестовыми фикстурами (R-27)
|
||||
- [ ] 8.3 `make check-full`, PR в `main`
|
||||
|
||||
@ -63,7 +63,7 @@ SPA поверх API arm-core (`/api/v1`). Своих данных и бизне
|
||||
| `useCorrectionTable.ts` | хук | загрузка, `reload`/`replace`/`replaceAggregate` |
|
||||
| `CorrectionContent.tsx`, `CorrectionToolbar.tsx`, `CorrectionTable.tsx`, `HeaderFilter.tsx` | компоненты | вкладка, панель, таблица с группами колонок, воронки в заголовках |
|
||||
| `CorrectionEditorModal.tsx`, `EditorSide.tsx`, `AllocationPicker.tsx`, `RevokeModal.tsx` | компоненты | окно «Корректировка операции», сторона окна, выбор нераспределённой строки, отмена |
|
||||
| `mockData.ts`, `mockCalc.ts` | фейк | данные дизайна и пересчёт агрегата; вырезаются при подключении API |
|
||||
| `mockData.ts`, `mockCalc.ts` | фикстуры | данные дизайна и пересчёт агрегата; остаются как тестовые фикстуры (R-27); фейк контракта `services/api/correctionsFake.ts` удаляется в Task 8 |
|
||||
| `../../utils/money.ts` | чистый | деньги копейками (`toCents`, `percentOfSmaller`, порог 5 %) |
|
||||
|
||||
Чистые модули покрыты vitest (`*.test.ts`); компоненты тестов не имеют (нет DOM-библиотеки), их проверяют в браузере.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user