Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

195 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rental Manager

Помощник для управления арендными объектами: жильцы, аренда, коммуналка, счётчики, расходы, долги и Excel-отчёты. Первая версия сделана как локальное веб-приложение на FastAPI: оно запускается на Windows, открывается в браузере и уже готово к будущему переносу на VPS/облако. На телефон его можно открыть через браузер в одной сети, а позже подключим Telegram-бота.

Возможности MVP

  • объекты Белый дом, Чёрный дом, Баня и по 4 квартиры в каждом;
  • ручное заселение жильца с необязательными полями, чтобы можно было заполнить минимум на бегу;
  • две части аренды: платёж на ИП и личный перевод;
  • автоматическая генерация арендных начислений;
  • статусы аренды: ожидается, частично оплачено, оплачено, оплачено вперёд, просрочено, отсрочка;
  • отсрочка задаётся количеством дней, приложение само считает дату окончания;
  • ручная отметка оплат, пока чеки и бот ещё не автоматизированы;
  • ввод показаний за любую дату;
  • коммунальные расчёты по общему счётчику объекта и ступенчатому тарифу;
  • распределение ОДН только между занятыми квартирами по настраиваемым долям;
  • расходы с источником денег и кнопкой компенсации личных средств;
  • Excel-отчёты по аренде, коммуналке, расходам, долгам и истории;
  • месячные статус-отчёты с января 2026: на пульте видны только месяцы, где ещё есть долги, непереданные показания или другие проблемы;
  • цветовые палитры, включая тёмную классическую и тёмную неоновую;
  • базовый Telegram owner-бот через webhook: /start, /id, /status, /reports, /app;
  • cloud-ready запуск через Dockerfile и PostgreSQL.

Быстрый запуск

py -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -m uvicorn rental_manager.main:app --reload --host 127.0.0.1 --port 8000

Открыть:

http://127.0.0.1:8000

Если Windows блокирует .ps1, запуск через готовый скрипт:

powershell -ExecutionPolicy Bypass -File .\scripts\run-dev.ps1

Доступ с телефона

В одной Wi-Fi сети запусти сервер так:

.\.venv\Scripts\python.exe -m uvicorn rental_manager.main:app --host 0.0.0.0 --port 8000

На телефоне открой:

http://IP_КОМПЬЮТЕРА:8000

Например http://192.168.1.50:8000. Если не открылось, почти наверняка Windows Firewall решил поиграть в охранника.

Проверка

Основная команда:

powershell -ExecutionPolicy Bypass -File .\scripts\validate.ps1

Она запускает:

  • compileall для проверки импорта и синтаксиса;
  • unittest по расчётам аренды, коммуналки, ОДН, тарифов и парсинга ступеней;
  • smoke-test на временной SQLite-базе.

Отдельно можно запустить только unit-тесты:

.\.venv\Scripts\python.exe -m unittest discover -s tests -v

Демо-данные

Чтобы заполнить локальную базу вымышленными жильцами, оплатами, показаниями, коммунальными счетами, расходами и подозрительным чеком:

powershell -ExecutionPolicy Bypass -File .\scripts\seed-demo.ps1 -ResetDemo

Скрипт удаляет только старые записи с демо-маркером и заново создаёт тестовый набор. Реальные записи без демо-маркера он не трогает.

В демо-наборе есть:

  • оплаченная аренда;
  • частичная аренда;
  • просроченная аренда;
  • платёж, который наступает сегодня;
  • согласованная отсрочка;
  • оплата вперёд;
  • коммунальные счета: черновик, прогноз, просрочка, частичная оплата, полная оплата;
  • расходы из личных денег и арендного бюджета;
  • личный расход, ожидающий компенсации;
  • подозрительный чек с неверным получателем;
  • устаревшие показания по одному счётчику.

Импорт со скриншотов старой базы

Для текущего переноса я добавил отдельный воспроизводимый импорт:

powershell -ExecutionPolicy Bypass -File .\scripts\seed-screenshots.ps1

Он удаляет демо-данные и предыдущий набор с маркером SCREENSHOT_IMPORT, затем загружает распознанных жильцов, платежи, тарифы, показания и расходы из предоставленных скриншотов. Спорные места оставлены в заметках, чтобы потом спокойно поправить, а не гадать каждый раз заново.

Данные

По умолчанию используется SQLite:

data/rental_manager.db

База создаётся автоматически при первом запуске. В неё сразу добавляются стартовые объекты и счётчики. Файл базы игнорируется git-ом, потому что реальные жильцы и деньги в репозиторий складывать не надо, а зачем устраивать публичную бухгалтерию?

Для будущего VPS можно указать PostgreSQL через переменную:

$env:RENTAL_MANAGER_DATABASE_URL="postgresql+psycopg://user:password@host:5432/rental_manager"

PostgreSQL-драйвер уже добавлен в зависимости, так что в облаке приложение можно сразу вешать на managed Postgres без ручного допиливания. А зачем усложнять себе жизнь?

Важная бизнес-логика

Если жилец платит 14 числа, платёж 14 апреля закрывает период с 14 апреля по 13 мая включительно.

Если дата платежа 29, 30 или 31 не существует в месяце, платёж переносится на 1 число следующего месяца. Например:

  • 31 января;
  • 1 марта за февральский период;
  • 31 марта;
  • 1 мая за апрельский период.

Коммунальный тариф применяется к расходу всего объекта. Формат ступеней:

1000:4.2; 4000:4.5; *:7

Это значит: до 1000 единиц по 4.2, от 1000 до 4000 по 4.5, всё выше 4000 по 7. После расчёта общей стоимости объекта приложение получает среднюю цену единицы, считает квартирные расходы и распределяет ОДН по долям занятых квартир.

Документация

Следующие шаги

  • Telegram-уведомления владельцу;
  • Telegram-бот для жильцов;
  • загрузка чеков и OCR/проверка получателя;
  • хранение файлов чеков и договоров;
  • упаковка в Windows-приложение.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages