Skip to content

Repository files navigation

pausal-flow — документооборот и финансы ИП на паушале (Сербия)

⚠️ Это заточено под чужой цикл — под ваш придётся править

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

  • месяц = период работ, а не дата документа: задачи за июнь лежат в months/2026_06/, а акт, инвойс и бланк банка по ним приходят в июле — и лежат там же;
  • окно сбора задач — от момента отправки прошлого списка до конца текущего месяца, а не с 1-го по 30-е;
  • список уходит клиенту в конце месяца, акт и инвойс за этот месяц появляются в начале следующего, платёж — ещё позже, бланк банка — в день зачисления;
  • бланк банку возвращается не позже следующего рабочего дня после зачисления;
  • выгрузка в бухгалтерский сервис — только после оплаты: без даты платежа счёт не получит статус «оплачено»;
  • год записи в книге оборота — год счёта: декабрьский акт выставлен в январе и уезжает в следующую книгу.

Если у вас другой режим налогообложения, другой банк, несколько клиентов, авансы или квартальная отчётность — совпадёт ядро, но не расписание. Что менять под себя, написано в docs/setup.md и docs/integrations.md; формы документов у каждого банка свои, поэтому скрипты подписи падают с понятным сообщением вместо порчи документа.

Месячный цикл предпринимателя-паушальца, автоматизированный навыками Claude Code: список выполненных задач → акт и инвойс → уведомление банку о приливе → выгрузка в бухгалтерский сервис и книга оборота (КПО). Вокруг цикла — счета поставщиков, налоговые документы, разбор банковских выписок и сводный финансовый отчёт.

Каждый шаг запускается короткой командой, между шагами результат проверяет человек, наружу (мессенджер, почта) ничего не уходит без ручного нажатия «Отправить».

Ядро от чужого расписания не зависит: разбор выписок, категоризация, реестры, отчёт, книга оборота, подпись PDF и проверка подписанного. Трекер и мессенджер меняются на свои (docs/integrations.md), языки акта и сообщения — в конфиге.

Два репозитория

Этот — движок: навыки, скрипты, документация, шаблоны. Публичный, ни одного реквизита и ни одного документа внутри.

Второй — данные: profile.json, папки месяцев, финансы, договоры, образцы подписи. Приватный, только у владельца. Заводится одной командой, живёт своим git — история правок документов и возможность откатить косяк.

pausal-flow/                    ← движок, публичный git
└── …

ip-data/                        ← данные, приватный git
├── engine -> ../pausal-flow        симлинк, в .gitignore
├── .claude/skills -> engine/…      симлинк, в .gitignore
├── profile.json                    единственное место с реквизитами
├── months/ГГГГ_ММ/                 период работ: задачи, акт, инвойс, бланк банка, паушал
├── finance/                        выписки, платежи, налоги, КПО, отчёт
├── contracts/<контрагент>/         редакции договора + versions.md
└── signatures/samples.tar.gz.gpg   образцы подписи, только зашифрованные

Внутри данных движок всегда зовётся engine/…, поэтому где он лежит физически — дело владельца. Скрипты находят корень данных сами: переменная TASKS_DATA либо ближайший вверх от текущего каталога каталог с profile.json.

Быстрый старт

git clone https://github.com/svesh87/pausal-flow.git && cd pausal-flow
python3 scripts/doctor.py                  # чего не хватает в системе
scripts/init_private.sh ~/docs/ip-data     # скелет приватного репозитория данных
cd ~/docs/ip-data && $EDITOR profile.json  # реквизиты по образцу
python3 engine/scripts/doctor.py           # проверка готовности

Дальше — «Настрой окружение» агенту (навык setup) или docs/setup.md глазами. Посмотреть, как всё работает, не имея ни одного документа:

python3 engine/scripts/make_examples.py tmp/example-data
TASKS_DATA=tmp/example-data python3 engine/scripts/build_report.py
TASKS_DATA=tmp/example-data python3 engine/scripts/kpo_book.py --offline

Команды

ГГГГ_ММпериод работ, а не дата документа: акт за июнь подписан в июле, но лежит в months/2026_06/.

Цикл месяца — навыки monthly-tasks и sign-docs

Команда Что происходит
«Собери задачи» закрытые задачи из трекера → формулировки для акта → months/ГГГГ_ММ/tasks.md на ревью
«Отправь список в чат» черновик в канал клиента: по секции на каждый язык из конфига, со ссылками на тикеты
«Подпиши документы из чата» акт и инвойс из треда → подпись на акте → проверка
«Отправь документы в чат» черновик с подписанным актом в тот же тред
«Подпиши документы банка» бланк из почты → заполнить, подписать, проверить
«Отправь документы в банк» окно ответа банку: бланк + акт + инвойс + договор
«Выгрузи в pausal.rs» два XLSX для импорта в бухгалтерский сервис (артикул, потом счёт)
«Обнови книги КПО» пересобрать finance/kpo/ из данных репозитория
«Прими договор» договор из tmp/inbox/contracts/<контрагент>/ГГГГ_ММ_ДД/

