AlexPikalov
AC-01 | Данные | Импорт work_centers.csv | 1. Загрузить файл /data/C22/T1/work_centers.csv в 1С;2. Нажать «Проверить целостность» | 0 ошибок валидации; 6–10 записей в справочнике РЦ | /data/C22/T1/work_centers.csv |
AC-02 | Данные | Импорт orders.csv | 1. Загрузить файл /data/C22/T1/orders.csv;2. Проверить ссылки на заказы | 0 ошибок; 30–60 записей в регистре заказов | /data/C22/T1/orders.csv |
AC-03 | Данные | Импорт operations.csv | 1. Загрузить файл /data/C22/T1/operations.csv;2. Проверить FK на order_id и wc_id | 0 ошибок; 150–300 записей в регистре операций | /data/C22/T1/operations.csv |
AC-04 | Данные | Импорт calendar.csv | 1. Загрузить файл /data/C22/T1/calendar.csv;2. Проверить формат дат | 0 ошибок; 60–90 дней в календаре | /data/C22/T1/calendar.csv |
AC-05 | Валидация | wc_id существует | 1. Загрузить /data/C22/invalid/wc_missing.csv;2. Запустить проверку целостности | Ошибка: «РЦ {wc_id} не найден в справочнике» | /data/C22/invalid/wc_missing.csv |
AC-06 | Валидация | duration_hours > 0 | 1. Загрузить /data/C22/invalid/duration_zero.csv;2. Запустить проверку целостности | Ошибка: «Длительность операции должна быть > 0» | /data/C22/invalid/duration_zero.csv |
AC-07 | Валидация | Только рабочие дни | 1. Загрузить данные с операциями на выходные;2. Запустить расчёт плана | Ошибка: «Дата {date} — выходной; планирование запрещено» | /data/C22/invalid/weekend_op.csv |
AC-08 | Валидация | Порядок seq_no | 1. Загрузить /data/C22/invalid/seq_no_order.csv;2. Запустить проверку целостности | Ошибка: «Нарушен порядок операций в заказе {order_id}» | /data/C22/invalid/seq_no_order.csv |
AC-09 | Валидация | Перегрузка РЦ | 1. Загрузить данные с превышением мощности;2. Запустить расчёт плана | Установлен флаг overload_flag = true для дней с перегрузкой | /data/C22/invalid/overload.csv |
AC-10 | 1С | Расчёт мастер-плана | 1. Импортировать все 4 CSV из T1;2. Открыть отчёт «План-график и загрузка»; . Нажать «Рассчитать план» | План сформирован за ≤5 сек; все операции размещены | /docs/demo_script.md (Шаг 2) |
AC-11 | 1С | Отсутствие перегрузок в плане | 1. Сформировать план на T1;2. Открыть отчёт с фильтром overload_flag = true | 0 строк с перегрузкой (overload_flag = false для всех дней) | /data/C22/golden/load.csv |
AC-12 | 1С | Экспорт плана в CSV | 1. В отчёте нажать «Экспорт → CSV»;2. Сохранить как plan_export.csv; . Сравнить с эталоном | Файл совпадает с /golden/load.csv (±1% округления) | /data/C22/golden/load.csv |
AC-13 | KPI | Доля заказов в срок ≥80% | 1. Открыть отчёт «Анализ выполнения»;2. Указать период расчёта | on_time_rate ≥ 80% (заказы_в_срок / все_заказы × 100%) | /data/C22/golden/on_time.csv |
AC-14 | KPI | Перегрузки РЦ = 0% | 1. В отчёте «План-график» включить фильтр по перегрузкам;2. Рассчитать долю дней с перегрузкой | overload_rate = 0% (дни_с_перегрузкой / все_дни × 100%) | /data/C22/golden/load.csv |
AC-15 | 1С | Фильтры в отчёте | 1. Открыть отчёт «План-график и загрузка»;2. Применить фильтры: период; РЦ; заказ; приоритет | Отчёт обновляется корректно; строки соответствуют фильтрам | Скриншот отчёта с фильтрами |
AC-16 | 1С | Алгоритм планирования (приоритеты) | 1. Загрузить данные с разными приоритетами;2. Запустить расчёт; . Проверить порядок операций | Заказы с priority=1 планируются раньше priority=2 и priority=3 | /docs/TZ.md (FR-03) |
AC-17 | 1С | Идемпотентность импорта | 1. Импортировать одни и те же CSV дважды;2. Проверить количество записей | Количество записей не удваивается; дубли не создаются | /qa/idempotency_check.md |
AC-18 | 1С | Производительность расчёта | 1. Загрузить T2 (расширенный набор);2. Запустить расчёт плана | Время формирования плана ≤5 сек для ≥300 операций | /qa/performance_log.csv |
AC-19 | 1С | Формат экспортного CSV | 1. Экспортировать план;2. Проверить структуру файла | Поля: date; wc_id; load_hours; capacity_hours; overload_flag; кодировка UTF-8; разделитель | /qa/export_format_check.md |
AC-20 | Демо | Сценарий демо (5 шагов) | 1. Выполнить все 5 шагов из демо-сценария;2. Зафиксировать результаты | Все шаги выполнены успешно; KPI достигнуты | /docs/demo_script.md + видео 3–5 мин |
AC-21 | Backend API | GET /api/v1/load | 1. Отправить запрос с start_date/end_date;2. Проверить ответ | JSON соответствует openapi.yaml; 200 OK | /mocks/openapi.yaml + скриншот Postman |
AC-22 | Backend API | POST /api/v1/plan | 1. Отправить order_ids;2. Проверить статус;201 Created; plan_id возвращён | /mocks/openapi.yaml + скриншот Postman | |
AC-23 | Backend API | GET /api/v1/kpi | 1. Запросить метрики;2. Проверить поля | on_time_rate и overload_rate в ответе (не on_time_percentage) | /mocks/openapi.yaml + скриншот Postman |
AC-24 | Backend API | JWT-авторизация | 1. POST /api/v1/auth/login;2. Использовать токен | Токен получен; защищённые эндпоинты доступны | /qa/auth_test.md |
AC-25 | Backend API | Валидация входных данных | 1. Отправить некорректный запрос;2. Проверить ошибку | 400 Bad Request; понятное сообщение об ошибке | /qa/api_validation.md |
AC-26 | Backend API | CORS настройки | 1. Запрос с frontend (localhost:3000);2. Проверить заголовки | CORS разрешён; нет ошибок в консоли браузера | /qa/cors_test.md |
AC-27 | Backend API | Время отклика API | 1. Замерить 10 запросов;2. Посчитать среднее | ≤500 мс (95-й перцентиль) | /qa/performance_api.csv |
AC-28 | Backend API | Swagger-документация | 1. Открыть /docs;2. Проверить эндпоинты | Все 4 эндпоинта отображаются; можно тестировать | http://localhost:8000/docs |
AC-29 | Backend API | Обработка ошибок 1С | 1. Отключить 1С;2. Вызвать /api/v1/plan | 503 Service Unavailable; понятное сообщение | /qa/error_handling.md |
AC-30 | Backend API | Логирование запросов | 1. Выполнить 5 запросов;2. Проверить логи | Все запросы записаны (уровень INFO) | /logs/api.log |
AC-31 | Frontend | Главная страница (Dashboard) | 1. Открыть localhost:3000;2. Проверить компоненты | Все компоненты отображаются; нет ошибок в консоли | Скриншот dashboard |
AC-32 | Frontend | Таблица с планом-графиком | 1. Загрузить данные;2. Проверить колонки | Поля: date; wc_id; load_hours; capacity_hours; overload_flag | Скриншот таблицы |
AC-33 | Frontend | KPI-виджет | 1. Открыть dashboard;2. Проверить метрики | on_time_rate и overload_rate отображаются; значения корректны | Скриншот KPI |
AC-34 | Frontend | Фильтры (период; РЦ; заказ) | 1. Применить фильтры;2. Проверить таблицу | Таблица обновляется; строки соответствуют фильтрам | Скриншот фильтров |
AC-35 | Frontend | Форма авторизации | 1. Открыть /login;2. Войти (admin/admin) | Перенаправление на dashboard; токен сохранён | Скриншот login |
AC-36 | Frontend | Адаптивность (≥1280px) | 1. Изменить размер окна;2. Проверить вёрстку | Нет горизонтальной прокрутки; элементы не накладываются | Скриншоты 3 разрешений |
AC-37 | Frontend | Обработка ошибок API | 1. Отключить backend;2. Нажать «Загрузить» | Сообщение пользователю; нет «белого экрана» | Скриншот ошибки |
AC-38 | Frontend | Кнопка «Рассчитать план» | 1. Нажать кнопку;2. Проверить вызов API | POST /api/v1/plan вызван; индикатор загрузки показан | Скриншот + консоль |
AC-39 | Frontend | Кнопка «Экспорт CSV» | 1. Нажать кнопку;2. Проверить файл | Файл скачан; структура соответствует AC-19 | Скриншот + файл |
AC-40 | Frontend | Роутинг между страницами | 1. Перейти Dashboard → Login → Dashboard;2. Проверить URL | URL меняется; состояние сохраняется | Скриншот навигации |
AC-41 | Интеграция | Frontend → Backend → 1С (расчёт) | 1. Нажать «Рассчитать план» на frontend;2. Проверить 1С | 1С получил запрос; расчёт выполнен; результат возвращён | Скриншоты всех 3 уровней |
AC-42 | Интеграция | Синхронизация данных (1С → Backend) | 1. Импортировать CSV в 1С;2. Проверить БД | Данные появились в PostgreSQL; поля соответствуют | Скриншот БД + 1С |
AC-43 | Интеграция | KPI на frontend = KPI в 1С | 1. Посмотреть KPI на сайте;2. Сравнить с 1С | Расхождение ≤1% (округления) | Скриншот frontend + 1С |
AC-44 | Интеграция | Фильтры frontend влияют на Backend | 1. Применить фильтр на сайте;2. Проверить API-запрос | Параметры переданы в backend; ответ отфильтрован | Консоль браузера + логи backend |
AC-45 | Интеграция | Полный сценарий (E2E) | 1. Войти → Загрузить → Рассчитать → Экспорт;2. Проверить результат | Все шаги успешны; данные согласованы | Видео демо (3–5 мин) |
AC-46 | Демо W6 | Импорт данных (T1) | 1. Загрузить 4 CSV в 1С;2. Проверить валидацию | 0 ошибок; все записи импортированы | Скриншот импорта |
AC-47 | Демо W7 | Backend API (Postman) | 1. Протестировать 4 эндпоинта;2. Проверить ответы | Все эндпоинты возвращают 200/201 | Скриншот Postman-коллекции |
AC-48 | Демо W7 | Frontend (локально) | 1. Запустить npm run dev;2. Открыть localhost:3000 | Все компоненты работают; API вызовы успешны | Скриншот браузера |
AC-49 | Демо W8 | Интеграция (полная) | 1. Frontend → Backend → 1С;2. Проверить поток данных | Данные проходят через все 3 слоя | Видео + логи |
AC-50 | Демо W8 | Защита проекта | 1. Презентация (7–10 мин);2. Вопросы (3–5 мин) | Все артефакты показаны; KPI достигнуты | Презентация + видео + релиз v1.0 |
Old version | |||||
AC_id | Что проверить | Как проверить | Ожидаемый результат | Источник/Доказательство | |
AC-01 | Импорт work_centers.csv | 1. Загрузить файл /data/C22/T1/work_centers.csv в 1С;2. Нажать «Проверить целостность» | 0 ошибок валидации; 6–10 записей в справочнике РЦ | /data/C22/T1/work_centers.csv | |
AC-02 | Импорт orders.csv | 1. Загрузить файл /data/C22/T1/orders.csv;2. Проверить ссылки на заказы | 0 ошибок; 30–60 записей в регистре заказов | /data/C22/T1/orders.csv | |
AC-03 | Импорт operations.csv | 1. Загрузить файл /data/C22/T1/operations.csv;2. Проверить FK на order_id и wc_id | 0 ошибок; 150–300 записей в регистре операций | /data/C22/T1/operations.csv | |
AC-04 | Импорт calendar.csv | 1. Загрузить файл /data/C22/T1/calendar.csv;2. Проверить формат дат | 0 ошибок; 60–90 дней в календаре | /data/C22/T1/calendar.csv | |
AC-05 | Валидация: wc_id существует | 1. Загрузить /data/C22/invalid/wc_missing.csv;2. Запустить проверку целостности | Ошибка: «РЦ {wc_id} не найден в справочнике» | /data/C22/invalid/wc_missing.csv | |
AC-06 | Валидация: duration_hours > 0 | 1. Загрузить /data/C22/invalid/duration_zero.csv;2. Запустить проверку целостности | Ошибка: «Длительность операции должна быть > 0» | /data/C22/invalid/duration_zero.csv | |
AC-07 | Валидация: только рабочие дни | 1. Загрузить данные с операциями на выходные;2. Запустить расчёт плана | Ошибка: «Дата {date} — выходной; планирование запрещено» | /data/C22/invalid/weekend_op.csv | |
AC-08 | Валидация: порядок seq_no | 1. Загрузить /data/C22/invalid/seq_no_order.csv;2. Запустить проверку целостности | Ошибка: «Нарушен порядок операций в заказе {order_id}» | /data/C22/invalid/seq_no_order.csv | |
AC-09 | Валидация: перегрузка РЦ | 1. Загрузить данные с превышением мощности;2. Запустить расчёт плана | Установлен флаг overload_flag = true для дней с перегрузкой | /data/C22/invalid/overload.csv | |
AC-10 | Расчёт мастер-плана | 1. Импортировать все 4 CSV из T1;2. Открыть отчёт «План-график и загрузка»; . Нажать «Рассчитать план» | План сформирован за ≤5 сек; все операции размещены | /docs/demo_script.md (Шаг 2) | |
AC-11 | Отсутствие перегрузок в плане | 1. Сформировать план на T1;2. Открыть отчёт с фильтром overload_flag = true | 0 строк с перегрузкой (overload_flag = false для всех дней) | /data/C22/golden/load.csv | |
AC-12 | Экспорт плана в CSV | 1. В отчёте нажать «Экспорт → CSV»;2. Сохранить как plan_export.csv; . Сравнить с эталоном | Файл совпадает с /golden/load.csv (±1% округления) | /data/C22/golden/load.csv | |
AC-13 | KPI: доля заказов в срок ≥80% | 1. Открыть отчёт «Анализ выполнения»;2. Указать период расчёта | on_time_rate ≥ 80% (заказы_в_срок / все_заказы × 100%) | /data/C22/golden/on_time.csv | |
AC-14 | KPI: перегрузки РЦ = 0% | 1. В отчёте «План-график» включить фильтр по перегрузкам;2. Рассчитать долю дней с перегрузкой | overload_rate = 0% (дни_с_перегрузкой / все_дни × 100%) | /data/C22/golden/load.csv | |
AC-15 | Фильтры в отчёте | 1. Открыть отчёт «План-график и загрузка»;2. Применить фильтры: период; РЦ; заказ; приоритет | Отчёт обновляется корректно; строки соответствуют фильтрам | Скриншот отчёта с фильтрами | |
AC-16 | Алгоритм планирования (приоритеты) | 1. Загрузить данные с разными приоритетами;2. Запустить расчёт; . Проверить порядок операций | Заказы с priority=1 планируются раньше priority=2 и priority=3 | /docs/TZ_v0.9.md (FR-03) | |
AC-17 | Идемпотентность импорта | 1. Импортировать одни и те же CSV дважды;2. Проверить количество записей | Количество записей не удваивается; дубли не создаются | /qa/idempotency_check.md | |
AC-18 | Производительность расчёта | 1. Загрузить T2 (расширенный набор);2. Запустить расчёт плана | Время формирования плана ≤5 сек для ≥300 операций | /qa/performance_log.csv | |
AC-19 | Формат экспортного CSV | 1. Экспортировать план;2. Проверить структуру файла | Поля: date; wc_id; load_hours; capacity_hours; overload_flag; кодировка UTF-8; разделитель | /qa/export_format_check.md | |
AC-20 | Демо Шаг 1: Импорт данных | Импортировать /data/C22/T1/*.csv | 4 файла загружены; 0 ошибок валидации | Скриншот импорта | |
AC-21 | Демо Шаг 2: Расчёт плана | Открыть отчёт → нажать «Рассчитать план» | План сформирован за ≤5 сек | Скриншот отчёта | |
AC-22 | Демо Шаг 3: Фильтр по РЦ | Применить фильтр: РЦ=«Токарный №1»; период=март 2026 | Отчёт содержит только отфильтрованные строки | Скриншот фильтра | |
AC-23 | Демо Шаг 4: KPI | Открыть отчёт «Анализ выполнения» | on_time_rate ≥ 80%; overload_rate = 0% | Скриншот метрик | |
AC-24 | Демо Шаг 5: Экспорт | Экспортировать plan_export.csv → сравнить с golden | Расхождение ≤1% (округления) | Скриншот сравнения | |
''' |