Gå til innhold

Versjon 1 (Lansert) Teknisk Utviklerdokumentasjon

Dette dokumentet gir dyp teknisk innsikt i arkitekturen, filene og databaseendringene som ble implementert i Versjon 1 (Fase 1-4) av AI Chatbot-prosjektet i ClubSite.


1. Teknisk Arkitektur & Datamodell

Første versjon ble bygget for å injisere en flytende chat-widget på Clubsite CMS uten å forstyrre den eksisterende kjernen (Classic ASP).

Databaseendringer (MS SQL)

Når administratoren først besøker adminpanelet (ai_chatbot.asp), kjøres følgende SQL for å generere tabellen:

IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='AI_Chatbot_Settings' and xtype='U')
CREATE TABLE [AI_Chatbot_Settings] (
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [IsActive] [bit] NOT NULL DEFAULT ((0)),
    [BotName] [nvarchar](100) NULL,
    [PrimaryColor] [nvarchar](50) NULL,
    [HeaderTextColor] [nvarchar](50) NULL,
    [ClubId] [int] NULL
) ON [PRIMARY];
(Ingen data blir vist eller frontend-kode loades unless IsActive = 1 i denne DB-raden).


2. Inkluderte Filer i V1 Deployment

Kilde Destinasjon Funksjon SPRÅK / STACK
ai_chat_widget.html / (Roten) Danner DOM-strukturen og inneholder JavaScript for state-management, API-kall (fetch) og toggling av chatboksen. HTML5, CSS3, Vanilla JS
ai_chatbot.asp /SKI/CSADMIN/ Backend grafisk grensesnitt for admin. Utfører CRUD-operasjoner direkte mot AI_Chatbot_Settings tabellen. Utfører også database-scaffolding på første last. Classic VBScript/ASP
ai_chatbot_loader.asp /SKI/common-front/ Dynamisk script som leser klubbens visuelle fargekoder fra DB via ADODB.Connection og injecter <script> og CSS-variabler over HTML-dokumentet, dersom systemet er enablet. Classic VBScript/ASP

Selve chat-logikken holdes avkoblet CMSets kildekode via Server Side Includes (SSI). Modulen blir implementert via en enkelt fil i html_footer.asp:

<!-- AI Chatbot Loader -->
<!-- #include file="ai_chatbot_loader.asp" -->

Dette design-mønsteret betyr at en feil i Chatbot-koden isoleres fra ClubSites side-rendering. Filen html_footer.asp må ligge i samme mappe som ai_chatbot_loader.asp (eller justeres via virtuelt path).


4. Frontend Variabler (Dynamisk injection)

Fra ai_chatbot_loader.asp plukkes DB-innstillingene opp, og skyves inn som JavaScript-variabler bundet til window for at den underliggende widget-htmlen kan plukke opp kundesettede overrides:

window.AI_CHATBOT_CONFIG = {
    botName: "<%=botName%>",
    primaryColor: "<%=primaryColor%>",
    headerTextColor: "<%=headerTextColor%>",
    clubId: <%=Session("dbClientNumber")%>
};

5. API Backend (Python / FastAPI)

(Ref. Fase 2 av den opprinnelige kravspekken) V1 støtter seg på en ekstern Python API-tjeneste bygget på FastAPI. Den kjører en isolert context som: 1. Gjør oppslag via Gemini. 2. Sender clubId i REST-kall for å få spesifikk klubbkontekst. 3. Behandler sessions via Cache.

REST Endpoint-kontrakten som V1-JS-widgeten bruker mot Python-serveren: - Endpoint: /chat (POST) - Payload: { "message": "Hei!", "clubId": 12, "history": [{...}] } - Response: { "status": "success", "reply": "Hei, jeg kan hjelpe deg med greenfee" }


For den faktiske loggen for V2, eller planlegging videre, se Versjon 2 dokumentasjon.