8.0 KiB
DepoT е софтуер за управление на контейнерно депо. Това е площадка, в която се съхраняват контейнери на различни фирми, могат да бъдат почиствани, измивани, фумигирани и т.н Софтуерът е предназначен за управление на дейностите в депото, включително приемане и издаване на контейнери, проследяване на техния статус и управление на складовите наличности.
За проекта
В проекта има 3 основни типа потребители:
- служители
- клиенти
- оператори (вход/изход) като има администратор(и) и клиент-администратор. Идеята е на всяка фирма да се даде един акаунт за клиентски администратор и той от своя страна да се грижи за управлението на потребителите във неговата фирма Служителите на депото и клиентите имат различни типове права и достъп до различни функционалности на системата.
Обработката протича по следния начин:
- Клиентът изпраща заявка за приемане на контейнер - Preinfo.
- Операторът проверява дали има предварителна информация за получаване на контейнера
- ако да, операторът приема контейнера и го маркира като приет, и при положение, че има видими дефекти по него, прави снимки и ги прикачва към досието на контейнера
- Когато фирмата има нужда от определен вид контейнери, те правят заявка (booking), в който описват вида, количеството и дават уникален номер на заявката (booking number). Освен това подават списък с камиони, които ще обработват този booking. По задание на клиента в този списък може да има повтарящи се номера на камиони показващо, че един камион може да получи n на брой контейнера по този букинг.
- Шофьорите на камиони могат да видят на външно табло дали има заявки за техния камион за да не се трупат камиони на едно място и да се оптимизира движението в депото.
- Когато шофьор отиде на портала, той показва booking number на оператора, който проверява дали има такъв booking и дали е за този камион. Ако всичко е наред, операторът издава контейнерите по заявката.
- Когато контейнерите са издадени, те се маркират като експедирани.
- На определена дата или период от време, който е зададен от клиента, се прави фактура за извършените услуги. Служител прави справка за неплатени престои на контейнери по фирми, избира няколко (или обикновено всички, но може да има друга уговорка) и създава плащане. Когато се създаде плащане, към него се добавят всички контейнери, които са били маркирани, и се изпраща имейл на клиента с 2 прикачени файла - фактура (сумарно) и детайли за за всички услуги. В писмото се подават 2 линка за плащане на фактурата - един за плащане с карта и един за плащане от сметка в EPay. Когато клиента използва един от линковете за плащане, в системата се получава известие от EPay за платената фактура и това се отразява автоматично в базата данни.
За разработка на проекта се използва Python с Django, като базата данни е PostgreSQL. Проектът е структуриран по модулен начин, което позволява лесно добавяне на нови функционалности и поддръжка на съществуващите.
Инсталация
За пускане на проекта локално е необходимо да се вдигне контейнер, в който са инсталирани PostgreSQL и minIO. MinIO е S3 съвместим bucket storage, който се използва за съхранение на снимки и други файлове, които се прикачват към контейнерите. Той е идеален за разработка, тъй като може да се използва локално и е съвместим с AWS S3 API. Това става с docker-compose.dev.yml, който е в корена на проекта.
след това трябва да се пуснат миграциите, за да се попълни базата данни с основни номенклатури и други данни, които са необходими за работата на проекта, както и има създаден суперпотребител: username: kikimor password: shushunka1
В конфигурацията на проекта трябва да се добави environment vairable: DJANGO_SETTINGS_MODULE=DepoT.settings.development Това е необходимо, за да се заредят development настройките на проекта, които са в DepoT/settings/development.py.
След стартиране на системата, се отваря landing страницата на DepoT. В нея има малко информация за депото, login бутон и бутон за таблото за шофьорите. При логване, в зависимост от типа на потребителя, се отваря различен dashboard. За служители и клиенти той изглежда почти еднакво, а за операторите е различен, тъй като те ползват таблети и интерфейса трябва да е по-опростен и удобен за работа с пръст(ръкавици).
Deployment
На адрес https://depot.kikimor.com/ е качена продукционна версия на проекта. В repository (https://git.kikimor.com) има нов branch (deploy_branch). В него има docker-compose-deploy.yml,с който се стартират всички контейнери (postgres, minio, createbuckets и самото приложение). Тук в контейнера се прави collectstatic, след което се качват в bucket "static" на minio и се сервират през него.
P.S.Тъй като не остана много време, не знам дали ще успея да обединя двата branch-а, затова последните промени засега ще са само в deploy_branch, който вие няма да можете да стартирате.