|
|
7 months ago | |
|---|---|---|
| .idea | 7 months ago | |
| DepoT | 7 months ago | |
| accounts | 7 months ago | |
| booking | 7 months ago | |
| common | 7 months ago | |
| common_api | 7 months ago | |
| containers | 7 months ago | |
| damages_api | 7 months ago | |
| images | 7 months ago | |
| minio_backend | 7 months ago | |
| original_db | 7 months ago | |
| payments | 7 months ago | |
| preinfo | 7 months ago | |
| static | 7 months ago | |
| staticfiles | 7 months ago | |
| staticfiles_orig | 7 months ago | |
| templates | 7 months ago | |
| unused templates | 7 months ago | |
| .dockerignore | 7 months ago | |
| .env | 7 months ago | |
| Dockerfile.createbuckets | 7 months ago | |
| Dockerfile.debug | 7 months ago | |
| db.sqlite3 | 7 months ago | |
| docker-compose with volume.yml | 7 months ago | |
| docker-compose-deploy.yml | 7 months ago | |
| docker-compose.dev.yml | 7 months ago | |
| docker-compose.yml | 7 months ago | |
| dockerfile | 7 months ago | |
| gemini.cmd - Shortcut.lnk | 7 months ago | |
| init_minio_buckets.sh | 7 months ago | |
| manage.py | 7 months ago | |
| miniomc.tar | 7 months ago | |
| populate_database.txt | 7 months ago | |
| production.env | 7 months ago | |
| readme.md | 7 months ago | |
| requirements.txt | 7 months ago | |
| test_minio_connection.py | 7 months ago | |
| test_minio_upload.py | 7 months ago | |
readme.md
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
След стартиране на системата, се отваря 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, който вие няма да можете да стартирате.