Merge remote-tracking branch 'origin/main' into export-biz
This commit is contained in:
@@ -3,6 +3,7 @@ import {
|
||||
Sparkles,
|
||||
MessageSquare,
|
||||
Bell,
|
||||
Inbox,
|
||||
Landmark,
|
||||
UtensilsCrossed,
|
||||
ChefHat,
|
||||
@@ -23,6 +24,7 @@ import {
|
||||
BarChart3,
|
||||
Layers,
|
||||
Puzzle,
|
||||
TextSearch,
|
||||
Ship,
|
||||
FileText,
|
||||
Shield,
|
||||
@@ -34,6 +36,7 @@ const ICON_MAP: Record<string, LucideIcon> = {
|
||||
Sparkles,
|
||||
MessageSquare,
|
||||
Bell,
|
||||
Inbox,
|
||||
Landmark,
|
||||
UtensilsCrossed,
|
||||
ChefHat,
|
||||
@@ -54,6 +57,7 @@ const ICON_MAP: Record<string, LucideIcon> = {
|
||||
BarChart3,
|
||||
Layers,
|
||||
Puzzle,
|
||||
TextSearch,
|
||||
Ship,
|
||||
FileText,
|
||||
Shield,
|
||||
|
||||
@@ -6,6 +6,8 @@ import { sruExportExtension } from '@/extensions/sru-export'
|
||||
import { neBilagaExtension } from '@/extensions/ne-bilaga'
|
||||
import { aiChatExtension } from '@/extensions/general/ai-chat'
|
||||
import { invoiceInboxExtension } from '@/extensions/general/invoice-inbox'
|
||||
import { calendarExtension } from '@/extensions/general/calendar'
|
||||
import { userDescriptionMatchExtension } from '@/extensions/general/user-description-match'
|
||||
import { euSalesListExtension } from '@/extensions/export/eu-sales-list'
|
||||
import { vatMonitorExtension } from '@/extensions/export/vat-monitor'
|
||||
import { intrastatExtension } from '@/extensions/export/intrastat'
|
||||
@@ -32,6 +34,8 @@ const FIRST_PARTY_EXTENSIONS: Extension[] = [
|
||||
neBilagaExtension,
|
||||
aiChatExtension,
|
||||
invoiceInboxExtension,
|
||||
calendarExtension,
|
||||
userDescriptionMatchExtension,
|
||||
// enableBankingExtension, // Uncomment to activate PSD2 bank sync
|
||||
|
||||
// ── Export sector ──────────────────────────────────────────
|
||||
|
||||
@@ -51,6 +51,12 @@ export const SECTORS: Sector[] = [
|
||||
description: 'AI-assistent för skatte- och bokföringsfrågor',
|
||||
longDescription:
|
||||
'Ställ frågor om skatt, bokföring och företagande till en AI-assistent som förstår svensk redovisning. Svar baserade på aktuella regler och praxis.',
|
||||
quickAction: {
|
||||
label: 'AI-assistent',
|
||||
description: 'Fråga om bokföring',
|
||||
icon: 'MessageSquare',
|
||||
event: 'open-ai-chat',
|
||||
},
|
||||
},
|
||||
{
|
||||
slug: 'push-notifications',
|
||||
@@ -76,6 +82,30 @@ export const SECTORS: Sector[] = [
|
||||
longDescription:
|
||||
'Skicka leverantörsfakturor till en dedikerad e-postadress eller ladda upp manuellt. AI extraherar automatiskt leverantörsdata, belopp och moms. Granska och bekräfta med ett klick för att skapa leverantörsfakturor.',
|
||||
},
|
||||
{
|
||||
slug: 'calendar',
|
||||
name: 'Kalender',
|
||||
sector: 'general',
|
||||
category: 'operations',
|
||||
icon: 'Calendar',
|
||||
dataPattern: 'core',
|
||||
readsCoreTables: ['invoices', 'deadlines', 'customers'],
|
||||
description: 'Fullstandig kalendervy med manads-, vecko- och dagsvisning',
|
||||
longDescription:
|
||||
'Se alla fakturadatum och deadlines i en interaktiv kalender med manads-, vecko- och dagsvy.',
|
||||
},
|
||||
{
|
||||
slug: 'user-description-match',
|
||||
name: 'Beskrivningsmatchning',
|
||||
sector: 'general',
|
||||
category: 'operations',
|
||||
icon: 'TextSearch',
|
||||
dataPattern: 'core',
|
||||
readsCoreTables: ['transactions', 'mapping_rules'],
|
||||
description: 'Matcha transaktioner med egna beskrivningar',
|
||||
longDescription:
|
||||
'Beskriv vad en transaktion gäller med egna ord och få smarta bokföringsförslag. Systemet lär sig av dina beskrivningar och applicerar automatiskt på framtida transaktioner från samma leverantör.',
|
||||
},
|
||||
{
|
||||
slug: 'enable-banking',
|
||||
name: 'Bankintegration (PSD2)',
|
||||
|
||||
@@ -15,6 +15,16 @@ export type SectorSlug = 'general' | 'restaurant' | 'construction' | 'hotel' | '
|
||||
/** How an extension gets its data */
|
||||
export type ExtensionDataPattern = 'core' | 'manual' | 'both'
|
||||
|
||||
/** Dashboard quick action declared by an extension */
|
||||
export interface QuickActionDefinition {
|
||||
label: string
|
||||
description: string
|
||||
icon: string
|
||||
href?: string
|
||||
event?: string
|
||||
order?: number
|
||||
}
|
||||
|
||||
/** Extension metadata for the marketplace and workspace routing */
|
||||
export interface ExtensionDefinition {
|
||||
slug: string
|
||||
@@ -28,6 +38,7 @@ export interface ExtensionDefinition {
|
||||
dataPattern: ExtensionDataPattern
|
||||
readsCoreTables?: string[]
|
||||
hasOwnData?: boolean
|
||||
quickAction?: QuickActionDefinition
|
||||
}
|
||||
|
||||
/** Sector definition with its extensions */
|
||||
|
||||
@@ -14,7 +14,9 @@ const WORKSPACES: Record<WorkspaceKey, ComponentType<WorkspaceComponentProps>> =
|
||||
'general/ai-chat': dynamic(() => import('@/components/extensions/general/AiChatWorkspace')),
|
||||
'general/push-notifications': dynamic(() => import('@/components/extensions/general/PushNotificationsWorkspace')),
|
||||
'general/invoice-inbox': dynamic(() => import('@/components/extensions/general/InvoiceInboxWorkspace')),
|
||||
'general/calendar': dynamic(() => import('@/components/extensions/general/CalendarWorkspace')),
|
||||
'general/enable-banking': dynamic(() => import('@/components/extensions/general/EnableBankingWorkspace')),
|
||||
'general/user-description-match': dynamic(() => import('@/components/extensions/general/UserDescriptionMatchWorkspace')),
|
||||
// Restaurant
|
||||
'restaurant/food-cost': dynamic(() => import('@/components/extensions/restaurant/FoodCostWorkspace')),
|
||||
'restaurant/earnings-per-liter': dynamic(() => import('@/components/extensions/restaurant/EarningsPerLiterWorkspace')),
|
||||
|
||||
Reference in New Issue
Block a user