Виконав: Бондаренко Сергій
Група: 3ІПЗс-24. Формат роботи — індивідуальний; усі ролі розробки поєднував один виконавець.
Репозиторій: github.com/chaek438/EasyStock.
| Робота | PDF для перегляду | Word для редагування |
|---|---|---|
| Практична 1 | Звіт 1 | Word 1 |
| Практична 2 | Звіт 2 | Word 2 |
| Практична 3 | Звіт 3 | Word 3 |
| Практична 4 | Звіт 4 | Word 4 |
| Практична 5 | Звіт 5 | Word 5 |
| Практична 6 | Звіт 6 | Word 6 |
Прототип інтерфейсу потрібно завантажити й відкрити у браузері.
Дошка GitHub Projects доступна для перегляду за посиланням. Вона містить 14 задач базового плану та 8 задач ітерації I1 із критеріями завершення, посиланнями на докази та єдиним виконавцем chaek438 — Бондаренком Сергієм. Колонки: Backlog → To Do → In Progress → Review/Test → Done. Дошку пов’язано з EasyStock; план задач описує поточний стан.
План I1, sprint backlog, реєстр ризиків, протокол.
Ізольована перевірка сама запускає сервер і тимчасову SQLite базу:
# Windows
.venv\Scripts\python.exe scripts\smoke_mvp.py
# Linux / macOS
.venv/bin/python scripts/smoke_mvp.pyДодайте --with-ui для React DOM після npm ci у frontend. Нові докази: 40 API-тестів, 18 HTTP/DOM-перевірок, самоперевірка. Незалежний review і людський walkthrough мають окремий фактичний статус.
.env.example є довідкою: start.py автоматично не завантажує .env; задавайте DATABASE_URL та COOKIE_SECURE у середовищі процесу.
Матеріали роботи 6: 23 виконані сценарії, 63 API-тести, 18 HTTP/React DOM та 8 релізних перевірок; виправлення повторного проведення складської операції. Release notes v1.0.0 описують запуск, оновлення SQLite, rollback та межі перевірки. Оновлення оформлено в PR №3. Реліз v1.0.0 містить готовий архів; стан публікації описує версію та збережену історію.
Українська вебсистема складського обліку за вимогами з архіву EasyStock_all_PDF.zip.
React + Vite · Flask + SQLAlchemy · SQLite. Інтерфейс працює з реальним API, дані зберігаються між перезапусками. Зібраний frontend уже включено в frontend/dist, тому для першого запуску Node.js не потрібен.
Оригінальні знімки локального запуску EasyStock, надані автором 18.10.2026.
Усі 13 скріншотів із підписами: вхід, огляд складу, товари, надходження, списання, історія, довідники, користувачі та запуск у Windows.
Потрібен Python 3.11 або новіший. Отримайте проєкт через Code → Download ZIP або:
git clone https://github.com/chaek438/EasyStock.git
cd EasyStockПід час завантаження ZIP розпакуйте його повністю. Відкрийте папку, у якій міститься start.py.
Двічі натисніть run_demo.bat у папці EasyStock. Скрипт перевіряє Python 3.11+, за потреби створює .venv і відновлює відсутній pip через ensurepip. Для створення середовища підтримуються команди py -3 та python. Після встановлення залежностей відкрийте http://127.0.0.1:5000. На першому запуску потрібен Інтернет для завантаження залежностей.
Якщо стара копія повідомляє No module named pip, відкрийте PowerShell у папці проєкту та виконайте:
.\.venv\Scripts\python.exe -m ensurepip --upgrade --default-pip
.\run_demo.batensurepip відновлює pip із компонентів Python без завантаження стороннього скрипта. Якщо відсутній і модуль ensurepip, відновіть встановлення Python з підтримкою pip. Офіційна документація: https://docs.python.org/3/library/ensurepip.html.
bash run_demo.shВідкрийте http://127.0.0.1:5000. Для зупинки натисніть Ctrl+C у терміналі.
python -m venv .venvWindows PowerShell:
.venv\Scripts\python.exe -m pip install -r backend\requirements.txt
.venv\Scripts\python.exe start.py --demoLinux / macOS:
.venv/bin/python -m pip install -r backend/requirements.txt
.venv/bin/python start.py --demoПерший запуск --demo створює database/easystock.db, 12 товарів, категорії, постачальників та демонстраційну історію. Повторний запуск зберігає існуючі дані. Паролі зберігаються як scrypt-хеші. Не видаляйте БД, якщо потрібні ваші зміни.
Спільний пароль: DemoStock2026!. Кнопки ролей на сторінці входу заповнюють поля; для входу натисніть «Увійти в систему».
| Роль | Доступ | |
|---|---|---|
| admin@easystock.local | Адміністратор | Усі функції, довідники та користувачі |
| keeper@easystock.local | Комірник | Перегляд, надходження, списання, історія |
| manager@easystock.local | Менеджер | Перегляд товарів, залишків, історії та довідників |
- Вхід, серверні сеанси на 8 годин, вихід з відкликанням сеансу, рольовий контроль API, CSRF-захист.
- Огляд складу: товарні позиції, кількість, вартість запасів, товари для поповнення, рух за 7 днів, останні операції.
- Товари: створення, редагування, архівація без видалення історії; пошук за назвою/SKU, категорією та залишком; пагінація.
- Картка товару: поточний та мінімальний залишок, ціна, постачальник, історія.
- Повтор складської операції: інтерфейс зберігає ключ для повтору з тими самими даними після втрати відповіді. API-клієнт має передавати Idempotency-Key; після перезавантаження форми за невідомого результату спочатку перевіряйте історію.
- Надходження: до 50 позицій у документі, постачальник, закупівельна ціна, коментар, нові залишки.
- Списання: перевірка доступної кількості в SQL; негативний результат зберігає введені поля.
- Історія: автор, час, тип, кількість, залишок після операції, номер надходження, коментар, пошук і фільтри дат.
- Категорії та постачальники: CRUD для адміністратора. Видалення заборонено, якщо є посилання.
- Користувачі: створення, зміна ролі та пароля, блокування. Не можна позбавити себе прав адміністратора.
- Адаптивне меню, мобільний інтерфейс, loading/error/empty/success-стани.
Ціна товару використовується для поточної оцінки запасів. Закупівельна ціна записується в документ надходження та не перезаписує ціну каталогу. Одиниці виміру довільні, кількість у MVP завжди ціла.
- Увійти як комірник.
- Відкрити «Товари», знайти
SSD-480(початковий залишок 17). - Відкрити картку, натиснути «Надходження», ввести 20, підтвердити: залишок 37.
- Перейти до історії: видно надходження, автора й час.
- У картці відкрити «Списання», ввести 40: помилка, залишок 37, поля збережені.
- Ввести 3: списання успішне, залишок 34.
- Вийти, увійти як менеджер: складські операції та керування користувачами недоступні.
Початкові цифри сценарію застосовуються до свіжої демобази. Проєкт опубліковано в цьому GitHub-репозиторії. У звітах інтерв’ю позначені як змодельовані сесії, review — як самоперевірка. Незалежний walkthrough, вимірювання часу пошуку людиною та повний прогін у Chromium/Firefox ще потрібно виконати. Автоматизовані перевірки описані в docs/TESTING.md.
Для перескладання інтерфейсу потрібен Node.js 22.12+ та npm.
cd frontend
npm ci
npm run buildРежим розробки: у двох терміналах, із кореня проєкту:
# Backend (Linux/macOS; Windows: .venv\Scripts\python.exe)
.venv/bin/python -m flask --app backend/app run --port 5000
# Frontend
cd frontend
npm run devВідкрийте адресу Vite (зазвичай http://127.0.0.1:5173). Vite проксіює /api на Flask. Не змішуйте localhost і 127.0.0.1 під час роботи з cookies.
З кореня EasyStock:
.venv/bin/python -m pytest -q
# Windows: .venv\Scripts\python.exe -m pytest -qТестова БД створюється у тимчасовій папці та не змінює вашу робочу базу.
React DOM-тест перевіряє форми з реальним API (сервер має працювати):
cd frontend
npm ci
npm run test:uiБраузерні тести запускаються проти працюючого демосервера:
cd frontend
npm ci
npx playwright install chromium firefox
npm run test:e2eDOM- і браузерні тести додають окремі товари React DOM … / E2E …, проводять операції та архівують їх. Запускайте їх на окремій тестовій БД, якщо історію робочого складу потрібно зберегти чистою. Адресу можна задати змінною EASYSTOCK_URL.
Не запускайте --demo. Для створення адміністратора на порожній БД:
.venv/bin/python -m flask --app backend/app create-admin
.venv/bin/python start.pyДля окремої БД встановіть DATABASE_URL=sqlite:////absolute/path/new.db (на Windows: sqlite:///C:/path/new.db). При зміні структури моделей для існуючої бази потрібні міграції; create_all не змінює наявні таблиці.
EasyStock/
backend/easystock/ моделі, авторизація, REST API, Stock Service
frontend/src/ React-інтерфейс та стилі
frontend/dist/ готовий інтерфейс для запуску
database/schema.sql схема БД; робоча БД створюється при запуску
tests/ API, транзакції, паралельні списання, браузерні тести
docs/Lab1..Lab6/ вихідні звіти та артефакти реалізації
docs/adr/ архітектурні рішення
docs/API.md контракт API
docs/EasyStock.postman_collection.json колекція API-запитів
docs/TESTING.md результати перевірок
start.py сервер Waitress
Локально використовується HTTP на 127.0.0.1. Для зовнішнього доступу потрібні HTTPS/reverse proxy, COOKIE_SECURE=1, власні облікові записи, резервні копії та постійний диск для SQLite. Rate limiter входу працює в пам’яті одного процесу; для кількох процесів потрібне спільне сховище. Немає оплат, AI, Telegram, email-інтеграцій, мобільного застосунку, сканера штрихкодів або експорту CSV: вони поза обов’язковим MVP.
Документація вимог відповідає наданим PDF. Схема, код і тести є фактичними артефактами реалізації. Тести не замінюють інтерв’ю чи usability review іншою людиною.
.gitignore виключає локальні SQLite-бази, WAL/SHM, кеш Python, віртуальні середовища та node_modules. Схема database/schema.sql, demo seed і готовий frontend/dist залишаються в репозиторії. При першому запуску --demo база створюється автоматично.
Робочу БД, WAL/SHM і сім файлів кешу Python уже прибрано з поточної версії main. Для старих локальних Git-копій є scripts/cleanup_git.bat (Windows) і scripts/cleanup_git.sh (Linux/macOS). Вони прибирають службові файли з індексу та залишають локальні копії на комп’ютері. Попередні коміти збережено в історії Git. Докладні кроки для наступних оновлень: оновлення GitHub.
На перевіреному коміті 8e8a046cee0458019c044e6ca58ae753e6eadadf пройшли 39 тестів API та production-збірка Vite. Цей результат стосується коду в зазначеній версії. Він не підтверджує незалежне тестування інтерфейсу людиною.

