Hoppa till innehållet

Fråga om projektet

Yta

Hjälper vem som helst att förstå projektet genom att svara på frågor med egna ord, bara utifrån projektets öppna sidor.

källa: apps/projekt/src/projektstod, apps/projekt/src/app/api/fragauppdaterad:

Ansvar

  • Visa frågefältet inbäddat i startsidans hero och en knapp på varje öppen undersida som öppnar stödet i en panel – men inte bakom åtkomstkoden och inte i devportalen.
  • Bygga underlaget av de öppna sidorna som en besökare ser dem: servern läser sina egna sidor utan kaka och gör om dem till text. Inga datafiler läses direkt.
  • Svara i klarspråk, förklara facktermer, säga ifrån när svaret inte finns i underlaget och avböja det som inte handlar om projektet.
  • Länka till sidorna mitt i svaret som brickor med sidans symbol, bara till sidor i underlaget, visa övriga sidor svaret bygger på under det och märka svaret ✦ AI-genererat.
  • Äga samtalet på servern och hålla kostnaden nere med takgränser och cachat underlag.

Filer

Tabell: Sökväg, Roll
SökvägRoll
projektstod/sidor.tsUnderlagets sidor med namn, en rad om innehållet och frågeförslag, stodsidaFor och händelserna som strömmas. Utan data och Node-API:er, så att klienten kan använda den.
projektstod/text.tshtmlTillText: sidans main som text, utan skript och symboler, med rubriker och listor kvar.
projektstod/underlag.tsLäser de öppna sidorna från servern själv utan kaka, med tio minuters cache och en läsning åt gången. PROJEKTSTOD_BAS byter adress, standard 127.0.0.1:PORT.
projektstod/motor.tsPrompten, samtalet med underlaget som dokument med källhänvisningar och cachepunkt, och strömningen. Källorna samlas ur källhänvisningarna i det färdiga svaret.
projektstod/grans.tsTakgränserna: 20 frågor per besökare och tio minuter, 300 per timme totalt.
projektstod/Fragestod.tsxStödet i två former – inbaddad (ett sökfält med förslag, svaren under) och panel (ett samtal, fältet under) – med svaren i stycken och punktlistor och sidlänkarna som brickor. Avbrytbar; meddelar skärmläsare när svaret är klart.
projektstod/svarsformat.tsdelaRad, sidlank och utanOfarditLank: fetstil och länkar i svaret, där en länk bara blir en länk om adressen är en sida i underlaget.
projektstod/Fragaruta.tsxFrågefältet inbäddat i startsidans hero, under ingressen.
projektstod/FragaKnapp.tsxKnappen i nedre hörnet och panelen, en modal dialog. Visas bara på sidorna i underlaget och under dem, inte på startsidan.
app/api/fraga/route.tsTar emot frågan, prövar den, håller samtalen i minnet och strömmar svaret som NDJSON.
projektstod/projektstod.test.tsVaktar att underlaget bara består av öppna sidor, var knappen syns, textomvandlingen, samtalets form och takgränsen.

API

Tabell: Namn, Signatur, Beskrivning
NamnSignaturBeskrivning
POST /api/fraga{ fraga: string (1–500), session?: uuid, sida?: string } → 200 NDJSON Stodhandelse[] + x-stod-session | 400 | 429 | 503Ställer en fråga. Sidan är adressen besökaren står på; den används bara för att säga vilken sida det gäller.
stodsidaFor(pathname: string) => Stodsida | undefinedSidan i underlaget som en adress hör till. undefined betyder att stödet inte ska synas där.
htmlTillText(html: string) => stringEn renderad sidas main som läsbar text.

Kontrakt

Tabell: Händelse, Form, Betyder
HändelseFormBetyder
status{ typ: "status", text }Något pågår, till exempel att sidorna läses.
text{ typ: "text", text }En bit av svaret, i ordning.
kallor{ typ: "kallor", kallor: { titel, href }[] }Sidorna svaret bygger på, sist.
fel{ typ: "fel", text }Svaret kunde inte hämtas. Texten går att visa som den är.
  • En ny öppen sida blir en del av stödet först när den läggs i stodsidor. Testet fäller bygget om en sida i listan ligger bakom spärren.
  • Klienten skickar aldrig tidigare svar. Servern bygger samtalet ur sina egna turer, högst åtta, och glömmer det efter 30 minuter.
  • Underlaget är detsamma mellan frågorna och har cachepunkten på sista dokumentet; datum, sida och fråga kommer efter den.
  • Modellen länkar med [Sidans namn](/adress). Prompten listar adresserna; klienten gör bara adresser i stodsidor till länkar och tar bort ankare och frågor, som modellen inte kan veta något om.
  • Utan ANTHROPIC_API_KEY svarar /api/fraga 503 och rutan säger att stödet inte är påslaget. AI_PROVIDER styr inte stödet.

Beroenden och beslut

Beslut: ADR-034, ADR-012, ADR-032

Levererar: frågefältet i startsidans hero, knappen och panelen på undersidorna, sidlänkar i svaren, POST /api/fraga, källhänvisningar till sidorna, PROJEKTSTOD_MODELL

Kvarstår

  • ANTHROPIC_API_KEY måste vara satt i Dokploy för att stödet ska svara där.
  • Samtalen och takgränserna ligger i minnet: de försvinner vid en omstart och delas inte mellan instanser.
  • Ingen uppföljning av vilka frågor som ställs eller om svaren hjälper.
  • Statusrapporterna på /status/<id> ingår bara som de står på /status.

15 delar i projektportalen · gemensamma i devportalen: ai-adapter, anthropic, bygge, designsystem, dokploy, dokumentation, gemensamt, tokens, ui