实际计费场景

每个自由职业者的账单生活都比一个干净的配置文件要复杂得多。客户变动、合同续签、错误发生,有时你做了一些不想收费的工作。这些场景描述了真实情况,以及 Vibes to Bucks 如何处理每种情况。


场景 1 — 合同续签:同一客户,新项目

人物: Anna,自由开发者,为客户 Acme 维护 github.com/acme/website

发生了什么: 自一月以来,Anna 一直将 AI 成本计入 Moneybird 项目“Acme Website Q1–Q2”。7月1日,新的6个月合同开始生效。客户的 Moneybird 项目变更为“Acme Website Q3–Q4”——可能有不同的小时费率。代码库和分支保持不变。

Anna 的需求:

没有指导的风险: Anna 修改了她的账单规则并运行了 Sync Now。扩展重新聚合了一月至六月的数据,发现新项目下没有这些天的时间条目,于是在 Moneybird 中创建了180个重复条目——与旧项目下已经存在的条目并存。

Vibes to Bucks 的处理方式: 当 Anna 编辑她的账单规则指向新项目时,扩展询问她历史成本应该如何处理。她选择了**“从今天开始应用”**。过去的日子仍然与旧项目关联。只有今天和未来的日子在新项目下同步。没有重复,也不需要清理。


场景 2 — 客户变更:将代码库转移到不同客户

人物: Ben,开发者,维护 github.com/org/platform

发生了什么: Ben 最初将这个代码库计入客户 Alpha,Alpha 资助了研发阶段。平台现在已投入生产,客户 Beta 是持续客户。Ben 需要重新映射代码库。

2a — 完全分离

Ben 的需求: 未来的成本计入客户 Beta。已同步到客户 Alpha 的过去条目保持不变。没有追溯更改。

Vibes to Bucks 的处理方式: Ben 将账单规则的联系人从 Alpha 改为 Beta。扩展询问历史记录应该如何处理。他选择了**“从今天开始应用”**。Alpha 的历史条目保留在 Moneybird 中。Beta 从今天开始接收条目。

2b — 完全追溯更正

Ben 的需求: Alpha 的账单是个错误——从一开始就应该是 Beta。Ben 希望将所有内容重新同步到 Beta。他接受需要在 Moneybird 中手动清理 Alpha 的条目。

Vibes to Bucks 的处理方式: Ben 选择了**“应用于所有时间”**。扩展警告他现有的 Alpha 条目不会自动删除——他需要在 Moneybird 中删除这些条目。然后为每个历史日子在 Beta 下创建新条目。

2c — 仅同步缺口

Ben 的需求: Ben 在意识到映射错误后,两周前停止了同步。他有14天未同步的成本在账本中。他希望这14天的成本计入 Beta,但已同步到 Alpha 的月份保持不变。

Vibes to Bucks 的处理方式: Ben 选择了**“仅应用于未同步的日子”**。扩展知道哪些日子已经在 provider_posts 中有时间条目并跳过它们。只有14个未同步的日子在 Beta 下创建。


场景 3 — 项目拆分:在子项目间重新分配工作

人物: Clara,开发者,为客户 Gamma 维护一个 monorepo。

