Проект для лагеря Надежда
Поминальник на будущее:
- система переводов и платежей должна быть обособленной, логировать все действия с собой, работать исключительно через API, а не прямыми манипуляциями в базе
- подключение кэша запросов, особенно для аналитики (redis)
- нужно дополнительное поле для разделения автоматического/ручного потребления
- механика потребления у городов
- аналитику стоит собрать и выделить в отдельное место
- основную логику хочется видеть на golang, на flask оставить только статистику (**)
- необходима нормальная система налогов (*)
- необходимо изменить цепочку user -> city -> prefecture
- нужно добавить больше функций просмотра для пользователей
- (**) как минимум нужно нормально зарефакторить каталоги, в идеале golang конечно
- назначение на должности
- (*) в случае ручной системы ввести назначение платежа в транзакции
- потребление товаров должно быть обратимым и легко валидированным
- бонусы надо уметь зачислять/списывать через UI
- к платежам надо уметь привязывать дополнительные данные для определения назначения платежа
- транзакции пользователей нужно уметь смотреть и манипулировать с ними через UI
Основная ветка - master. Напрямую в нее вносить изменения нельзя, поскольку мы используем ее как основную работающую и если кто-то неаккуратно в ней сломает, то будет неприятно :)
Для начала работы нам нужно склонировать репозиторий.
git clone https://gitverse.ru/ser1a/hope-project && cd hope-project
Теперь мы можем начинать работать. Для этого необходимо отвести новую ветку (my_branch - лучше переименовать - рекомендуем *Ник*/*название ветки*). После можно начинать вносить изменения, а затем закоммитить. Обратите внимание, удалять файлы стоит с помощью git rm, а также иногда нужно добавлять файлы по отдельности (из тех которые я знаю - скрытые начинающиеся с .)
git checkout -b my_branch
# do your stuff
git add -u
git commit -m "my commit"
# check status
git status
Кстати если вдруг нужно откатиться до последнего коммита (убрать все ваши новые изменения, которые вы не закоммитили) можно использовать
git stash
Вернуть их обратно можно так
git stash pop
Обращайте внимание на вывод git status, очень важно, чтобы все изменения были staged. В противном случае, в выводе будет указано, какие файлы не находятся а индексе. После того, как вы внесли изменения, можно отправлять изменения в наш репозиторий, чтобы они попали в master ветку.
git push --set-upstream origin my_branch
Перед отправкой и мерджем изменений важно обновить вашу ветку на последнюю версию master'а, чтобы не пришлось решать конфликты при мердже. Делаем это так:
git rebase master -i
Вам предложат выбрать коммиты для rebase на master, обычно выбираем все и ждем результата работы команды. Если вам не повезло и будут конфликты, то сочувствую. Для облегчения вашей участи имеет смысл заскашить все коммиты в вашей ветке (сжать все сделанные вами коммиты в один). Делаем (сначала абортим предыдущий ребейз)
# abort recent rebase
git rebase --abort
git log
Смотрим id коммита в master, откуда отводили ветку. Теперь
git reset --soft commit_id
git add -u
git commit -m "squash"
# check if everything was added
git status
# if all ok, rebase
git rebase master
Решаем все конфликты, потом
git push --force
В UI репозитория делаем pr (в гитверс называется запрос вроде) и мержим. (Не забываем про нормальные названия пожалуйста!!!)
Если что можете меня пинговать - @AshFungor или писать в беседу, поможем.
alias python=python3
python -m venv ./venv --symlinks --clear
venv/bin/pip -V && venv/bin/pip install -r requirements.txt
Все бинари должны лежать в venv/bin! И запускать их надо оттуда
venv/bin/flask run
Можно и с докером. Чтобы сбилдить образ:
docker build -t hope:0.0 .
И запустить (-p маппит порт 5000 контейнера на порт 5000 хоста):
docker run -p 5000:5000 hope:0.0
Далее заходим на 127.0.0.1:5000 и наслаждаемся :) Если образ не робит писать мне: @AshFungor
Пока доступен один раннер и простая таска