feat: remove AI extensions, restructure settings, and add atomic voucher commits (#157)
Remove AI-dependent extensions (ai-chat, ai-categorization, receipt-ocr, invoice-inbox) and their infrastructure (lib/ai/*, ai-consent, LangChain/ Anthropic/OpenAI deps) to simplify core and reduce bundle size. Restructure monolithic settings page into dedicated sub-pages (company, bookkeeping, invoicing, tax, banking, api, account, team, templates) with shared layout and sidebar navigation. Add atomic commit_journal_entry RPC so voucher number increment and status update happen in a single transaction — prevents burned numbers on constraint failures. Add continuity check report and voucher gap explanation tracking. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
e89f2c402d
commit
d0b3f21bde
@@ -186,6 +186,21 @@ export interface CompanySettings {
|
||||
invoice_default_days: number
|
||||
invoice_default_notes: string | null
|
||||
|
||||
// Bookkeeping lock
|
||||
bookkeeping_locked_through: string | null
|
||||
auto_lock_period_days: number | null
|
||||
|
||||
// Invoice PDF settings
|
||||
ore_rounding: boolean
|
||||
invoice_show_ocr: boolean
|
||||
invoice_show_bankgiro: boolean
|
||||
invoice_show_plusgiro: boolean
|
||||
invoice_late_fee_text: string | null
|
||||
invoice_credit_terms_text: string | null
|
||||
|
||||
// Logo
|
||||
logo_url: string | null
|
||||
|
||||
// Onboarding
|
||||
onboarding_step: number
|
||||
onboarding_complete: boolean
|
||||
@@ -1996,6 +2011,26 @@ export interface Project {
|
||||
export interface VoucherGap {
|
||||
gap_start: number
|
||||
gap_end: number
|
||||
series: string
|
||||
}
|
||||
|
||||
export interface VoucherGapExplanation {
|
||||
id: string
|
||||
company_id: string
|
||||
user_id: string
|
||||
fiscal_period_id: string
|
||||
voucher_series: string
|
||||
gap_start: number
|
||||
gap_end: number
|
||||
explanation: string
|
||||
created_at: string
|
||||
updated_at: string
|
||||
}
|
||||
|
||||
export interface SequenceMismatch {
|
||||
series: string
|
||||
sequenceCounter: number
|
||||
actualMax: number
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
@@ -2008,6 +2043,8 @@ export interface YearEndValidation {
|
||||
warnings: string[]
|
||||
draftCount: number
|
||||
voucherGaps: VoucherGap[]
|
||||
unexplainedGaps: VoucherGap[]
|
||||
sequenceMismatches: SequenceMismatch[]
|
||||
trialBalanceBalanced: boolean
|
||||
}
|
||||
|
||||
@@ -2027,6 +2064,26 @@ export interface YearEndResult {
|
||||
revaluationEntry: JournalEntry | null
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// IB/UB Continuity Check Types (Avstämning ingående/utgående balans)
|
||||
// ============================================================
|
||||
|
||||
export interface ContinuityDiscrepancy {
|
||||
account_number: string
|
||||
account_name: string
|
||||
previous_ub_net: number
|
||||
current_ib_net: number
|
||||
difference: number
|
||||
}
|
||||
|
||||
export interface ContinuityCheckResult {
|
||||
valid: boolean
|
||||
period_name: string
|
||||
previous_period_name: string | null
|
||||
discrepancies: ContinuityDiscrepancy[]
|
||||
checked_accounts: number
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Currency Revaluation Types (Omvärdering utländsk valuta)
|
||||
// ============================================================
|
||||
|
||||
Reference in New Issue
Block a user