发生了什么: Clara 一直将所有 AI 工作计入一个总括项目“General Development”。Gamma 现在希望按功能区域细分成本。Clara 创建了基于分支的账单规则:feature/auth/* → “Auth Module” 和 feature/billing/* → “Billing Module”。

3a — 仅向前拆分

Clara 的需求: 未来的成本路由到正确的子项目。已同步到“General Development”的过去成本保持不变。

Vibes to Bucks 的处理方式: 当 Clara 添加新分支规则时,扩展询问每个规则的历史记录。她为两个规则选择了**“从今天开始应用”**。历史条目在“General Development”下保持不变。

3b — 历史准确性

Clara 的需求: 她实际上希望将过去的成本追溯移动到正确的子项目。她接受需要在 Moneybird 中手动删除旧的“General Development”条目。

Vibes to Bucks 的处理方式: Clara 为新规则选择了**“应用于所有时间”**。扩展警告关于旧项目下的现有条目,并为每个子项目每天创建正确的条目。Clara 在 Moneybird 中清理旧条目。


场景 4 — 不可计费的礼貌工作

人物: David,自由职业者,维护客户 Delta 的代码库。

发生了什么: David 被拉入内部代码审查和一些不在 Delta 范围内的实验——但他在他们的代码库上保持 Cursor 打开。他不希望接下来的2小时 AI 成本计入 Delta。

David 的需求:

为什么是按映射而不是全局: David 可能在多任务处理。如果他切换到客户 Beta 的代码库,而 Delta 是不可计费的,Beta 仍应正常计费。不可计费是按客户的礼貌决定:“这项成本不是客户要求的——我为他们做这件事是出于礼貌。”

Vibes to Bucks 的处理方式: David 打开设置面板并将 Delta 的账单规则切换为不可计费。对话框询问两件事:不可计费何时开始(现在,或回溯),以及何时结束。David 选择了**“从现在开始”“今天结束”**——账单将于明天自动恢复。状态栏显示 $4.23 today · Delta [unbillable till end of day],当他在 Delta 的代码库中工作时。不计费的成本仍然同步到 Moneybird 作为非计费时间条目(在记录中可见,但不包括在客户发票中)。仪表板显示 Delta 的可计费和不可计费成本,明显区分。

如果 David 预计礼貌工作会持续更长时间,他可以选择**“特定日期”(例如,不可计费到周五)或“直到我手动恢复”**,并设置提醒间隔(每30分钟、1小时、2小时等),以免忘记重新开启计费。

变体 — 追溯不可计费

David 的需求: 他在开始前忘记切换。他希望在事后将过去90分钟标记为不可计费。

Vibes to Bucks 的处理方式: David 打开设置面板,将 Delta 切换为不可计费,并在开始部分选择**“回溯”**,时间为90分钟前。从那时起的成本被标记为不可计费。如果今天的时间条目已经同步到 Moneybird,扩展重新计算并更新它以反映减少的可计费金额。回溯限制为今天——对于多天更正,Sync Ledger 提供撤销和重新同步控制。


场景 5 — 撤销错误的同步

人物: Eve,自由职业者,改变了映射并立即运行了 Sync Now。

发生了什么: Eve 编辑了账单规则(更改了项目)并在没有考虑后果的情况下运行了 Sync Now。扩展在 Moneybird 中为错误项目创建了3个月的新时间条目,与旧项目下的现有正确条目并存。

Eve 的需求:

Vibes to Bucks 的处理方式: 每次同步后,扩展显示通知:“已同步到 Moneybird — 创建了87个,更新了2个,跳过了14个。”点击**“显示详情”打开Sync Ledger**——一个专用视图,显示每个已同步和待同步的条目,可按客户、项目和日期过滤。Eve 可以准确看到哪些条目刚刚创建,选择错误的条目,并点击**“撤销同步”**。扩展从 Moneybird 中删除这些条目,并将它们标记为待同步,以便在她修复规则后正确重新同步。


场景 6 — 临时项目计费

人物: Frank,开发者,维护 github.com/acme/api

发生了什么: Frank 通常计费到项目“API Maintenance”。在三月的两周内,他参与了一个特别冲刺,计费到“API v2 Migration”。冲刺结束后,他切换回去。

Frank 的需求:

Vibes to Bucks 的处理方式: Frank 每次更改账单规则时,他选择**“从今天开始应用”**。3月10日,规则开始计费到“API v2 Migration”。3月24日,它切换回“API Maintenance”。每个时期的条目保持在当时活跃的项目中。


场景 7 — 停止计费,继续跟踪

人物: Gina,自由职业者,正在结束与客户 Eta 的合作。

发生了什么: 合同结束了,但 Gina 仍在 Eta 的代码库上进行小规模维护。她希望在仪表板上看到 AI 成本——以评估新合同是否值得——但她不想同步任何时间条目。

Gina 的需求:

Vibes to Bucks 的处理方式: Gina 取消选中 Eta 的账单规则中的“可计费”。成本继续被跟踪并在仪表板上显示在 Eta 下,但不创建任何时间条目。当新合同到来时,她重新启用计费并选择**“从今天开始应用”**。不可计费的间隙保持不计费。


场景 8 — 提供商迁移

人物: Hugo,自由职业者,已经同步到 Moneybird 6个月。

发生了什么: Hugo 的会计公司将他切换到 Harvest。他在配置中更改 destination: harvest 并设置新的 Harvest 账单规则。

Hugo 的需求:

Vibes to Bucks 的处理方式: 当 Hugo 切换账单提供商时,扩展检测到 Harvest 没有同步历史记录。没有指导,它会尝试为每个历史日子创建条目。相反,同样的三个选项对话框出现:“从今天开始新”“同步所有历史”“仅同步未同步的日子”。Hugo 选择“从今天开始新”。扩展设置迁移截止日期,以便同步引擎跳过今天之前的所有日子。只有今天和未来的日子创建 Harvest 条目。他的 Moneybird 条目保持不变。


场景 9 — 意外删除规则

人物: Ivan,自由职业者,为客户 Kappa 的代码库计费。

发生了什么: Ivan 本想编辑他的账单规则以更改小时费率,但不小心删除了它。他立即注意到并用正确的设置重新创建了规则。

Ivan 的需求:

没有指导的风险: Ivan 创建了新规则。扩展看到一个有历史成本数据的代码库,但没有匹配的账单规则历史。一个天真的同步会将每个过去的日子视为“从未在此规则下同步过”,并为整个历史创建条目。

Vibes to Bucks 的处理方式: 当 Ivan 为一个已经在账本中有历史成本数据的代码库创建账单规则时,扩展识别到这一点并呈现相同的三个选项对话框。Ivan 选择**“从今天开始应用”**——过去的条目保持原样,计费从今天开始继续。没有重复,没有间隙,没有恐慌。


共同的主题

以上每个场景都归结为一个问题:当你更改账单规则时,过去应该如何处理?

Vibes to Bucks 从不为你做这个决定。每次你编辑账单规则——更改客户、项目、费率或计费状态——扩展都会要求你选择:

选择 它的作用
从今天开始应用 过去的日子保持现有的账单。只有今天和未来的日子使用新规则。
应用于所有时间 新规则追溯应用于账本中的每一天。警告关于不会自动删除的现有条目。
仅应用于未同步的日子 已在账单提供商中有时间条目的日子不受影响。只有没有现有条目的日子使用新规则。

每当账单规则更改会影响历史成本的处理时,这个引导选择都会在清晰的对话框中出现。没有惊喜,没有静默的追溯重新计费,没有孤立的重复条目。