Помощник для управления арендными объектами: жильцы, аренда, коммуналка, счётчики, расходы, долги и Excel-отчёты. Первая версия сделана как локальное веб-приложение на FastAPI: оно запускается на Windows, открывается в браузере и уже готово к будущему переносу на VPS/облако. На телефон его можно открыть через браузер в одной сети, а позже подключим Telegram-бота.
- объекты
Белый дом,Чёрный дом,Баняи по 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. После расчёта общей стоимости объекта приложение получает среднюю цену единицы, считает квартирные расходы и распределяет ОДН по долям занятых квартир.
- Спецификация MVP
- Тестирование
- Облако и Telegram
- Прямая интеграция DeepSeek API
- для быстрого облачного старта уже лежит
render.yaml
- для быстрого облачного старта уже лежит
- Telegram-уведомления владельцу;
- Telegram-бот для жильцов;
- загрузка чеков и OCR/проверка получателя;
- хранение файлов чеков и договоров;
- упаковка в Windows-приложение.