Реальные сценарии выставления счетов

Жизнь фрилансера с выставлением счетов хаотичнее, чем кажется из чистого конфигурационного файла. Клиенты меняются, контракты обновляются, случаются ошибки, и иногда ты выполняешь работу, за которую не хочешь брать деньги. Эти сценарии описывают реальные ситуации и как Vibes to Bucks справляется с каждой из них.


Сценарий 1 — Обновление контракта: тот же клиент, новый проект

Кто: Анна, фриланс-разработчик, работающая над github.com/acme/website для клиента Acme.

Что произошло: С января Анна выставляет счета за AI-расходы в проект Moneybird “Acme Website Q1–Q2”. 1 июля начинается новый 6-месячный контракт. Проект клиента в Moneybird меняется на “Acme Website Q3–Q4” — возможно, с другой почасовой ставкой. Репозиторий и ветка остаются теми же.

Чего хочет Анна:

Риск без руководства: Анна меняет правило выставления счетов и запускает Sync Now. Расширение пересчитывает январь-июнь, не видит записей времени за эти дни под новым проектом и создает 180 дубликатов в Moneybird — наряду с теми, что уже существуют под старым проектом.

Как Vibes to Bucks справляется с этим: Когда Анна редактирует правило выставления счетов, чтобы указать на новый проект, расширение спрашивает, что делать с историческими расходами. Она выбирает “Применить с сегодняшнего дня”. Прошлые дни сохраняют свою ассоциацию со старым проектом. Только сегодняшний и будущие дни синхронизируются под новым проектом. Без дубликатов, без необходимости в очистке.


Сценарий 2 — Смена клиента: перемещение репозитория к другому клиенту

Кто: Бен, разработчик, работающий над github.com/org/platform.

Что произошло: Изначально Бен выставлял счета за этот репозиторий клиенту Alpha, который финансировал этап НИОКР. Платформа теперь в производстве, и клиент Beta является текущим заказчиком. Бену нужно переназначить репозиторий.

2a — Чистый разрыв

Чего хочет Бен: Будущие расходы идут клиенту Beta. Прошлые записи, синхронизированные с клиентом Alpha, остаются нетронутыми. Ничего не изменяется задним числом.

Как Vibes to Bucks справляется с этим: Бен меняет контакт в правиле выставления счетов с Alpha на Beta. Расширение спрашивает, что делать с историей. Он выбирает “Применить с сегодняшнего дня”. Исторические записи Alpha остаются в Moneybird. Beta начинает получать записи с сегодняшнего дня.

2b — Полная ретроактивная коррекция

Чего хочет Бен: Выставление счетов Alpha было ошибкой — все должно было быть Beta с самого начала. Бен хочет пересинхронизировать все под Beta. Он принимает, что ему придется вручную очистить записи Alpha в Moneybird.

Как Vibes to Bucks справляется с этим: Бен выбирает “Применить ко всему времени”. Расширение предупреждает его, что существующие записи под Alpha не будут автоматически удалены — их нужно будет удалить в Moneybird. Затем оно создает новые записи за каждый исторический день под Beta.

2c — Синхронизация только разрыва

Чего хочет Бен: Бен прекратил синхронизацию две недели назад, когда понял, что назначение было неправильным. У него есть 14 дней несинхронизированных расходов в книге. Он хочет, чтобы эти 14 дней пошли к Beta, но месяцы, уже синхронизированные с Alpha, должны остаться.

Как Vibes to Bucks справляется с этим: Бен выбирает “Применить только к несинхронизированным дням”. Расширение знает, какие дни уже имеют запись времени в provider_posts, и пропускает их. Только 14 несинхронизированных дней создаются под Beta.


Сценарий 3 — Разделение проекта: перераспределение работы по под-проектам

Кто: Клара, разработчик, работающий над монорепозиторием для клиента Gamma.