Финансы — навык finance

Команда Что происходит
«Обнови финансы» всё оптом: банк и счета поставщиков из почты, налоги, пересборка, одна сводка
«Обнови банк» новые izvod и выгрузки из eBank → finance/bank/raw/, CSV, сверка остатков
«Собери счета» новые счета поставщиков из почты → finance/payments/ГГГГ/ + реестр
«Обнови налоги» новые документы налоговой → finance/taxes/statements/ + реестр
«Обнови отчёт» пересобрать finance/report.md из CSV
«Прими документы» разобрать tmp/inbox/: определить тип каждого файла и разложить

Настройка — навыки setup и signatures

Команда Что происходит
«Настрой окружение» инструменты, скелет данных, profile.json по блокам, интеграции, проверка
«Проверь окружение» doctor.py и разбор того, что он показал
«Собери библиотеку подписей» сканы → набор PNG → разметка → зашифрованный контейнер
«Добавь образцы подписи» то же для новых сканов, старые образцы сохраняются

Что генерируется и чем

Эти файлы руками не правятся — перезапись затрёт правки:

Артефакт Собирается
finance/bank/transactions_{eur,rsd}.csv scripts/parse_izvod.py
finance/taxes/payments.md scripts/tax_registry.py
finance/payments/registry.md scripts/payments_registry.py
finance/report.md scripts/build_report.py
finance/kpo/kpo_ГГГГ.pdf, finance/kpo/entries.md scripts/kpo_book.py
.cache/nbs_rates.json scripts/kpo_book.py (кэш курсов НБС, вне git)
months/ГГГГ_ММ/pausal/*.xlsx scripts/pausal_import.py ГГГГ_ММ
signatures/METRICS.md, signatures/metrics.json scripts/sig_metrics.py

Всё, кроме двух последних (они по месяцу и по набору образцов), пересобирает одна команда:

engine/scripts/rebuild_all.sh

Она же — регрессионный тест: после правок в скриптах git diff по сгенерированному обязан быть пустым.

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

Файл О чём
docs/setup.md настройка с нуля: пакеты, данные, конфиг, проверка
docs/integrations.md роли (трекер, канал, почта, бухгалтерия), как подключить и как заменить
docs/signatures.md библиотека образцов подписи: что сканировать, как обрабатывается, как хранится
.claude/skills/*/SKILL.md сами навыки: порядок шагов и границы
.claude/skills/sign-docs/internals.md устройство подписи PDF и геометрия — читать при поломке
scripts/tests/CASES.md бизнес-кейсы и покрывающие их тесты

Принципы

  • Наружу ничего не уходит автоматически: в мессенджер — только черновик, в почту — только окно ответа. Отправляет человек.
  • Подписанный документ всегда проверяется до отправки: scripts/verify_signed.sh (целостность байт, рендер, текст, даты) плюс взгляд на область подписи.
  • Подписанное и отправленное не переподписывается без явного разрешения: повторная подпись меняет дату изменения и подписи внутри, и документ перестаёт совпадать с тем, что у контрагента. Скрипты подписи отказываются писать поверх существующего файла без --force.
  • Скрипты падают, а не гадают: формы документов меняются, при несовпадении якорей скрипт останавливается с понятным сообщением вместо порчи документа.
  • Отчётность закрытых лет не переписывается — книги КПО за сданные годы пересобираются только с --allow-past и по прямому разрешению.
  • Реквизиты — только в profile.json. В движке их нет; что это так, проверяет scripts/check_clean.sh — он же стоит в пре-коммите.

Требования

  • Python 3.10+ (только стандартная библиотека), pdftotext, pdftoppm, pdfinfo из poppler-utils, LibreOffice (soffice) для книг КПО, gpg для образцов подписи;
  • MCP-серверы под роли из docs/integrations.md;
  • для правок движка — python3 -m venv .venv && .venv/bin/pip install -r requirements-dev.txt.

Чувствительное

signatures/ шифруется не потому, что это единственный путь утечки подписи — подпись стоит в каждом отправленном документе, и вырезать её можно оттуда. Но набор образцов — концентрат: чистые PNG на прозрачном фоне, размеченные и готовые к вставке. Раз их можно хранить зашифрованными без потери удобства, они и хранятся так: только внутри samples.tar.gz.gpg на GPG-ключ владельца, расшифровка в память при каждом запуске, открытые PNG на диск не пишутся и в git не попадают. Остальное чувствительное — банковские выписки, подписанные акты, profile.json — живёт в приватном репозитории данных, который не публикуется.

Лицензия

MIT — см. LICENSE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages