agorlov / task-cards-bot

Put your to-do's in the form of a pack of cards, and pull out the one you need to do now.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

https://t.me/karma_yoga_bot

Идея бота

  1. Когда появляется желание что-то хорошее или нужное сделать - закидываем текст или войс в бота. Не хватаемся делать сразу.
  2. Когда появлсяется время улучшить свою жизнь - обращаемся к боту, он вытягивает, как из колоды карт, одно из твоих хороших или нужных дел и предлагает его сделать.
Бот - твой помощник в развитии через действие. Он помогает делать дела без оценок и привязанностей.
В этом заключается возможность для внутреннего развития, в преододлении внутренних ограничений,
для того чтобы делать то что ты сам выбираешь.

## 🔑 Особенность Бота:
- Вдохновение: ты сам придумываешь дела, а Бот помогает выбрать подходящее в данный момент.
- Твоя задача: выполняй их с полной отдачей и без ожиданий.

Представьте: это GTD (Getting Things Done) с духовной составляющей.

## 🏠 Идеально подходит для:
- Для личных дел
- Добавления дисциплины в жизнь
- Доведения дел до конца

Принципы

  1. Когда появляется время делать что-то полезное, улучшать свою жизнь - идем к боту за делом, и стараемся принять его каким бы оно сейчас не показалось. Ты ведь сам его придумал. Если уж обстоятельства не позволяют его сделать, возьми другое.

  2. @todo

  3. Если дело длинное, не следует себя изнурять, надо сделать часть, закрыть текущее дело и добавить новую задачу, указать с какой точки продолжить дело.

    Одна лишь формулировка сложного дела к которому непонятно как подступиться будет убивать желание. Есть выход: решить для себя, что я начну сейчас и сделаю некоторую часть. Отличные варианты чтобы стартовать: подумать или спланировать, почитать, поискать в интернете. Например, задача может показаться тяжелой: Разобрать книги в стеллаже. Но ты взялся и сделал полку, потратил скажем 20-30 минут. Нажимаем [Готово]. И добавляем дело в продолжение: Продолжить разбор книги в стеллаже.

  4. @todo

  5. Важно не переключаться импульсивно: вы что-то увидели, или кто-то позвонил и мы часто сразу переключаемся. В итоге, день превращается в несколько начатых и незавершенных дел. Можно действовать иначе - если приходит идея или задача, вносим её в список дел, не переключаемся. Если приходит звонок, думаем - "а когда мне удобно было бы общаться и нужно ли" и планируем, предлагаем обстоятельно созвониться или встретится, но в запланированный для этого слот в календаре.

Техническая часть

Запуск DEV

docker-compose up

Импорт схемы

Схема импортируется автоматически при создании нового контейнера postgres из папки db-init

Деплой в продакшен

  1. Сделаем бэкап

Зайти в контейнер lxc:

Базы:

sudo lxc-attach karma-yoga-bot
pg_dump -U admin -d admin -h localhost > backup.sql

Файлов: скопировать папку /app в /home/user/backup/

  1. Обновление файлов
rsync -avz --exclude-from=rsync-exclude.txt --dry-run --delete ./ user@prodhost:/home/user/karma-yoga-bot/
rsync -avz --exclude-from=rsync-exclude.txt --backup --backup-dir=backup/ --delete ./ user@prodhost:/home/alexandr/karma-yoga-bot/
  1. Применим миграции БД:
psql -U admin -d admin -h localhost -a -f 1.sql
  1. Docker:

запуск всех

docker-compose build # пересборка образов (если поменялся Dokcerfile или cronjob)
docker-compose -f docker-compose.prod.yml up

перезапуск контейнера karma_bot:

docker-compose -f ./docker-compose.prod.yaml restart karma_bot

Отладка

$ docker ps

# Запуск hello.py в контейнере
$ docker exec -it karma_cron python /app/hello.py
$ docker-compose exec karma_cron python /app/hello.py

Всякое разное

На проде, чтобы временно открыть порт для доступа к БД:

iptables -t nat -A PREROUTING -p tcp --dport 5432 -j DNAT --to-destination 10.0.3.134:5432
iptables -A FORWARD -p tcp -d 10.0.3.134 --dport 5432 -j ACCEPT

Так можно загрузить какой-нибудь дамп:

psql -U admin -d admin -h localhost -a -f app.sql

Экспорт/импорт докер-образа

Экспорт: docker save myimage:latest > myimage_latest.tar

docker save karma-yoga-bot_karma_bot:latest > karma-yoga-bot_karma_bot.tar

Перенос в прод: scp myimage_latest.tar user@prod-server:/path/to/location

Импорт: docker load < myimage_latest.tar

TODOs/Ideas

  1. Использовать бота как копилку идей и раз в день вытаскивать какую-нибудь, и напоминать пользователю о какой-то идее из копилки вместо мотивирующей цитаты

сделать кнопки: [уже не акутальна], [реализована]

комнда для идеи: /idea [текст идеи] /идея [текст идеи]

llm вариант: с уточненнием - считываем текст, если он похож на идею, а не на задачу - предлагаем сохранить как идею или задачу кнопками

  1. Бот "запоминает цели" и потом периодически о них напоминает.

Примеры

  • хочу съездить туда-то в апреле
  • начать откладывать по 15тр, с апреля чтобы через 3года купить машину без кредита
  • до конца лета снять фильм
  • раз в неделю разме

/цель [срок] [что хотлось бы сделать достичь]

бот раз в день напоминает об одной из цели и уточнят сделать кнопки [не актуально], [реализована]

  1. Напоминания к заданному времени + занесение в календарь

Примеры дел

  • вынести мусор
  • помыть посуду
  • протереть пыль
  • купить продукты
  • выкинуть просроченнные продукты
  • полить цветы
  • написать статью/пост
  • снять видео про [тема видео]

Работа с GigaChat

чтобы программно работать, нужно сначала установить сертификаты мне удалось это сделать так:

 pip install gigachain gigachain-cli install-rus-certs
 gigachain-cli install-rus-certs

Тестирование whisper

fast-whisper cpu 4thr 5beams int8 medium =45sec

[0.00s -> 4.76s]  На мили мы налима ленивого вили, И меняли налима вы мне налиня,
[4.76s -> 9.12s]  А любви не меняли вы миломолили, И в туманы лиманы манили меня.

**fast-whisper cpu 4thr 5beams int8 small =18sec

[0.00s -> 5.00s]  На мели мы на лима ленивого вили, И меняли на лима вы мне на линя,
[5.00s -> 9.00s]  А любви не меняли вы милом олили, И в туман или маны манили меня.

whisper.cpp 4thr 5beams small cpu =37sec (~480Mb)

[00:00:00.000 --> 00:00:05.000]   "Намели мы на лима ленивого вилли, и меняли на лима вы мне на линя,
[00:00:05.000 --> 00:00:10.000]   а любви не меняли вы милом олили, и в туман или маны манили меня."

whisper.cpp 4thr 5beams small-q5_0 cpu =40sec (~175Mb)

[00:00:00.000 --> 00:00:05.070]   "Намели мы на лима ленивого вили, и меняли на лима вы мне на лени, а
[00:00:05.070 --> 00:00:09.000]   любви не меняли вы милом лили, и в туман и лиман и манили меня."

About

Put your to-do's in the form of a pack of cards, and pull out the one you need to do now.


Languages

Language:Python 95.5%Language:PLpgSQL 3.3%Language:Dockerfile 1.3%