food-market/app/main.py
Claude c8b9f5048b Учёт закупки и перепродажи булок
Десктопное приложение на PySide6. Вся база — один JSON-документ,
зашифрованный AES-256-GCM под паролем (ключ через scrypt), лежит
в data/vault.fmdb и раз в час уезжает в этот репозиторий.

Основное:
- партии с дедлайном возврата себестоимости пекарне, FIFO-разнос продаж
  по партиям и прогресс покрытия к сроку;
- типы выбытия: розница, другу по себестоимости, съел сам, подарок,
  списание — съеденное вычитается из прибыли, за него платить всё равно;
- долги контрагентов с частичными оплатами;
- номенклатура с историей изменения цен;
- журнал изменений внутри базы: git хранит непрозрачные снимки,
  поэтому настоящая история ведётся здесь.

Синхронизация коммитит только путь базы и схлопывает часовые пуши
в один коммит на день через amend + force-with-lease.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 17:29:53 +03:00

34 lines
722 B
Python

"""Точка входа."""
from __future__ import annotations
import sys
from PySide6.QtWidgets import QApplication, QDialog
from . import paths
from .ui import theme
from .ui.login import LoginDialog
from .ui.main_window import MainWindow
def main() -> int:
app = QApplication(sys.argv)
app.setApplicationName("Булочная")
app.setOrganizationName("food-market")
theme.apply(app)
paths.data_dir().mkdir(parents=True, exist_ok=True)
login = LoginDialog(paths.vault_path())
if login.exec() != QDialog.Accepted or login.vault is None:
return 0
window = MainWindow(login.vault)
window.show()
return app.exec()
if __name__ == "__main__":
sys.exit(main())