fix(pitch-deck): lean cost structure for Wandeldarlehen scenario
All checks were successful
Build pitch-deck / build-push-deploy (push) Successful in 1m15s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-consent (push) Successful in 35s
CI / test-python-voice (push) Successful in 36s
CI / test-bqas (push) Successful in 34s
All checks were successful
Build pitch-deck / build-push-deploy (push) Successful in 1m15s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-consent (push) Successful in 35s
CI / test-python-voice (push) Successful in 36s
CI / test-bqas (push) Successful in 34s
Engine formula adjustments (reduced for lean startup): - Fortbildung: 500→300, Fahrzeug: 400→200, KFZ-Steuer: 50→25 - KFZ-Versicherung: 500→150, Reise: 100→75, Bewirtung: 200→100 - Serverkosten: 100/Kunde→50/Kunde, Basis 500→300 Tooltips updated to match new values. DB (production): All (M) rows reduced to lean levels: - Raumkosten: 5000→0 (remote, kein Büro) - Versicherungen: ~1700→800/Mon (Startup-Tarife) - Verbrauchsmaterial: 500→50, Werkzeuge: 300→100 - Rechts-/Beratung: nur Gründungskosten (m8-m10) Result: Liquidität Ende 2027 ≈ 0 (4.496 EUR), Break-Even 2029. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -52,14 +52,14 @@ function getLabel(row: SheetRow): string {
|
||||
}
|
||||
|
||||
const FORMULA_TOOLTIPS: Record<string, string> = {
|
||||
'Fort-/Weiterbildungskosten (F)': 'Mitarbeiter (ohne Gründer) × 500 EUR/Mon',
|
||||
'Fahrzeugkosten (F)': 'Mitarbeiter (ohne Gründer) × 400 EUR/Mon',
|
||||
'KFZ-Steuern (F)': 'Mitarbeiter (ohne Gründer) × 50 EUR/Mon',
|
||||
'KFZ-Versicherung (F)': 'Mitarbeiter (ohne Gründer) × 500 EUR/Mon',
|
||||
'Reisekosten (F)': 'Headcount gesamt × 100 EUR/Mon',
|
||||
'Bewirtungskosten (F)': 'Enterprise-Kunden × 200 EUR/Mon',
|
||||
'Fort-/Weiterbildungskosten (F)': 'Mitarbeiter (ohne Gründer) × 300 EUR/Mon',
|
||||
'Fahrzeugkosten (F)': 'Mitarbeiter (ohne Gründer) × 200 EUR/Mon',
|
||||
'KFZ-Steuern (F)': 'Mitarbeiter (ohne Gründer) × 25 EUR/Mon',
|
||||
'KFZ-Versicherung (F)': 'Mitarbeiter (ohne Gründer) × 150 EUR/Mon',
|
||||
'Reisekosten (F)': 'Headcount gesamt × 75 EUR/Mon',
|
||||
'Bewirtungskosten (F)': 'Enterprise-Kunden × 100 EUR/Mon',
|
||||
'Internet/Mobilfunk (F)': 'Headcount gesamt × 50 EUR/Mon',
|
||||
'Serverkosten Cloud (F)': 'Bestandskunden × 100 EUR + 500 EUR Basis',
|
||||
'Serverkosten Cloud (F)': 'Bestandskunden × 50 EUR + 300 EUR Basis',
|
||||
'Berufsgenossenschaft (F)': '2,77% der Brutto-Lohnsumme (VBG IT)',
|
||||
'Allgemeine Marketingkosten (F)': '10% vom Monatsumsatz',
|
||||
'Gewerbesteuer (F)': '12,25% vom Gewinn (Messzahl 3,5% × Hebesatz 350%, nur bei Gewinn)',
|
||||
|
||||
@@ -231,12 +231,12 @@ export async function computeFinanzplan(pool: Pool, scenarioId: string): Promise
|
||||
|
||||
// Formula-based rows: derive from headcount (excl. founders) or customers
|
||||
const formulaRows: { label: string; perUnit: number; source: MonthlyValues }[] = [
|
||||
{ label: 'Fort-/Weiterbildungskosten (F)', perUnit: 500, source: hcWithoutFounders },
|
||||
{ label: 'Fahrzeugkosten (F)', perUnit: 400, source: hcWithoutFounders },
|
||||
{ label: 'KFZ-Steuern (F)', perUnit: 50, source: hcWithoutFounders },
|
||||
{ label: 'KFZ-Versicherung (F)', perUnit: 500, source: hcWithoutFounders },
|
||||
{ label: 'Reisekosten (F)', perUnit: 100, source: headcount },
|
||||
{ label: 'Bewirtungskosten (F)', perUnit: 200, source: enterpriseKunden },
|
||||
{ label: 'Fort-/Weiterbildungskosten (F)', perUnit: 300, source: hcWithoutFounders },
|
||||
{ label: 'Fahrzeugkosten (F)', perUnit: 200, source: hcWithoutFounders },
|
||||
{ label: 'KFZ-Steuern (F)', perUnit: 25, source: hcWithoutFounders },
|
||||
{ label: 'KFZ-Versicherung (F)', perUnit: 150, source: hcWithoutFounders },
|
||||
{ label: 'Reisekosten (F)', perUnit: 75, source: headcount },
|
||||
{ label: 'Bewirtungskosten (F)', perUnit: 100, source: enterpriseKunden },
|
||||
{ label: 'Internet/Mobilfunk (F)', perUnit: 50, source: headcount },
|
||||
]
|
||||
|
||||
@@ -285,7 +285,7 @@ export async function computeFinanzplan(pool: Pool, scenarioId: string): Promise
|
||||
if (serverRow) {
|
||||
const computed = emptyMonthly()
|
||||
for (let m = 1; m <= MONTHS; m++) {
|
||||
computed[`m${m}`] = Math.round((totalKunden[`m${m}`] || 0) * 100 + 500)
|
||||
computed[`m${m}`] = Math.round((totalKunden[`m${m}`] || 0) * 50 + 300)
|
||||
}
|
||||
await pool.query('UPDATE fp_betriebliche_aufwendungen SET values = $1 WHERE id = $2', [JSON.stringify(computed), serverRow.id])
|
||||
serverRow.values = computed
|
||||
|
||||
Reference in New Issue
Block a user