Что произошло: Клара выставляла счета за всю AI-работу в один общий проект “Общая разработка”. Gamma теперь хочет, чтобы расходы были разбиты по функциональным областям. Клара создает правила выставления счетов на основе веток: feature/auth/* → “Auth Module” и feature/billing/* → “Billing Module”.

3a — Разделение только вперед

Чего хочет Клара: В дальнейшем расходы направляются в правильные под-проекты. Прошлые расходы, уже синхронизированные под “Общая разработка”, остаются там.

Как Vibes to Bucks справляется с этим: Когда Клара добавляет новые правила веток, расширение спрашивает о истории для каждого. Она выбирает “Применить с сегодняшнего дня” для обоих. Исторические записи под “Общая разработка” остаются нетронутыми.

3b — Историческая точность

Чего хочет Клара: Она действительно хочет ретроактивно переместить прошлые расходы в правильные под-проекты. Она принимает, что ей придется вручную удалить старые записи “Общая разработка” в Moneybird.

Как Vibes to Bucks справляется с этим: Клара выбирает “Применить ко всему времени” для новых правил. Расширение предупреждает о существующих записях под старым проектом и создает правильные записи по под-проектам за каждый день. Клара очищает старые записи в Moneybird.


Сценарий 4 — Небиллинговая работа в качестве любезности

Кто: Дэвид, фрилансер, работающий над репозиторием клиента Delta.

Что произошло: Дэвид участвует во внутреннем код-ревью и некоторых экспериментах, которые не входят в сферу Delta — но он держит Cursor открытым на их репозитории. Он не хочет, чтобы следующие 2 часа AI-расходов были начислены Delta.

Чего хочет Дэвид:

Почему по назначению, а не глобально: Дэвид может работать над несколькими задачами одновременно. Если он переключается на репозиторий клиента Beta, пока Delta небиллинговый, Beta все равно должен выставляться счет. Небиллинговый режим — это решение вежливости для каждого клиента: “эти расходы я делаю не по просьбе клиента — я делаю это для них в качестве любезности.”

Как Vibes to Bucks справляется с этим: Дэвид открывает панель настроек и переключает правило выставления счетов Delta на небиллинговый режим. Диалог спрашивает две вещи: когда начать небиллинговый режим (сейчас или задним числом) и когда закончить. Дэвид выбирает “Сейчас” и “Конец дня” — выставление счетов автоматически возобновляется завтра. Статусная панель показывает $4.23 сегодня · Delta [небиллингово до конца дня], пока он работает в репозитории Delta. Небиллинговые расходы все еще синхронизируются с Moneybird как небиллинговые записи времени (видимые в записях, но исключенные из клиентских счетов). Дашборд показывает как биллинговые, так и небиллинговые расходы для Delta, четко разделенные.

Если Дэвид ожидает, что работа в качестве любезности продлится дольше, он может выбрать “Конкретная дата” (например, небиллингово до пятницы) или “Пока я не возобновлю вручную” с интервалом напоминания (каждые 30 минут, 1 час, 2 часа и т.д.), чтобы не забыть включить выставление счетов снова.

Вариация — ретроактивное небиллинговое

Чего хочет Дэвид: Он забыл переключиться перед началом. Он хочет отметить последние 90 минут как небиллинговые задним числом.

Как Vibes to Bucks справляется с этим: Дэвид открывает панель настроек, переключает Delta на небиллинговый режим и в разделе Начало выбирает “Задним числом” с указанием времени 90 минут назад. Расходы с этого момента помечаются как небиллинговые. Если сегодняшняя запись времени уже была синхронизирована с Moneybird, расширение пересчитывает и обновляет ее, чтобы отразить уменьшенную сумму для выставления счетов. Заднее датирование ограничено сегодняшним днем — для многодневных исправлений Sync Ledger предоставляет возможности отмены и повторной синхронизации.


Сценарий 5 — Отмена неправильной синхронизации

Кто: Ева, фрилансер, которая изменила назначение и сразу запустила Sync Now.

Что произошло: Ева отредактировала правило выставления счетов (изменила проект) и запустила Sync Now, не задумываясь о последствиях. Расширение создало 3 месяца новых записей времени под неправильным проектом в Moneybird, наряду с существующими правильными записями под старым проектом.

Чего хочет Ева:

Как Vibes to Bucks справляется с этим: После каждой синхронизации расширение показывает уведомление: “Синхронизировано с Moneybird — Создано 87, обновлено 2, пропущено 14.” Нажатие на “Показать детали” открывает Sync Ledger — специальный вид, показывающий каждую синхронизированную и ожидающую запись, фильтруемую по клиенту, проекту и дате. Ева может увидеть, какие записи были только что созданы, выбрать неправильные и нажать “Отменить синхронизацию.” Расширение удаляет эти записи из Moneybird и отмечает их как ожидающие, чтобы они могли быть правильно пересинхронизированы после того, как она исправит правило.


Сценарий 6 — Временное выставление счетов за проект

Кто: Фрэнк, разработчик, работающий над github.com/acme/api.

Что произошло: Обычно Фрэнк выставляет счета за проект “API Maintenance”. В течение двух недель в марте он участвует в специальном спринте, который выставляется за “API v2 Migration”. После спринта он переключается обратно.

Чего хочет Фрэнк:

Как Vibes to Bucks справляется с этим: Оба раза, когда Фрэнк меняет правило выставления счетов, он выбирает “Применить с сегодняшнего дня”. 10 марта правило начинает выставлять счета за “API v2 Migration”. 24 марта оно переключается обратно на “API Maintenance”. Записи каждого периода остаются с проектом, который был активен в то время.


Сценарий 7 — Прекращение выставления счетов, сохранение отслеживания

Кто: Джина, фрилансер, завершающий работу с клиентом Eta.

Что произошло: Контракт завершен, но Джина все еще выполняет мелкие работы по обслуживанию репозитория Eta. Она хочет видеть AI-расходы на своей панели — чтобы оценить, стоит ли заключать новый контракт — но не хочет синхронизировать записи времени.

Чего хочет Джина:

Как Vibes to Bucks справляется с этим: Джина снимает галочку “Биллинговое” в правиле выставления счетов Eta. Расходы продолжают отслеживаться и отображаются на дашборде под Eta, но записи времени не создаются. Когда появляется новый контракт, она снова включает выставление счетов и выбирает “Применить с сегодняшнего дня”. Небиллинговый разрыв остается небиллинговым.


Сценарий 8 — Миграция провайдера

Кто: Хьюго, фрилансер, который синхронизировался с Moneybird в течение 6 месяцев.

Что произошло: Бухгалтерская фирма Хьюго переводит его на Harvest. Он меняет destination: harvest в своей конфигурации и настраивает новые правила выставления счетов для Harvest.

Чего хочет Хьюго:

Как Vibes to Bucks справляется с этим: Когда Хьюго переключает провайдера выставления счетов, расширение обнаруживает, что у Harvest нет истории синхронизации. Без руководства оно попыталось бы создать записи за каждый исторический день. Вместо этого появляется тот же диалог с тремя вариантами: “Начать с сегодняшнего дня”, “Синхронизировать всю историю”, или “Синхронизировать только несинхронизированные дни.” Хьюго выбирает “Начать с сегодняшнего дня.” Расширение устанавливает дату отсечения миграции, чтобы механизм синхронизации пропускал все дни до сегодняшнего. Только сегодняшний и будущие дни создают записи в Harvest. Его записи в Moneybird остаются нетронутыми.


Сценарий 9 — Случайное удаление правила

Кто: Иван, фрилансер, выставляющий счета за репозиторий клиента Kappa.

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

Чего хочет Иван:

Риск без руководства: Иван создает новое правило. Расширение видит репозиторий с историческими данными о расходах и без соответствующей истории правил выставления счетов. Наивная синхронизация рассматривала бы каждый прошлый день как “никогда не синхронизированный по этому правилу” и создавала бы записи за всю историю.

Как Vibes to Bucks справляется с этим: Когда Иван создает правило выставления счетов для репозитория, который уже имеет исторические данные о расходах в книге, расширение распознает это и предлагает тот же диалог с тремя вариантами. Иван выбирает “Применить с сегодняшнего дня” — прошлые записи остаются как были, и выставление счетов продолжается с сегодняшнего дня. Без дубликатов, без разрыва, без паники.


Общая нить

Каждый из приведенных выше сценариев сводится к одному вопросу: когда ты меняешь правило выставления счетов, что должно произойти с прошлым?

Vibes to Bucks никогда не принимает это решение за тебя. Каждый раз, когда ты редактируешь правило выставления счетов — меняешь клиента, проект, ставку или статус биллинга — расширение предлагает тебе выбрать:

Выбор Что он делает
Применить с сегодняшнего дня Прошлые дни сохраняют свое текущее выставление счетов. Только сегодняшний и будущие дни используют новое правило.
Применить ко всему времени Новое правило применяется ретроактивно ко всем дням в книге. Предупреждает о существующих записях, которые не будут автоматически удалены.
Применить только к несинхронизированным дням Дни, которые уже имеют запись времени у провайдера выставления счетов, остаются нетронутыми. Только дни без существующей записи используют новое правило.

Этот управляемый выбор появляется в четком диалоге всякий раз, когда изменение правила выставления счетов может повлиять на то, как обрабатываются исторические расходы. Без сюрпризов, без тихого ретроактивного повторного выставления счетов, без оставленных дубликатов.