ProcureFlow
Web- и Windows-приложение (Electron) для расчёта заказов поставщикам: учитывает продажи, остатки, товары в пути, сезонность, тренд, stockout и…
О проекте
Команда: ZETA_Team
Кейс HackAlem.ai: Логистика — Электрокомплект · ekt.kz
Стадия: Рабочий MVP
Задача кейса: Автоматический расчёт заказов поставщикам для пополнения склада, с утверждением менеджером
Суть
Web- и Windows-приложение (Electron) для расчёта заказов поставщикам: учитывает продажи, остатки, товары в пути, сезонность, тренд, stockout и разовые крупные продажи; менеджер корректирует, утверждает и экспортирует заказ.
Как устроено
Весь расчёт на клиенте на JavaScript: выбросы по медиане/MAD, месячная сезонность, тренд, восстановление спроса в период stockout, учёт остатков, своевременных поставок, минимальной партии и кратности. Импорт XLSX/CSV/ZIP собственным модулем в Web Worker, группировка рекомендаций по поставщикам с риском дефицита и обоснованием; проекты .pfproject совместимы между web и desktop; идентификаторы клиентов хешируются HMAC-SHA256. LLM не используется.
Ключевые решения
- median/MAD outlier detection
- monthly seasonality
- trend
- stockout demand reconstruction
- MOQ and multiplicity rounding
- HMAC-SHA256 pseudonymization
- Web Worker
Особенности
Полностью офлайн-решение без сервера и LLM с двумя сборками (статический сайт и portable EXE) и трёхъязычным интерфейсом (қаз/рус/eng); история коммитов состоит в основном из загрузок и удалений файлов через веб-интерфейс GitHub.
Стек
JavaScript · HTML5 · CSS · Node.js · Electron · electron-builder · GitHub Actions · GitHub Pages
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-095d481c-zeta-team.
README
README.mdProcureFlow — Web / Windows
Қазақша
Өнім қандай мәселені шешеді · Іске қосу · Технологиялар · Шешімді тексеру
Өнім қандай мәселені шешеді
HACKALEM AI / «Электрокомплект» ЖШС кейсі бойынша жеткізушілерге берілетін тапсырыстарды есептеуге арналған қолданба. Сату тарихын, қойма қалдықтарын, жолдағы тауарларды, маусымдылықты, сұраныстың өсуін, тауардың болмаған кезеңдерін және бір реттік ірі сатылымдарды өңдейді. Нәтижесінде түсіндірмесі бар, менеджер тексере алатын және файлға экспортталатын ұсыныстар қалыптасады.
Екі нұсқа да бір репозиторийде орналасқан, бірдей есептеулерді қолданады және қазақша, русский және English тілдерін қолдайды.
Негізгі пайдаланушы — сатып алу бөлімінің менеджері. ProcureFlow сату мен қалдықтар туралы деректерді бір есепке біріктіруге, қорды толықтыру қажеттілігін анықтауға және тапсырысты рәсімдеу алдында оны тексеруге көмектеседі. Маусымдылық, тұрақты өсу және тауар болмаған кездегі қанағаттандырылмаған сұраныс бөлек ескеріледі; бір реттік ірі сатып алулар, оның ішінде бір клиенттің ірі сатып алуы, тұрақты сұранысты бағалаудан алынып тасталады.
Кіріс деректері: сату тарихы, клиенттердің иесіздендірілген идентификаторлары, қоймалар бойынша қалдықтар, тауар болмаған кезеңдер (stockout), жолдағы тауарлар, санаттар, жеткізушілердің жеткізу мерзімдері және 1С жүйесінен алынған материалдық ведомость. Нәтиже: жеткізушілер бойынша топтастырылған, әр артикул үшін саны, тапшылық қаупі және негіздемесі көрсетілген ұсыныстар. Менеджер тапсырысты түзетіп, бекітеді, содан кейін файлды өзі экспорттайды.
Өнімнің мақсаты — артық қорды, тапшылықты және Excel-де қолмен есептеуге кететін уақытты азайту. Нақты экономикалық әсерді компанияның тарихи деректері мен пилоттық қолдану нәтижелері бойынша бағалау қажет.
Іске қосу жолы
Кестеден қажетті нұсқаны таңдаңыз. Қадамдық командалар төменде берілген: Web нұсқасын компьютерде іске қосу, Windows нұсқасын бастапқы кодтан іске қосу, Windows EXE құрастыру. Дайын Portable EXE файлы Node.js орнатпай-ақ екі рет шерту арқылы іске қосылады.
Қай нұсқаны таңдау керек
| Міндет | Нені таңдау керек | Қалай ашылады |
|---|---|---|
| Қолданбаны сілтеме арқылы жылдам ашу, әртүрлі операциялық жүйеде жұмыс істеу | Web — main-web | GitHub Pages сайтында жарияланған нұсқа |
| Web нұсқасын өз компьютерінде жергілікті іске қосу | Web — main-web | START-WEB.cmd немесе npm start |
| Сайтқа кірмей, бөлек Windows терезесінде жұмыс істеу | Windows — main-windows | Portable EXE немесе Setup орнатқышы |
| Кодты өзгерту немесе Windows қолданбасын құрастыру | main-windows | Node.js 24, npm ci, npm start |
Есептеу және жүктелген кестелерді өңдеу пайдаланушының құрылғысында орындалады. Web нұсқасында серверлік дерекқор мен пайдаланушы тіркелгісі жоқ. Жарияланған сайтты ашу үшін интернет қажет; интернетсіз тұрақты жұмыс істеу үшін жергілікті веб-серверді немесе дайын Windows қолданбасын пайдаланыңыз.
.pfproject жобалары екі нұсқа арасында үйлесімді. Жұмысты ауыстыру үшін жоба файлын бір нұсқада сақтап, екіншісінде ашыңыз. Автоматты синхрондау жоқ. Жобаны ашқаннан кейін тапсырыстарды қайта бекіту қажет.
Репозиторий құрылымы
ProcureFlow/
├── README.md
├── LICENSE
├── .gitignore
├── .gitattributes
├── .github/
│ └── workflows/
│ ├── pages.yml
│ └── build-windows.yml
├── main-web/
│ ├── index.html
│ ├── assets/
│ ├── scripts/
│ ├── tests/
│ ├── docs/
│ ├── package.json
│ ├── package-lock.json
│ └── START-WEB.cmd
└── main-windows/
├── index.html
├── assets/
├── desktop/
├── build/
├── scripts/
├── tests/
├── docs/
├── package.json
├── package-lock.json
├── START-WINDOWS.cmd
└── BUILD-WINDOWS.cmd
main-web және main-windows — Git тармақтары емес, қалталар. Репозиторийде ортақ main немесе master тармағы қолданылады. GitHub Actions баптаулары түбірлік .github қалтасында орналасады: GitHub ішкі main-web/.github немесе main-windows/.github қалталарындағы workflow файлдарын іске қоспайды.
Әр нұсқаның жеке package.json файлы және өз тәуелділіктері бар. npm командалары таңдалған қалтаның ішінде орындалады. Бастапқы код, жұмыс деректері және құрастыру нәтижелері араластырылмайды: Web нұсқасы main-web/_site қалтасына, Windows нұсқасы main-windows/dist қалтасына құрастырылады.
Тілді таңдау
Қолданбаның тіл тізімінен Қазақша, Русский немесе English таңдаңыз. Тілді ауыстыру бетті қайта жүктемейді; ағымдағы деректер, қолмен енгізілген мөлшерлер және тапсырыстардың бекітілу күйі сақталады. Таңдалған тіл құрылғыда жұмыс жобасынан бөлек сақталады.
Қолданбаның интерфейсі аударылады. Тауарлар, жеткізушілер, қоймалар атаулары және файлдарыңыздағы басқа мәндер бастапқы күйінде қалады. Экспортталатын есептердегі стандартты тақырыптар мен негіздемелер таңдалған тілде беріледі. Кіріс шаблондарының құрылымы мен 1С жүйесімен алмасуға арналған бапталатын баған атаулары тіл ауысқанда өзгермейді.
Web нұсқасын компьютерде іске қосу
Node.js 24 және онымен бірге npm орнатыңыз. Жүктеп алынған репозиторийдің түбірінде PowerShell ашыңыз:
cd main-web
npm.cmd start
http://127.0.0.1:8000/ мекенжайын ашыңыз. Сервер терезесін ашық ұстаңыз; жұмысты аяқтау үшін Ctrl+C басыңыз. Командалардың орнына main-web/START-WEB.cmd файлын екі рет шертуге болады.
macOS/Linux жүйелерінде npm.cmd орнына npm қолданыңыз. Web нұсқасын іске қосу үшін сыртқы npm тәуелділіктері қажет емес. Фондық есептеулер мен браузердің қорғаныс тетіктері жұмыс істеуі үшін оны жергілікті HTTP-сервер арқылы ашыңыз.
Windows нұсқасын бастапқы кодтан іске қосу
Windows x64 және Node.js 24 қажет. Репозиторий түбірінен жаңа PowerShell терезесін ашып, орындаңыз:
cd main-windows
npm.cmd ci
Remove-Item Env:ELECTRON_RUN_AS_NODE -ErrorAction SilentlyContinue
npm.cmd start
Тәуелділіктерді алғаш орнатқанда және бірінші рет іске қосқанда Electron жүктеу үшін интернет қажет. Қайта іске қосу үшін npm.cmd start жеткілікті. package-lock.json өзгергеннен кейін npm.cmd ci командасын қайта орындаңыз.
Баламасы — main-windows/START-WINDOWS.cmd файлын екі рет шерту. Ол тәуелділіктер жоқ болса, оларды орнатып, қолданбаны ашады.
Windows EXE құрастыру
main-windows қалтасында орындаңыз:
npm.cmd ci
npm.cmd test
npm.cmd run check:offline
npm.cmd run dist:win
Немесе BUILD-WINDOWS.cmd файлын іске қосыңыз. main-windows/dist қалтасында мына файлдар пайда болады:
- ProcureFlow-Portable-…-x64.exe — орнатусыз іске қосылады.
- ProcureFlow-Setup-…-x64.exe — ағымдағы пайдаланушыға арналған орнатқыш.
Дайын EXE үшін Node.js қажет емес. Қолданба интернетсіз, жергілікті жұмыс істейді. Бұл репозиторийде Windows кодына қол қою сертификаты бапталмаған; құрастырылған файлдарда шығарушының цифрлық қолтаңбасы болмайды.
Қолданылатын технологиялар
| Құрамдас бөлік | Технологиялар және олардың мақсаты |
|---|---|
| Екі нұсқаның интерфейсі | UI-фреймворксыз HTML5, CSS және JavaScript; орыс, қазақ және ағылшын тілдерінің жергілікті сөздіктері |
| Web | Статикалық сайт; Node.js жүйесінің кіріктірілген модуліндегі жергілікті HTTP-сервер; GitHub Pages арқылы жариялау |
| Windows | Electron 44.4.5; electron-builder 26.16.1 Windows x64 үшін Portable EXE және NSIS орнатқышын құрастырады |
| Есептеу | JavaScript тіліндегі жеке алгоритм: ауытқулар үшін медиана/MAD, айлық маусымдылық, тренд, stockout кезіндегі сұранысты қалпына келтіру, қалдықтар мен уақтылы жеткізілімдерді, ең аз тапсырыс партиясын және еселікті ескеру |
| Импорт және экспорт | Жеке XLSX/CSV/ZIP модулі; браузердің File/Blob, DOMParser және DecompressionStream құралдары; импортты фондық өңдеуге арналған Web Worker |
| Деректер және құпиялық | Жергілікті .pfproject JSON-жобалары; танылған клиент идентификаторлары үшін Web Crypto HMAC-SHA256; тіл таңдауын сақтау үшін localStorage |
| Тексерулер және құрастыру | Node.js, npm және бекітілген package-lock.json файлдары; есептеу мен қауіпсіздікті тексеру, Electron ішіндегі интерфейс сценарийлері; GitHub Actions |
Бастапқы кодпен жұмыс істеу үшін Node.js 24 ұсынылады; package.json 22.12.0 және одан кейінгі нұсқаларға рұқсат береді. Есептеуге арналған серверлік дерекқор мен сыртқы сервистер жоқ. Болжам сипатталған статистикалық ережелер бойынша жасалады; сыртқы тілдік модель немесе оқытылған нейрондық желі қолданылмайды.
Бір репозиторийді GitHub-қа жүктеу
Мысалы, procureflow атты бос репозиторий жасаңыз. Дайындалған бастапқы код архивін ашып, жасырын .github қалтасын қоса алғанда, оның ішіндегісін жүктеңіз. Репозиторийдің басты бетінде README.md, LICENSE, main-web және main-windows көрінуі керек.
Git қолдансаңыз, жоба түбірінде терминал ашыңыз:
git init
git branch -M main
git add .
git status
git commit -m "Add ProcureFlow Web and Windows"
git remote add origin https://github.com/YOUR_LOGIN/procureflow.git
git push -u origin main
YOUR_LOGIN орнына GitHub пайдаланушы атыңызды жазыңыз. git status нәтижесіндегі тізімді тексеріңіз: коммерциялық деректер файлдары, .pfproject, node_modules, _site және dist коммитке кірмеуі керек. .gitignore оларды алдын ала алып тастайды.
Web нұсқасын жариялау
- Settings → Pages → Build and deployment → Source: GitHub Actions бөлімін ашыңыз.
- Actions → Web checks and GitHub Pages → Run workflow бөлімін ашып, негізгі main немесе master тармағын таңдаңыз.
- Процестің сәтті аяқталуын күтіңіз. Сайт сілтемесі Settings → Pages бөлімінде және github-pages ортасында пайда болады.
Workflow main-web нұсқасын тексереді, main-web/_site қалтасын жасайды және тек оның ішіндегісін жариялайды. Сайттағы қолданба https://YOUR_LOGIN.github.io/procureflow/ түріндегі мекенжайда ашылады; соңына /main-web/ қосылмайды. Windows бастапқы коды, тесттер және жұмыс файлдары сайтқа кірмейді.
Кейінгі өзгерістер кезінде жариялау репозиторийдің негізгі тармағынан орындалады. Pull request кезінде жариялаусыз тексерулер іске қосылады. Pages қолжетімділігі GitHub баптаулары мен тарифіне байланысты. GitHub Pages ресми нұсқаулығы.
Windows EXE файлын GitHub арқылы алу
- Actions → Build Windows EXE бөлімін ашыңыз.
- Сәтті аяқталған іске қосуды таңдаңыз немесе Run workflow басыңыз.
- Аяқталған іске қосуда Artifacts → ProcureFlow-Windows-x64 бөлімін ашыңыз.
- Жүктелген архивті ашып, Portable немесе Setup таңдаңыз.
Workflow main/master тармақтарындағы Windows нұсқасы өзгергенде, pull request кезінде және қолмен іске қосылады. Ол main-windows қалтасында бекітілген тәуелділіктерді орнатады, тексерулерді орындайды, EXE құрастырады және оралған қолданбаны тексереді. Артефакт құрамында Portable, Setup, SHA256SUMS.txt, тексеру есебі және тәуелділіктердің lock-файлы бар. Сақтау мерзімі — 14 күн; содан кейін құрастыруды қайталауға болады. GitHub Release автоматты түрде жасалатындай бапталмаған.
Алғашқы есептеу және экспорт
- Демоны ашыңыз немесе деректерді жүктеу бетінде XLSX/CSV/ZIP файлдарын жүктеңіз. Коммерциялық тест файлдары репозиторийге кірмейді.
- Танылған дереккөздерді, есептеу күнін және деректер қателерін тексеріңіз. Параметрлерде жеткізушілердің мерзімдерін, қойманы, тапсырыс циклін, қорды және жоспарлы өсімді көрсетіңіз.
- Ұсыныстарды және тауар карточкасын ашыңыз: онда формула, маусымдылық, тренд, алынып тасталған сатылымдар және тауар болмаған кезеңдегі сұранысты өтеуге арналған түзету көрсетіледі.
- Белгісіз қалдықтарды нақтылап, қажет болса, ең аз партия мен еселікті ескере отырып, мөлшерді өзгертіңіз.
- Жеткізушілер бөлімінде тапсырысты тексеріп, жауапты тұлғаны көрсетіңіз және тексеруді растаңыз. Экспорт пайдаланушының әрекетімен орындалады; қолданба тапсырысты жеткізушіге өзі жібермейді.
- Кейін жалғастыру үшін жобаны қолмен сақтаңыз. Жұмыс жобасы автоматты түрде сақталмайды.
1С жүйесінің әмбебап конфигурациясы үшін бекітілген, нөлден үлкен мөлшерлерді XLSX/CSV пішімінде экспорттау қарастырылған. Ұйымды, қойманы көрсетіп, баған атауларын өз дерекқорыңыздың жүктеу өңдегішімен сәйкестендіріңіз. CSV UTF-8 кодтауын BOM белгісімен және «;» бөлгішімен қолданады; XLSX кодтарды мәтін, мөлшерлерді сан ретінде сақтайды.
Әмбебап алмасу пішімі кез келген 1С дерекқорымен дайын интеграция бар дегенді білдірмейді. Жұмыста қолданар алдында тестілік базаға жүктеуді тексеріңіз. Есептеу әдістемесі, ауытқуларды алып тастау және кіріс шаблоны.
Шешімді тексеру жолы
Демонстрация және қабылдау үшін қолмен тексеру
Сценарийді әр нұсқада синтетикалық деректермен орындаңыз. Ол үшін коммерциялық архивтер қажет емес. Төмендегі батырма атаулары орыс тіліндегі интерфейске сәйкес берілген; «Очистить» әрекетін тек тестілік жобада орындаңыз.
| Қадам | Әрекет | Күтілетін нәтиже |
|---|---|---|
| 1 | Қолданбаны іске қосып, «Демоданные» немесе «Открыть демо» таңдаңыз | 42 тауар позициясы және есептеу қатесіз ұсыныстар пайда болады |
| 2 | Русский → Қазақша → English тілдерін кезекпен таңдап, орыс тіліне оралыңыз | Интерфейс пен негіздемелер аударылады; артикулдар, бастапқы атаулар және мөлшерлер өзгермейді; қайта іске қосқаннан кейін таңдалған тіл сақталады |
| 3 | Ұсыныстарды, тауардың «Почему?» карточкасын және жеткізушілер бөлімін ашыңыз | Карточкада сұраныс, қор, қалдық, есепке алынған жеткізілімдер, дөңгелектеу және түсіндірме көрсетіледі; тапсырыстарды жеткізуші бойынша көруге болады |
| 4 | Тапсырыс мөлшері нөлден үлкен демотауардың расталған қалдығын 1000000 мәніне өзгертіп, «Сохранить данные и пересчитать» басыңыз | Осы тауарға ұсынылатын тапсырыс нөлге тең болады: қолжетімді үлкен қалдық қажеттілікті өтейді |
| 5 | Жүктеу бетінде «Скачать шаблон» басып, тест деректерін тазартыңыз және алынған XLSX файлын жүктеңіз | 2 тауар мен 2 жеткізуші танылады; сату, қалдықтар, жеткізілімдер, маусымдылық және stockout дереккөздері көрінеді |
| 6 | Есептеу күнін және параметрлерді тексеріңіз. Қажет болса, ең аз партия мен еселікті ескеріп, нөлден үлкен мөлшерді түзетіңіз; содан кейін жеткізушіге тапсырысты бекітіңіз | Бекіту үшін жауапты тұлға және тексеруді растау қажет; журналда әрекет пайда болады |
| 7 | Ұйымды, қойманы және бағандарды көрсетіп, бекітілген тапсырысты 1С үшін XLSX/CSV пішіміне өзіңіз экспорттаңыз | Бекітілген, нөлден үлкен мөлшерлер бар файл жүктеледі; артикулдар мен мөлшерлер тапсырысқа сәйкес келеді; жеткізушіге автоматты жіберу орындалмайды |
| 8 | .pfproject файлын сақтап, оны қолданбаның басқа нұсқасында ашыңыз | Деректер, параметрлер және қолмен енгізілген мөлшерлер қалпына келеді; тапсырысты әрі қарай экспорттау үшін қайта бекіту қажет |
1С файлын алдымен компанияда қолданылатын жүктеу өңдегіші арқылы тестілік базаға жүктеңіз. Номенклатура кодтарының, қойманың, жеткізушінің, өлшем бірліктері мен мөлшердің сәйкестігін тексеріңіз. Бұл тексерусіз нақты базамен үйлесімділік расталды деп есептелмейді.
Техникалық тапсырманың міндетті талаптарын тексеру
Қолмен орындалатын сценарий менеджердің жұмысын тексереді. Алгоритмнің әрекеті есептеу тесттеріндегі және қабылдау тесттеріндегі қайта орындалатын синтетикалық деректер жиындарымен тексеріледі; дәл осындай жиындар main-windows қалтасында да бар.
| Талап | Нені растау қажет |
|---|---|
| Барлық дереккөздер базалық қажеттілікті есептеуге қатысады | Бақылау сценарийлерінде тарихтың, қалдықтардың, уақтылы жеткізілімдердің, санаттың және жоспарлы өсімнің өзгеруі нәтижеге әсер етеді |
| Маусымдылық және тұрақты өсу | Маусымдық шың болжамда көрінеді; тұрақты үрдіс болжамды тұрақты сұранысқа қатысты өзгертеді |
| Stockout кезіндегі қанағаттандырылмаған сұраныс | Түзету нақты сатылымдар бойынша есептеумен салыстырғанда сұраныс бағасын арттырады |
| Бір реттік ірі тапсырыстар | Бір клиенттің қосылған 10 000 бірлік сатып алуы тұрақты қажеттілікті соған шамалас көлемде арттырмайды |
| Жеткізушілер бойынша түсіндірмесі бар тапсырыстар | Ұсыныстарда негіздемелер бар; интерфейс тапсырыстарды топтастырып, бекіту алдында тексеруге мүмкіндік береді |
Автоматты тексеру
Репозиторий түбірінен орындаңыз:
npm.cmd --prefix main-web test
npm.cmd --prefix main-web run check:offline
npm.cmd --prefix main-web run build
npm.cmd --prefix main-windows ci
npm.cmd --prefix main-windows test
npm.cmd --prefix main-windows run check:offline
Remove-Item Env:ELECTRON_RUN_AS_NODE -ErrorAction SilentlyContinue
npm.cmd --prefix main-windows run test:desktop
Күтілетін нәтиже: барлық команда қатесіз аяқталады; npm test әр нұсқа үшін 72 сәтті тексеруді, ал test:desktop жұмыс істеп тұрған Windows қолданбасындағы 58 тексеруді көрсетеді. Web құрастыруы main-web/_site қалтасын жасайды. 1.1 нұсқасын тексерудің тіркелген нәтижелері мен шектеулері: Web, Windows.
Тексерулер есептеуді, жоба пішімін, техникалық тапсырма сценарийлерін, жолдар мен ресурстар қауіпсіздігін, веб-сайт пен Electron қолданбасын орауды қамтиды. Windows тексеруі қосымша қолданбаны ашып, интерфейс сценарийлерін орындайды. Ортақ assets файлдарының өзгерістерін екі нұсқаға да көшіріп, бөлек тексеру керек: бұлар символдық сілтемелерсіз екі тәуелсіз код көшірмесі.
GitHub workflow файлдары репозиторийде дайындалған. Олардың сіздің GitHub-та орындалуы код жүктеліп, қажетті мүмкіндіктер қосылғаннан кейін басталады.
Деректер және шектеулер
Импорт келісілген, иесіздендірілген деректер жиынынан алынуы тиіс. Танылған клиент өрістері есептеуге дейін жергілікті HMAC-SHA256 идентификаторларымен ауыстырылады; белгісіз мәтіндік өрістерде сезімтал ақпарат болуы мүмкін. Жұмыс жобалары мен экспорт коммерциялық көрсеткіштерді қамтиды және қолданба арқылы шифрланбайды.
.pfproject файлдары бастапқы парақтарсыз қалыпқа келтірілген деректер мен журналды сақтайды. Журнал — жергілікті әрекеттер тарихы; ол электрондық қолтаңба да, қолжетімділікті шектеу жүйесі де емес. Жұмыс жобалары мен деректер файлдарын GitHub-қа жүктемеңіз.
Белгісіз қалдық нөлге тең емес. Ұсыныстардың дәлдігі қалдықтар, жеткізу мерзімдері, клиент идентификаторлары және stockout кезеңдері туралы деректердің толықтығына байланысты. Экономикалық әсер мен болжам сапасын компанияның тарихи деректері бойынша тексеру қажет. Бір файлдың/ZIP көлемінің шегі — 25 МБ, жобаның шегі — 80 МБ; XLS, XLSB және шифрланған кітаптар қолдау таппайды.
Бастапқы код лицензиясы — MIT.
1.1 нұсқасының толық нәтижелері: Web, Windows.
Русский
Что решает продукт · Как запустить · Технологии · Проверка решения
Что решает продукт
Приложение для расчёта заказов поставщикам по кейсу HACKALEM AI / ТОО «Электрокомплект». Обрабатывает историю продаж, остатки, товары в пути, сезонность, рост спроса, периоды отсутствия товара и разовые крупные продажи. Результат — рекомендации с объяснениями, проверкой менеджером и экспортом.
Обе версии находятся в одном репозитории, используют одинаковые расчёты и поддерживают қазақша, русский и English.
Основной пользователь — менеджер отдела закупа. ProcureFlow помогает свести выгрузки продаж и остатков в один расчёт, определить потребность в пополнении и проверить её до оформления заказа. Сезонность, устойчивый рост и упущенный спрос при отсутствии товара учитываются отдельно; разовые крупные покупки, в том числе одного клиента, исключаются из оценки регулярного спроса.
Вход: история продаж, обезличенные клиентские идентификаторы, остатки по складам, периоды stockout, товары в пути, категории, сроки поставщиков и материальная ведомость из 1С. Выход: рекомендации по артикулам, сгруппированные по поставщикам, с количеством, риском дефицита и обоснованием. Менеджер корректирует и утверждает заказ, затем явно выгружает файл.
Цель продукта — уменьшить избыток запасов, дефицит и время ручного расчёта в Excel. Фактический экономический эффект нужно оценить на истории и в пилоте компании.
Как запустить
Выберите вариант в таблице. Пошаговые команды приведены ниже: Web на компьютере, Windows из исходников, сборка Windows EXE. Готовый Portable EXE запускается двойным щелчком без установки Node.js.
Какую версию выбрать
| Задача | Что выбрать | Как открыть |
|---|---|---|
| Быстро открыть приложение по ссылке, работать на разных ОС | Web — main-web | Опубликованный сайт GitHub Pages |
| Запустить веб локально на своём компьютере | Web — main-web | START-WEB.cmd или npm start |
| Работать в отдельном окне Windows без доступа к сайту | Windows — main-windows | Portable EXE или установщик Setup |
| Изменять код или собирать Windows-приложение | main-windows | Node.js 24, npm ci, npm start |
Расчёт и обработка загруженных таблиц выполняются на устройстве. У веб-версии нет серверной базы и учётной записи. Для открытия опубликованного сайта требуется интернет; для надёжной работы без интернета используйте локальный веб-сервер или готовое Windows-приложение.
Проекты .pfproject совместимы между версиями. Для переноса сохраните файл проекта в одной версии и откройте его в другой. Автоматической синхронизации нет. После открытия проекта заказы нужно утвердить заново.
Структура репозитория
ProcureFlow/
├── README.md
├── LICENSE
├── .gitignore
├── .gitattributes
├── .github/
│ └── workflows/
│ ├── pages.yml
│ └── build-windows.yml
├── main-web/
│ ├── index.html
│ ├── assets/
│ ├── scripts/
│ ├── tests/
│ ├── docs/
│ ├── package.json
│ ├── package-lock.json
│ └── START-WEB.cmd
└── main-windows/
├── index.html
├── assets/
├── desktop/
├── build/
├── scripts/
├── tests/
├── docs/
├── package.json
├── package-lock.json
├── START-WINDOWS.cmd
└── BUILD-WINDOWS.cmd
main-web и main-windows — папки, а не ветки Git. Репозиторий использует общую ветку main или master. Настройки GitHub Actions находятся в корневой папке .github: GitHub не запускает workflows из вложенных main-web/.github или main-windows/.github.
У каждой версии отдельный package.json и свои зависимости. Команды npm выполняются внутри выбранной папки. Исходники, рабочие данные и результаты сборки не смешиваются: веб собирается в main-web/_site, Windows — в main-windows/dist.
Выбор языка
В списке языка приложения выберите Қазақша, Русский или English. Переключение не перезагружает страницу и сохраняет текущие данные, ручные количества и утверждения заказов. Выбор языка запоминается на устройстве отдельно от рабочего проекта.
Переводится интерфейс приложения. Наименования товаров, поставщиков, складов и другие значения из ваших файлов сохраняются в исходном виде. Обычные заголовки и обоснования в экспортируемых отчётах используют выбранный язык. Структура входных шаблонов и настраиваемые названия колонок обмена с 1С не меняются при выборе языка.
Запуск Web на компьютере
Установите Node.js 24 вместе с npm. Откройте PowerShell в корне скачанного репозитория:
cd main-web
npm.cmd start
Откройте адрес http://127.0.0.1:8000/. Держите окно сервера открытым; для завершения нажмите Ctrl+C. Можно вместо команд дважды щёлкнуть main-web/START-WEB.cmd.
На macOS/Linux используйте npm вместо npm.cmd. У веб-версии нет внешних npm-зависимостей для запуска. Открывайте её через локальный HTTP-сервер, чтобы работали фоновые вычисления и браузерные механизмы защиты.
Запуск Windows из исходников
Нужны Windows x64 и Node.js 24. В новом окне PowerShell из корня репозитория:
cd main-windows
npm.cmd ci
Remove-Item Env:ELECTRON_RUN_AS_NODE -ErrorAction SilentlyContinue
npm.cmd start
При первой установке зависимостей и первом запуске нужен интернет для скачивания Electron. Для повторного запуска достаточно npm.cmd start. После изменения package-lock.json снова выполните npm.cmd ci.
Альтернатива — двойной щелчок по main-windows/START-WINDOWS.cmd. Он устанавливает зависимости при их отсутствии и открывает приложение.
Сборка Windows EXE
В папке main-windows выполните:
npm.cmd ci
npm.cmd test
npm.cmd run check:offline
npm.cmd run dist:win
Или запустите BUILD-WINDOWS.cmd. В main-windows/dist появятся:
- ProcureFlow-Portable-…-x64.exe — запуск без установки.
- ProcureFlow-Setup-…-x64.exe — установщик для текущего пользователя.
Для готового EXE Node.js не нужен. Приложение работает локально без интернета. Сертификат подписи Windows в этом репозитории не настроен; сборки будут без цифровой подписи издателя.
Какие технологии используются
| Компонент | Технологии и назначение |
|---|---|
| Интерфейс обеих версий | HTML5, CSS и JavaScript без UI-фреймворка; локальные словари русского, казахского и английского языков |
| Web | Статический сайт; локальный HTTP-сервер на встроенном модуле Node.js; публикация через GitHub Pages |
| Windows | Electron 44.4.5; electron-builder 26.16.1 собирает Portable EXE и установщик NSIS для Windows x64 |
| Расчёт | Собственный алгоритм на JavaScript: медиана/MAD для выбросов, месячная сезонность, тренд, восстановление stockout, учёт остатков и своевременных поставок, минимальной партии и кратности |
| Импорт и экспорт | Собственный модуль XLSX/CSV/ZIP; браузерные File/Blob, DOMParser и DecompressionStream; Web Worker для фоновой обработки импорта |
| Данные и приватность | Локальные JSON-проекты .pfproject; Web Crypto HMAC-SHA256 для распознанных клиентских идентификаторов; localStorage для выбора языка |
| Проверки и сборка | Node.js, npm и закреплённые package-lock.json; проверки расчёта и безопасности, сценарии интерфейса в Electron; GitHub Actions |
Для работы с исходниками рекомендуется Node.js 24; package.json допускает версии от 22.12.0. Серверной базы данных и внешних сервисов для расчёта нет. Прогноз строится по описанным статистическим правилам; внешняя языковая модель или обученная нейросеть не используются.
Как загрузить один репозиторий в GitHub
Создайте пустой репозиторий, например procureflow. Распакуйте подготовленный архив исходников и загрузите его содержимое, включая скрытую .github. На главной странице репозитория должны быть видны README.md, LICENSE, main-web и main-windows.
При использовании Git откройте терминал в корне проекта:
git init
git branch -M main
git add .
git status
git commit -m "Add ProcureFlow Web and Windows"
git remote add origin https://github.com/YOUR_LOGIN/procureflow.git
git push -u origin main
Замените YOUR_LOGIN своим именем GitHub. Проверьте список после git status: коммерческие выгрузки, .pfproject, node_modules, _site и dist не должны попасть в коммит. .gitignore уже исключает их.
Публикация Web
- Откройте Settings → Pages → Build and deployment → Source: GitHub Actions.
- Откройте Actions → Web checks and GitHub Pages → Run workflow и выберите основную ветку main или master.
- Дождитесь успешного завершения. Ссылка на сайт появится в Settings → Pages и в окружении github-pages.
Workflow проверяет main-web, создаёт main-web/_site и публикует только его содержимое. На сайте приложение открывается по адресу вида https://YOUR_LOGIN.github.io/procureflow/, без /main-web/ в конце. Исходники Windows, тесты и рабочие файлы не входят в сайт.
При последующих изменениях публикация выполняется из основной ветки репозитория. В pull request запускаются проверки без публикации. Возможность Pages зависит от настроек и тарифа GitHub. Официальная инструкция GitHub Pages.
Получение Windows EXE через GitHub
- Откройте Actions → Build Windows EXE.
- Выберите успешный запуск или нажмите Run workflow.
- В завершённом запуске откройте Artifacts → ProcureFlow-Windows-x64.
- Распакуйте скачанный архив и выберите Portable либо Setup.
Workflow запускается при изменениях Windows-версии в main/master, pull request и вручную. Он устанавливает закреплённые зависимости в main-windows, запускает проверки, собирает EXE и проверяет упакованное приложение. Артефакт содержит Portable, Setup, SHA256SUMS.txt, отчёт проверки и lock-файл зависимостей. Срок хранения — 14 дней; затем сборку можно повторить. Автоматическое создание GitHub Release не настроено.
Первый расчёт и экспорт
- Откройте демо или загрузите XLSX/CSV/ZIP на странице загрузки данных. Коммерческие тестовые файлы не входят в репозиторий.
- Проверьте распознанные источники, дату среза и ошибки данных. В параметрах укажите сроки поставщиков, склад, цикл заказа, запас и плановый рост.
- Откройте рекомендации и карточку артикула: там показаны формула, сезонность, тренд, исключённые продажи и компенсация отсутствия товара.
- Уточните неизвестные остатки и при необходимости измените количество с учётом минимальной партии и кратности.
- В разделе поставщиков проверьте заказ, укажите ответственного и подтвердите проверку. Экспорт выполняется по действию пользователя; приложение само не отправляет заказ поставщику.
- Сохраните проект вручную, чтобы продолжить позже. Автосохранения рабочего проекта нет.
Для универсальной конфигурации 1С предусмотрен XLSX/CSV-экспорт утверждённых положительных количеств. Укажите организацию, склад и сопоставьте названия колонок с обработкой загрузки вашей базы. CSV использует UTF-8 с BOM и разделитель «;», XLSX сохраняет коды текстом, количества числами.
Универсальный формат обмена не означает готовую интеграцию с любой базой 1С. Перед рабочим использованием проверьте загрузку в тестовой базе. Методология расчёта, исключение выбросов и входной шаблон.
Как проверить решение
Ручная проверка для демонстрации и приёмки
Пройдите сценарий в каждой версии на синтетических данных. Коммерческие архивы для него не нужны. Названия кнопок ниже указаны для русского интерфейса; действие «Очистить» выполняйте только в тестовом проекте.
| Шаг | Действие | Ожидаемый результат |
|---|---|---|
| 1 | Запустите приложение и выберите «Демоданные» или «Открыть демо» | Появляются 42 товарные позиции и рекомендации без ошибок расчёта |
| 2 | Переключите Русский → Қазақша → English, затем вернитесь к русскому | Интерфейс и обоснования переводятся; артикулы, исходные названия и количества не меняются; выбранный язык сохраняется после повторного запуска |
| 3 | Откройте рекомендации, «Почему?» у товара и раздел поставщиков | Карточка показывает спрос, запас, остаток, учтённые поставки, округление и объяснение; заказы можно посмотреть по поставщику |
| 4 | У демотовара с положительным заказом измените подтверждённый остаток на 1000000 и нажмите «Сохранить данные и пересчитать» | Рекомендация для этого товара становится нулевой: большой доступный остаток покрывает потребность |
| 5 | На странице загрузки нажмите «Скачать шаблон», очистите тестовые данные и загрузите полученный XLSX | Распознаются 2 товара и 2 поставщика; видны источники продаж, остатков, поставок, сезонности и stockout |
| 6 | Проверьте дату среза и параметры. При необходимости скорректируйте положительное количество с учётом минимальной партии и кратности; затем утвердите заказ поставщика | Для утверждения нужны ответственный и подтверждение проверки; в журнале появляется действие |
| 7 | Выполните явный экспорт утверждённого заказа в XLSX/CSV для 1С, указав организацию, склад и колонки | Скачивается файл с утверждёнными положительными количествами; артикулы и количества совпадают с заказом; автоматической отправки поставщику нет |
| 8 | Сохраните .pfproject и откройте его в другой версии приложения | Данные, параметры и ручные количества восстанавливаются; для дальнейшего экспорта заказа требуется повторное утверждение |
Файл для 1С сначала загрузите в тестовую базу через используемую в компании обработку. Проверьте сопоставление кодов номенклатуры, склада, поставщика, единиц и количества. Без этой проверки совместимость с конкретной базой не считается подтверждённой.
Проверка обязательных требований ТЗ
Ручной сценарий проверяет работу менеджера. Поведение алгоритма проверяют воспроизводимые синтетические наборы в тестах расчёта и тестах приёмки; такие же наборы есть в main-windows.
| Требование | Что должно подтвердиться |
|---|---|
| Все источники участвуют в базовой потребности | Изменение истории, остатков, своевременных поставок, категории и планового прироста влияет на результат в контрольных сценариях |
| Сезонность и устойчивый рост | Сезонный пик отражается в прогнозе; устойчивая тенденция меняет прогноз относительно постоянного спроса |
| Упущенный спрос при stockout | Компенсация повышает оценку спроса относительно расчёта по фактическим продажам |
| Разовые крупные заказы | Добавленная покупка 10 000 единиц одним клиентом не вызывает сопоставимого роста регулярной потребности |
| Заказы по поставщикам с объяснением | Рекомендации имеют обоснования; интерфейс группирует заказы и позволяет проверить их перед утверждением |
Автоматическая проверка
Из корня репозитория:
npm.cmd --prefix main-web test
npm.cmd --prefix main-web run check:offline
npm.cmd --prefix main-web run build
npm.cmd --prefix main-windows ci
npm.cmd --prefix main-windows test
npm.cmd --prefix main-windows run check:offline
Remove-Item Env:ELECTRON_RUN_AS_NODE -ErrorAction SilentlyContinue
npm.cmd --prefix main-windows run test:desktop
Ожидаемый результат: все команды завершаются без ошибок; npm test сообщает 72 успешные проверки для каждой версии, а test:desktop — 58 проверок в работающем Windows-приложении. Веб-сборка создаёт папку main-web/_site. Зафиксированные результаты и ограничения проверки версии 1.1: Web, Windows.
Проверки охватывают расчёт, формат проекта, сценарии ТЗ, безопасность путей и ресурсов, упаковку веб-сайта и Electron. Проверка Windows дополнительно открывает приложение и выполняет сценарии интерфейса. Изменения общих файлов assets необходимо переносить в обе версии и проверять отдельно: это две самостоятельные копии кода без символьных ссылок.
GitHub workflows подготовлены в репозитории. Их выполнение в вашем GitHub начинается после загрузки кода и включения нужных возможностей.
Данные и ограничения
Импорт должен поступать из согласованной обезличенной выгрузки. Распознанные клиентские поля заменяются локальными HMAC-SHA256 идентификаторами до расчёта; неизвестные текстовые поля могут содержать чувствительную информацию. Рабочие проекты и экспорт содержат коммерческие показатели и не зашифрованы приложением.
Файлы .pfproject сохраняют нормализованные данные и журнал, без исходных листов. Журнал является локальной историей действий, не электронной подписью и не системой разграничения доступа. Не загружайте рабочие проекты и выгрузки на GitHub.
Неизвестный остаток не равен нулю. Точность рекомендаций зависит от полноты остатков, сроков поставки, клиентских идентификаторов и периодов stockout. Экономический эффект и качество прогноза требуют проверки на истории компании. Лимит одного файла/ZIP — 25 МБ, проекта — 80 МБ; XLS, XLSB и зашифрованные книги не поддерживаются.
Лицензия исходного кода — MIT.
Подробные результаты версии 1.1: Web, Windows.
English
What the product solves · How to run · Technologies · How to verify
What the product solves
An application for calculating supplier orders for the HACKALEM AI / Elektrokomplekt LLP (ТОО «Электрокомплект») case. It processes sales history, stock balances, goods in transit, seasonality, demand growth, stockout periods, and one-off large sales. The result is a set of recommendations with explanations, manager review, and export.
Both versions are located in one repository, use the same calculations, and support қазақша, русский, and English.
The primary user is a procurement manager. ProcureFlow helps consolidate sales and inventory exports into a single calculation, determine replenishment needs, and review them before placing an order. Seasonality, sustained growth, and unmet demand during stockouts are accounted for separately; one-off large purchases, including those made by a single customer, are excluded from the estimate of regular demand.
Input: sales history, anonymized customer identifiers, stock balances by warehouse, stockout periods, goods in transit, categories, supplier lead times, and a materials statement from 1C. Output: recommendations by SKU, grouped by supplier, with quantities, shortage risk, and explanations. The manager adjusts and approves the order, then explicitly exports the file.
The product aims to reduce excess inventory, shortages, and time spent on manual Excel calculations. Its actual economic impact must be evaluated using the company's historical data and a pilot deployment.
How to run
Choose an option from the table. Step-by-step commands follow below: Web on your computer, Windows from source, and building a Windows EXE. A ready-made Portable EXE launches with a double-click, without installing Node.js.
Which version to choose
| Task | Choose | How to open |
|---|---|---|
| Open the application quickly via a link and work across operating systems | Web — main-web | Published GitHub Pages website |
| Run the web application locally on your computer | Web — main-web | START-WEB.cmd or npm start |
| Work in a separate Windows window without accessing the website | Windows — main-windows | Portable EXE or Setup installer |
| Modify the code or build the Windows application | main-windows | Node.js 24, npm ci, npm start |
Calculations and processing of uploaded spreadsheets run on the device. The web version has no server-side database or user account. Opening the published website requires an internet connection; for reliable offline use, run a local web server or the packaged Windows application.
.pfproject projects are compatible between versions. To transfer your work, save a project file in one version and open it in the other. There is no automatic synchronization. Orders must be approved again after opening a project.
Repository structure
ProcureFlow/
├── README.md
├── LICENSE
├── .gitignore
├── .gitattributes
├── .github/
│ └── workflows/
│ ├── pages.yml
│ └── build-windows.yml
├── main-web/
│ ├── index.html
│ ├── assets/
│ ├── scripts/
│ ├── tests/
│ ├── docs/
│ ├── package.json
│ ├── package-lock.json
│ └── START-WEB.cmd
└── main-windows/
├── index.html
├── assets/
├── desktop/
├── build/
├── scripts/
├── tests/
├── docs/
├── package.json
├── package-lock.json
├── START-WINDOWS.cmd
└── BUILD-WINDOWS.cmd
main-web and main-windows are folders, not Git branches. The repository uses a shared main or master branch. GitHub Actions configuration is in the root .github folder: GitHub does not run workflows from nested main-web/.github or main-windows/.github folders.
Each version has its own package.json and dependencies. Run npm commands inside the selected folder. Source code, working data, and build outputs are kept separate: the web build goes to main-web/_site, and the Windows build goes to main-windows/dist.
Language selection
Select Қазақша, Русский, or English from the application's language menu. Switching languages does not reload the page and preserves current data, manually entered quantities, and order approvals. The language preference is saved on the device separately from the working project.
The application interface is translated. Product, supplier, and warehouse names, along with other values from your files, remain unchanged. Standard headings and explanations in exported reports use the selected language. Input template structures and configurable column names for 1C exchange do not change when switching languages.
Running Web on your computer
Install Node.js 24 with npm. Open PowerShell at the root of the downloaded repository:
cd main-web
npm.cmd start
Open http://127.0.0.1:8000/. Keep the server window open; press Ctrl+C to stop it. Alternatively, double-click main-web/START-WEB.cmd.
On macOS/Linux, use npm instead of npm.cmd. The web version requires no external npm dependencies to run. Open it through a local HTTP server so that background calculations and browser security mechanisms work.
Running Windows from source
Requires Windows x64 and Node.js 24. In a new PowerShell window, starting at the repository root:
cd main-windows
npm.cmd ci
Remove-Item Env:ELECTRON_RUN_AS_NODE -ErrorAction SilentlyContinue
npm.cmd start
The first dependency installation and initial launch require an internet connection to download Electron. For subsequent launches, npm.cmd start is sufficient. Run npm.cmd ci again after package-lock.json changes.
Alternatively, double-click main-windows/START-WINDOWS.cmd. It installs dependencies if they are missing and opens the application.
Building a Windows EXE
Inside main-windows, run:
npm.cmd ci
npm.cmd test
npm.cmd run check:offline
npm.cmd run dist:win
Or run BUILD-WINDOWS.cmd. The following files will appear in main-windows/dist:
- ProcureFlow-Portable-…-x64.exe — runs without installation.
- ProcureFlow-Setup-…-x64.exe — installer for the current user.
A packaged EXE does not require Node.js. The application runs locally without an internet connection. A Windows code-signing certificate is not configured in this repository; builds will not have a publisher's digital signature.
Technologies used
| Component | Technologies and purpose |
|---|---|
| Interface in both versions | HTML5, CSS, and JavaScript without a UI framework; local Russian, Kazakh, and English dictionaries |
| Web | Static website; local HTTP server using a built-in Node.js module; deployment via GitHub Pages |
| Windows | Electron 44.4.5; electron-builder 26.16.1 packages a Portable EXE and an NSIS installer for Windows x64 |
| Calculation | Custom JavaScript algorithm: median/MAD for outliers, monthly seasonality, trend, stockout demand recovery, stock balances and on-time deliveries, minimum order quantity, and order multiples |
| Import and export | Custom XLSX/CSV/ZIP module; browser File/Blob, DOMParser, and DecompressionStream APIs; a Web Worker for background import processing |
| Data and privacy | Local .pfproject JSON projects; Web Crypto HMAC-SHA256 for recognized customer identifiers; localStorage for the language preference |
| Testing and build | Node.js, npm, and pinned package-lock.json files; calculation and security checks, interface scenarios in Electron; GitHub Actions |
Node.js 24 is recommended for working with the source code; package.json allows versions from 22.12.0 onward. There is no server-side database or external calculation service. Forecasts follow the documented statistical rules; no external language model or trained neural network is used.
Uploading a single repository to GitHub
Create an empty repository, for example procureflow. Extract the prepared source archive and upload its contents, including the hidden .github folder. The repository home page should show README.md, LICENSE, main-web, and main-windows.
When using Git, open a terminal at the project root:
git init
git branch -M main
git add .
git status
git commit -m "Add ProcureFlow Web and Windows"
git remote add origin https://github.com/YOUR_LOGIN/procureflow.git
git push -u origin main
Replace YOUR_LOGIN with your GitHub username. Check the file list after git status: commercial data exports, .pfproject, node_modules, _site, and dist must not be committed. .gitignore already excludes them.
Publishing Web
- Open Settings → Pages → Build and deployment → Source: GitHub Actions.
- Open Actions → Web checks and GitHub Pages → Run workflow and select the main or master branch.
- Wait for successful completion. The website link will appear in Settings → Pages and in the github-pages environment.
The workflow checks main-web, creates main-web/_site, and publishes only its contents. The application opens at an address such as https://YOUR_LOGIN.github.io/procureflow/, without /main-web/ at the end. Windows source code, tests, and working files are not included in the website.
Subsequent changes are published from the repository's main branch. Pull requests run checks without deployment. Pages availability depends on GitHub settings and the account plan. Official GitHub Pages guide.
Getting the Windows EXE through GitHub
- Open Actions → Build Windows EXE.
- Select a successful run or click Run workflow.
- In the completed run, open Artifacts → ProcureFlow-Windows-x64.
- Extract the downloaded archive and choose Portable or Setup.
The workflow runs when the Windows version changes on main/master, on pull requests, and when triggered manually. It installs pinned dependencies in main-windows, runs checks, builds the EXE, and verifies the packaged application. The artifact contains Portable, Setup, SHA256SUMS.txt, a verification report, and a dependency lock file. Retention is 14 days; the build can be repeated afterward. Automatic GitHub Release creation is not configured.
First calculation and export
- Open the demo or upload XLSX/CSV/ZIP files on the data upload page. Commercial test files are not included in the repository.
- Check the recognized sources, data cut-off date, and data errors. In the parameters, specify supplier lead times, warehouse, order cycle, buffer stock, and planned growth.
- Open the recommendations and a product card: it shows the formula, seasonality, trend, excluded sales, and stockout compensation.
- Clarify unknown stock balances and, if necessary, change quantities while respecting minimum order quantities and order multiples.
- In the supplier section, review the order, specify the responsible person, and confirm the review. Export is a user-initiated action; the application does not send orders to suppliers automatically.
- Save the project manually to continue later. Working projects are not autosaved.
For the universal 1C configuration, XLSX/CSV export of approved positive quantities is provided. Specify the organization and warehouse, and map column names to your database's import routine. CSV uses UTF-8 with a BOM and a semicolon delimiter; XLSX stores codes as text and quantities as numbers.
A universal exchange format does not mean out-of-the-box integration with every 1C database. Test the import in a test database before operational use. Calculation methodology, outlier exclusion, and input template.
How to verify the solution
Manual verification for demonstration and acceptance
Run this scenario in each version using synthetic data. No commercial archives are required. Button labels below refer to the Russian interface; use the «Очистить» (Clear) action only in a test project.
| Step | Action | Expected result |
|---|---|---|
| 1 | Launch the application and select «Демоданные» or «Открыть демо» | 42 product items and recommendations appear without calculation errors |
| 2 | Switch Русский → Қазақша → English, then return to Russian | The interface and explanations are translated; SKUs, original names, and quantities remain unchanged; the selected language persists after restarting |
| 3 | Open recommendations, a product's «Почему?» card, and the supplier section | The card shows demand, buffer stock, stock balance, included deliveries, rounding, and an explanation; orders can be viewed by supplier |
| 4 | For a demo product with a positive order quantity, change the confirmed stock balance to 1000000 and click «Сохранить данные и пересчитать» | The recommendation for this product becomes zero: the large available balance covers the requirement |
| 5 | On the upload page, click «Скачать шаблон», clear the test data, and upload the downloaded XLSX | 2 products and 2 suppliers are recognized; sales, inventory, deliveries, seasonality, and stockout sources are visible |
| 6 | Check the data cut-off date and parameters. If needed, adjust a positive quantity while respecting minimum order quantities and order multiples; then approve the supplier order | Approval requires a responsible person and confirmation of review; the action appears in the log |
| 7 | Explicitly export the approved order to XLSX/CSV for 1C, specifying the organization, warehouse, and columns | A file with approved positive quantities is downloaded; SKUs and quantities match the order; nothing is sent to the supplier automatically |
| 8 | Save a .pfproject file and open it in the other application version | Data, parameters, and manual quantities are restored; further order export requires renewed approval |
First import the 1C file into a test database using the company's import routine. Check the mapping of item codes, warehouse, supplier, units, and quantities. Compatibility with a particular database is not considered confirmed without this check.
Verifying the mandatory requirements
The manual scenario checks the manager's workflow. Algorithm behavior is verified using reproducible synthetic datasets in the calculation tests and acceptance tests; the same datasets are available in main-windows.
| Requirement | What must be confirmed |
|---|---|
| All sources contribute to the baseline requirement | Changes to history, stock balances, on-time deliveries, category, and planned growth affect the result in control scenarios |
| Seasonality and sustained growth | A seasonal peak is reflected in the forecast; a sustained trend changes the forecast relative to constant demand |
| Unmet demand during stockouts | Compensation increases the demand estimate compared with calculations based on actual sales |
| One-off large orders | An added purchase of 10,000 units by a single customer does not cause a comparable increase in regular replenishment needs |
| Supplier-grouped orders with explanations | Recommendations include explanations; the interface groups orders and allows review before approval |
Automated verification
From the repository root:
npm.cmd --prefix main-web test
npm.cmd --prefix main-web run check:offline
npm.cmd --prefix main-web run build
npm.cmd --prefix main-windows ci
npm.cmd --prefix main-windows test
npm.cmd --prefix main-windows run check:offline
Remove-Item Env:ELECTRON_RUN_AS_NODE -ErrorAction SilentlyContinue
npm.cmd --prefix main-windows run test:desktop
Expected result: all commands complete without errors; npm test reports 72 passing checks for each version, and test:desktop reports 58 checks in the running Windows application. The web build creates main-web/_site. Recorded results and verification limitations for version 1.1: Web, Windows.
The checks cover calculations, project format, case requirements, path and resource security, and website and Electron packaging. Windows verification also opens the application and runs interface scenarios. Changes to shared assets files must be copied into both versions and verified separately: these are two independent code copies without symbolic links.
GitHub workflows are prepared in the repository. Their execution in your GitHub account begins after uploading the code and enabling the required features.
Data and limitations
Imports must come from an agreed, anonymized export. Recognized customer fields are replaced with local HMAC-SHA256 identifiers before calculation; unknown text fields may contain sensitive information. Working projects and exports contain commercial metrics and are not encrypted by the application.
.pfproject files store normalized data and the log, without the original worksheets. The log is a local action history, not an electronic signature or an access-control system. Do not upload working projects or data exports to GitHub.
An unknown stock balance is not zero. Recommendation accuracy depends on the completeness of stock balances, lead times, customer identifiers, and stockout periods. Economic impact and forecast quality require validation against the company's historical data. The limit is 25 MB per file/ZIP and 80 MB per project; XLS, XLSB, and encrypted workbooks are not supported.
Source code license: MIT.
Авторы коммитов
История коммитов
- 2026-09-23 17:19Add files via uploadmaksattut
- 2026-09-23 17:16Add files via uploadmaksattut
- 2026-09-23 17:15Delete README.mdmaksattut
- 2026-09-23 17:00Add files via uploadIsko
- 2026-09-23 16:59Add files via uploadmaksattut
- 2026-09-23 16:58Add files via uploadmaksattut
- 2026-09-23 16:58Delete main-web directorymaksattut
- 2026-09-23 16:57Delete main win directorymaksattut
Все коммиты (50)
- 2026-09-23 16:50Delete LICENSEIsko
- 2026-09-23 16:45Add files via uploadmaksattut
- 2026-09-23 16:43Delete README.mdmaksattut
- 2026-09-23 16:17Add files via uploadmaksattut
- 2026-09-23 16:13Delete ProcureFlow-Web-repository directorymaksattut
- 2026-09-23 16:12Add files via uploadIsko
- 2026-09-23 16:11Delete ProcureFlow-Windows-repositoryIsko
- 2026-09-23 16:10Rename ProcureFlow-Windows-repository.zip to ProcureFlow-Windows-repositoryIsko
- 2026-09-23 16:10Add files via uploadIsko
- 2026-09-23 16:10Add files via uploadmaksattut
- 2026-09-23 16:08Delete package.jsonmaksattut
- 2026-09-23 16:08Delete index.htmlmaksattut
- 2026-09-23 16:07Delete BUILD-WINDOWS.cmdmaksattut
- 2026-09-23 16:07Delete tests directorymaksattut
- 2026-09-23 16:07Delete scripts directorymaksattut
- 2026-09-23 16:07Delete docs directorymaksattut
- 2026-09-23 16:06Delete desktop directorymaksattut
- 2026-09-23 16:06Delete main webIsko
- 2026-09-23 16:06Delete build directorymaksattut
- 2026-09-23 16:06Create main webIsko
- 2026-09-23 16:06Delete assets directorymaksattut
- 2026-09-23 16:04Delete .github/workflows directorymaksattut
- 2026-09-23 15:42Rename index to index.htmlmaksattut
- 2026-09-23 15:39Add files via uploadmaksattut
- 2026-09-23 15:34Rename README(1).md to README.mdmaksattut
- 2026-09-23 15:33Add files via uploadmaksattut
- 2026-09-23 15:33Delete index.htmlIsko
- 2026-09-23 15:32Create indexIsko
- 2026-09-23 15:32Delete README.mdmaksattut
- 2026-09-23 14:51Add GitHub Actions workflow for Windows buildmaksattut
- 2026-09-23 14:50Delete BUILD_WINDOWS_WORKFLOW.ymlmaksattut
- 2026-09-23 14:48Add files via uploadmaksattut
- 2026-09-23 14:48Add files via uploadIsko
- 2026-09-23 14:47Delete index.htmlIsko
- 2026-09-23 14:26Rename index (2).html to index.htmlIsko
- 2026-09-23 14:26Add files via uploadIsko
- 2026-09-23 14:26Delete indexmaksattut
- 2026-09-23 14:19Add files via uploadmaksattut
- 2026-09-23 14:18Delete README.mdmaksattut
- 2026-09-23 14:18Delete entire README.md contentmaksattut
- 2026-09-23 13:49Update print statement from 'Hello' to 'Goodbye'Isko
- 2026-09-23 13:48Revise README for project details and problem descriptionmaksattut
Структура репозитория (64 файлов)
LICENSE README.md main-web/LICENSE main-web/START-WEB.cmd main-web/assets/app.js main-web/assets/engine-worker.js main-web/assets/engine.js main-web/assets/favicon.svg main-web/assets/i18n.js main-web/assets/locales.js main-web/assets/planner.js main-web/assets/privacy.js main-web/assets/project.js main-web/assets/style.css main-web/assets/workspace.js main-web/assets/xlsx.js main-web/docs/METHODOLOGY.md main-web/docs/VERIFICATION.md main-web/index.html main-web/package-lock.json main-web/package.json main-web/scripts/build-web.cjs main-web/scripts/check-offline.cjs main-web/scripts/serve.cjs main-web/scripts/site-files.cjs main-web/tests/acceptance.test.cjs main-web/tests/engine.test.cjs main-web/tests/i18n.test.cjs main-web/tests/project.test.cjs main-web/tests/web.test.cjs main-windows/BUILD-WINDOWS.cmd main-windows/LICENSE main-windows/START-WINDOWS.cmd main-windows/assets/app.js main-windows/assets/engine-worker.js main-windows/assets/engine.js main-windows/assets/favicon.svg main-windows/assets/i18n.js main-windows/assets/locales.js main-windows/assets/planner.js main-windows/assets/privacy.js main-windows/assets/project.js main-windows/assets/style.css main-windows/assets/workspace.js main-windows/assets/xlsx.js main-windows/desktop/i18n-smoke.cjs main-windows/desktop/main.cjs main-windows/desktop/preload.cjs main-windows/desktop/security.cjs main-windows/desktop/smoke.cjs main-windows/docs/DESKTOP.md main-windows/docs/METHODOLOGY.md main-windows/docs/VERIFICATION.md main-windows/docs/verification/language-smoke.json main-windows/docs/verification/packaged-smoke.json main-windows/index.html main-windows/package-lock.json main-windows/package.json main-windows/scripts/check-offline.cjs main-windows/tests/acceptance.test.cjs main-windows/tests/desktop.test.cjs main-windows/tests/engine.test.cjs main-windows/tests/i18n.test.cjs main-windows/tests/project.test.cjs
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.