e13e0c9b2a
Test titles, describe blocks, comments and assertion messages are now in English, so the runner output and the code are readable without Italian. Deliberately left in Italian, because they are matched against the app or typed into it: - UI text used in locators (page headings, badges, empty states, SweetAlert messages, sidebar entries, category names) - form values filled in by the tests, so screenshots and demo videos keep showing an Italian UI with Italian data - fixture labels passed to name(), for the same reason Screenshot files are renamed to the English labels the suite now writes (desktop-registro.png -> desktop-registry.png and so on); the docs that quote test titles or screenshot names are updated to match. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
106 lines
9.5 KiB
Markdown
106 lines
9.5 KiB
Markdown
# Manutenzioni — трассируемость: ТЗ → тесты
|
||
|
||
Каждый пункт исходного документа клиента (`Manutenzioni - ACS.pdf`) и то, чем он подтверждён.
|
||
Условные обозначения: **UI** — браузерный тест (Playwright, гоняется на 1440/820/390), **API** — `tests/manutenzioni/api_test.php`, **U** — юнит-тест PHPUnit.
|
||
|
||
---
|
||
|
||
## 1. Реестр оборудования
|
||
|
||
| Пункт ТЗ | Чем подтверждён | Тест |
|
||
|---|---|---|
|
||
| Единая база оборудования, у каждой позиции категория | UI | `§1.2 le quattro categorie del capitolato esistono e sono gestibili` |
|
||
| Категории: Linea di produzione, Attrezzature, Accessori, Qualità | UI | там же |
|
||
| Категории **не хардкод**, свой CRUD | UI + API | `Categories › CRUD from the modal, and categories in use cannot be deleted`; API: создание, дубль имени, запрет удаления занятой |
|
||
| Для категории «линия» обязательно указать линию | UI + API | `§1.5 il campo «linea» compare solo per le categorie che lo richiedono`; API: отказ без линии |
|
||
| Фильтрация по категории / линии / отделу | UI | `§1.5 the registry filters by production line and by department`; `Equipment registry › the filters really narrow the list` |
|
||
| Перенос существующих `production_lines` и `production_tools` | UI + API | `§1.6 le linee e gli attrezzi già esistenti sono nel registro unico`; API: старые страницы производства работают после переименования |
|
||
| Поля: название, серийник, партия, дата покупки, дата ввода, производитель, тип, ubicazione, отдел, заметки | UI | `§1.7 tutti i campi dell'anagrafica si salvano e si rivedono` — сохранение, возврат в форму и отображение в карточке |
|
||
| Статус (attivo / fuori servizio / dismesso) исключает неактивное из планировочных вью | UI | `§1.7 un'attrezzatura non attiva sparisce dalle viste di pianificazione` — проверяет и список ТО, и календарь |
|
||
| Вложения: файлы-инструкции и мануалы | UI + API | `Photos, cover image and documents › documents upload and stay downloadable`; отказ на недопустимый тип |
|
||
| Обложка + дополнительные фото | UI | `la prima foto caricata diventa copertina, anche nel registro`; `la stellina sposta la copertina sulla seconda foto`; `la foto si elimina previa conferma` |
|
||
| Калибровка — вне скоупа | — | намеренно не реализована; отдельной таблицы нет |
|
||
|
||
## 2. Модуль обслуживания
|
||
|
||
| Пункт ТЗ | Чем подтверждён | Тест |
|
||
|---|---|---|
|
||
| 0..N обслуживаний на единицу; 0 = вне планирования | UI | `§2.1 un'attrezzatura senza manutenzioni resta fuori dalla pianificazione` |
|
||
| Несколько видов ТО одновременно | UI | `§2.2 la stessa attrezzatura porta più manutenzioni insieme` (три работы на одной машине) |
|
||
| Типы: программное и внеплановое | UI + API | `«solo critiche» e «programmate/straordinarie» restringono l'elenco`; `riaprendo una manutenzione i campi sono quelli salvati` |
|
||
| Флаг критичности | UI | `una manutenzione critica è evidenziata nella scheda` |
|
||
| Внешние исполнители: указать подрядчика | UI + API | `«esterna» chiede il fornitore e blocca il salvataggio senza` |
|
||
| Приложить форму подрядчика | UI | `un allegato dell'intervento compare nello storico` |
|
||
| Название/описание | UI | `riaprendo una manutenzione i campi sono quelli salvati` |
|
||
| Частота через выпадающий список интервалов | UI + U | `«al bisogno» nasconde il campo della frequenza`; `la nota di frequenza resta visibile`; юниты на все единицы интервала |
|
||
| Файлы-инструкции к ТО | UI | `le istruzioni allegate a una manutenzione si vedono, si riaprono e si eliminano` |
|
||
| Срок предупреждения | UI | `riaprendo una manutenzione i campi sono quelli salvati` (alert_days) |
|
||
| Один исполнитель + один ответственный | UI | `§2.6 incaricato e responsabile si salvano e si leggono nella scheda` |
|
||
| Следующий срок = от последней выполненной работы | UI + U | `registrare un intervento completato aggiorna le date a schermo`; `un intervento pianificato non sposta la scadenza`; `eliminando l'ultimo intervento completato la scadenza torna indietro`; 20 юнитов на арифметику дат |
|
||
|
||
## 3. Журнал интервенций
|
||
|
||
| Пункт ТЗ | Чем подтверждён | Тест |
|
||
|---|---|---|
|
||
| Привязка к конкретному ТО | UI | `la registrazione rapida dall'elenco aggiorna la scadenza` (контекст в модалке) |
|
||
| Дата | UI | `registrare un intervento completato aggiorna le date a schermo` |
|
||
| Заметки | UI | `riaprendo un intervento i campi sono quelli salvati` |
|
||
| Оператор + подпись | UI | `la firma disegnata finisce nello storico`; `la firma si cancella con il pulsante dedicato`; `si firma col dito e la pagina non scorre sotto il tratto` (планшет/телефон) |
|
||
| Статус (pianificato / in corso / completato) | UI | `un intervento pianificato non sposta la scadenza` |
|
||
| Результат (conforme / bloccato …) | UI | `riaprendo un intervento i campi sono quelli salvati` |
|
||
| Материалы / замененные части | UI | там же |
|
||
| Для внешних: подрядчик и его форма | UI | `un allegato dell'intervento compare nello storico` |
|
||
|
||
## 4. Фильтры и вью
|
||
|
||
| Пункт ТЗ | Чем подтверждён | Тест |
|
||
|---|---|---|
|
||
| Фильтр между программными и внеплановыми | UI | `«solo critiche» e «programmate/straordinarie» restringono l'elenco` |
|
||
| Календарь ТО по срокам | UI | `il calendario disegna gli eventi e il click porta alla scheda`; `i filtri del calendario rifanno la richiesta` |
|
||
|
||
## 5. Выгрузка PDF
|
||
|
||
| Пункт ТЗ | Чем подтверждён | Тест |
|
||
|---|---|---|
|
||
| Карточка с историей обслуживания по единице | UI | `la scheda riproduce il modulo cartaceo` (шапка mod. 6.3-1, работы, журнал) |
|
||
| Собственно PDF | UI | `in stampa la barra dei pulsanti sparisce e il PDF si genera` |
|
||
|
||
## 6. Уведомления
|
||
|
||
| Пункт ТЗ | Чем подтверждён | Тест |
|
||
|---|---|---|
|
||
| Письма о просрочке и заранее | API | cron запускается без ошибок; выборка находит просроченное ТО |
|
||
| Получатели: ответственный **и** исполнитель | — | **браузером не проверяется**: письма уходят из cron, а не из UI. Логика получателей сверена запросом; фактическая доставка — ручной пункт 12 тест-плана |
|
||
|
||
## 7. Сводный календарь
|
||
|
||
| Пункт ТЗ | Чем подтверждён | Тест |
|
||
|---|---|---|
|
||
| Scadenze + formazione + manutenzioni в одном календаре | UI | `ogni strato porta i propri eventi`; `il calendario cumulativo accende e spegne gli strati` |
|
||
| Разные цветные бейджи по типу срока | UI | `§7 i tre tipi di scadenza hanno colori distinti` (свой цвет и свой значок у каждого слоя) |
|
||
| Переход из календаря в нужный модуль | UI | `dal calendario cumulativo si arriva alla scheda dell'attrezzatura` |
|
||
|
||
## 8. Техтребования
|
||
|
||
| Пункт ТЗ | Чем подтверждён | Тест |
|
||
|---|---|---|
|
||
| Работа на PC и планшете → адаптивность | UI × 3 | весь набор гоняется на 1440 / 820 / 390; `Layout › …` (нет горизонтальной прокрутки, карточки против таблицы, модалка достижима, сайдбар не прыгает) |
|
||
|
||
---
|
||
|
||
## Что осталось за пределами автотестов
|
||
|
||
| Пункт | Почему | Где проверять |
|
||
|---|---|---|
|
||
| Фактическая доставка писем | нужен живой SMTP и ящик | ручной чеклист, раздел 12 |
|
||
| Внешний вид PDF после печати из браузера | субъективно | ручной чеклист, разделы 9.4–9.5 |
|
||
| Подпись на физическом планшете | эмуляция ≠ железо | ручной чеклист, 6.6 |
|
||
| Соответствие импортированных данных их XLS | сверка с бумагой | ручной чеклист, раздел 13 |
|
||
|
||
## Как перепроверить
|
||
|
||
```bash
|
||
make test-sizes # весь набор на трёх размерах
|
||
npx playwright test tests/e2e/capitolato.spec.js # только пункты ТЗ
|
||
```
|