Vet vad Studio äger
Portal Studio äger kundanpassningsskalet: sidor, komponentplacering, varumärkestokens, responsivt beteende, navigering, sidfot, identitetspresentation, biljettresor och releaser. Hjälpcentret äger språk, kategorier, sektioner och artikelinnehåll. Studio konsumerar det innehållet genom en skyddad bro; Det skapar aldrig en andra artikelaffär.
Fullständig beredskap innan du bygger djupt
- Öppna Portal Studio→Börja→Beredskap.
- Bekräfta den kanoniska portal adressen och öppna den i en separat flik.
- Ställ in logotypen, webbläsareikonen, röra ikonen, social bild och temafärg.
- Bekräfta hjälpcenter språk; ändra språkmyndighet i Hjälpcenter, inte Studio.
- Konfigurera navigering och den globala företagsfoten.
- Välj en biljettresa och konfigurera minst ett förfrågningsformulär.
- Håll minst en säker inloggningsmetod aktiv och granska identitetsupptäckten.
- Kör kvalitet och skapa den undertecknade förhandsgranskningen handskakning.
- Skapa den första styrda frisättningen efter varje blockeringsobjekt är tydligt.
Beredskapsprocenten beräknas från sparade arbetsytadata och förhandsgranskningstillstånd. Välja en objektrutt direkt till sin egen panel.
Bygg sidor och återanvändbara sektioner
- Öppna Bygg → Sidor och välj en skyddad systemsida eller skapa en anpassad sida.
- Ange rutten, titeln, åtkomstläget och lokalbeteende. Skyddade systemvägar kan inte raderas.
- Öppna Komponenterfiltrera efter jobb eller mognad och placera en komponent i en kompatibel slot.
- Använd inspektören för innehåll, utseende, bindande, synlighet och tillgänglighet.
- Använd återanvändbara mönster för upprepade strukturer; håll organisationen eller varumärkesskillnaderna i varianter.
- Spara utkastet till och motion lastning, tomt, fel, gäst och inloggade stater i förhandsgranskningen.
Förhandsgranska riktiga resor, inte en glad skärm
- Välj gäststöd, inloggad biljett, faktureringsvård, organisation eller kunskapshandoff.
- Byt personas, organisation, roll och hjälpcenter språk.
- Inspektera mobil, stor mobil, surfplatta, bärbar dator, skrivbord, bred och ultrawide breakpoints.
- Kontrollera ärftliga, överdrivna och återställda värden; undvik onödig dubbelgång.
- Kör tangentbord, RTL, reducerad rörelse, lastning, tomma, otillgängliga och tillståndsstater.
- Använd Test Lab för tillgänglighet, nyttolast, rutt, bindande och återgivningsresultat före granskning.
Rör ett hjälpcenter på Zendesk-nivå utan dubblett innehåll
- Skapa kategorier, sektioner, artiklar, översättningar, bilagor och mallar i Hjälpcenter.
- Möjliggöra språk där; lokaliserade sniglar, sökningar, foder, SEO och artikelkrom följer samma auktoritet.
- I Studio, placera kunskapssökning, kategori / resursrutnät, foder, ämnestilldelning, artikel, innehållsförteckning, feedback, relaterade och tidigare / nästa komponenter.
- Konfigurera presenterade, populära och senaste flöden; Använd kontextuella förslag i biljettflöden.
- Förhandsgranska no-results, långa artiklar, bilagor, feedback, klockor / prenumeration och biljett handoff.
- Verifiera rena lokalvägar, kanoniska / hreflang, strukturerade data och cache ogiltigförklaring efter publicering.
Konfigurera inloggning säkert
- Öppna Identitet & organisationer → identitet och hålla minst en inloggningsväg aktiverad.
- Välj standardmetod, registreringspolicy, sessionslängd, SSO-domän verkställighet och upptäckt beteende.
- Lägg till leverantörer med visuella routingfält: typ, domäner, prioritet, presentation, aktiverat och verifierat tillstånd. Hemligheterna stannar i identitetsdelsystemet.
- För SCIM, möjliggöra att tillhandahålla, kopiera den exakta arbetsytan slutpunkten och rotera token. Store engångstoken i IdP.
- Kartpensionskrav och organisationsmedlemskap, testa sedan skapa, uppdatera, gruppmedlemsskap och deaktivering med en testhyresgäst.
- Förhandsgranska gäst, kund, delegerad organisation och blockerade stater innan publicering.
Komponera hela supportresan
- Välj direktform, guide, sök-första, nav eller service-desk inmatning.
- Skapa ett namngivet, versionsformulär med sektioner och tillgängliga fältetiketter.
- Bygg visuella förhållanden, routing, SLA och godkännande steg; avancerad JSON är för granskade utvecklare förändringar endast.
- Konfigurera lista, detaljer, tråd, tidslinje, bilaga, godkännande, SLA och svara ytor.
- Test gästuppslag, inloggade förfrågningar, organisationens synlighet, uppladdningssvikt, e-postmeddelande och kunskapsbrist.
- Spara ett utkast; publicera först efter rutten adapter och anmälningsväg passerar förflygning.
Flytta genom en styrd release
- Kör validering och Test Lab. Fix blockera resultat; bekräfta tillåtna varningar med sammanhanget.
- Lägg till release noter och begära granskning. Granskare kommenterar stabila sid/nod vägar.
- Godkännare inspektera diff, förhandsgranskningsresor, tillståndsförändringar och bevis.
- Publicera eller schemalägga genom bakgrundsarbetaren. Leaving Studio avbryter inte ett varaktigt jobb.
- Se framsteg, hälsa och korrelation ID. Sluta/rekord endast från arbetskontroller.
- Kontrollera kritiska rutter, identitet, biljetter och kunskap. Rulla tillbaka till en oföränderlig föregångare vid behov.
| Förmåga | Syfte |
|---|---|
| Visa / redigera | Inspektera eller ändra utkast utan frisläppande myndighet. |
| Recension / Godkänn | Separat feedback och godkännande från författarskap. |
| Schema / Publicera/Rolback | Oberoende produktionskontroller. |
| Identitet / SCIM Migrera / Komponenter / Diagnostik | Begränsa känsliga specialister. |
Migrera med bevis och en väg tillbaka
- Välj leverantörsritningen och skapa en torr körning.
- Granska upptäckta inställningar, oanvända värden, innehåll räknas och visuell paritet fångar.
- Fullständiga säkra kartläggningar och kör den strukturerade diff.
- Applicera på ett utkast, försona räknas och förhandsgranska varje skyddad resa.
- Registrera auktoriserad acceptans; aldrig överskriva den aktuella publicerade utgåvan under importen.
- Publicera genom styrning och hålla migrationsrapporten, släpp ID och återgångspunkt tillsammans.
Förlänga kontrakt, inte mallar
En säker förlängning registrerar en stabil komponenttyp och schema, förklarar behörigheter och databehov, gör genom den kanoniska kompilatorn och levererar deterministiska fixturer / tester. Sök inte godtyckliga tabeller, injicera redaktör JavaScript i den offentliga portalen, skapa en annan artikel förvaring eller kringgå utgåvan gate.
Portaldokument v2
Sidor innehåller stabila noder, slots, egenskaper, bindningar, responsiva övertoner, tillstånd och tillgänglighet metadata.
Komponentregister
Ett kontrakt matar Studio, kompilator, dokumentation, migration och löptidskontroller.
Datakälla Registry
Tillåtna, lättlästa, tillståndskodade DTO ersätter godtyckliga SQL eller dynamiska handlingar.
En renderer
Förhandsgranska och offentlig produktion dela sammanställning, sanitet, budgetar och runtime stater.
Definiera ett komponentpaket
Använd ett lägsta namnspaced ID och semantisk version. Supply båda kompatibilitetsegenskaper som visas eftersom paketinspektion och säkerhetsvalidering utför oberoende kontroller.
{
"schema_version": 1,
"id": "acme.support_health",
"slug": "acme-support-health",
"name": "Support health",
"version": "1.0.0",
"entry": "renderer.php",
"renderer": "server",
"server_renderer": "renderer.php",
"public_renderer": "public.js",
"schema": {
"type": "object",
"properties": {
"heading": {"type": "string", "maxLength": 120},
"showSla": {"type": "boolean", "default": true}
},
"additionalProperties": false
},
"permissions": ["tickets.read"],
"data_scopes": ["tickets.mine"],
"accessibility": {
"landmark": "section",
"nameFrom": "heading",
"emptyState": true,
"errorState": true
},
"performance": {"max_js_bytes": 12000, "max_css_bytes": 8000},
"performance_budget": {"js": 12000, "css": 8000, "requests": 0}
}
Node form
{
"id": "node-support-health",
"type": "custom.acme_support_health",
"props": {"heading": "Support health", "showSla": true},
"bindings": {"requests": {"source": "tickets.mine", "limit": 5}},
"responsive": {"mobile": {"padding": "16px"}, "desktop": {"padding": "24px"}},
"conditions": [{"field": "identity.signed_in", "operator": "equals", "value": true}],
"a11y": {"label": "Support health"}
}
- ID är fortfarande stabila över redigeringar och migrationer.
- Fastigheter avvisar odeklarerade fält och osäkra HTML.
- Varje databunden vy definierar laddning, tomt, tillstånd och retryable-error utgång.
- Container komponenter namnge sina slots; blad kan inte acceptera godtyckliga barn.
- Mark mognad ärligt: planerade block, beta varnar, GA kräver fullständiga bevis.
Använd tillståndssäkra DTO:er
- Välj ett befintligt prickat ID som
tickets.mine,knowledge.featuredellercustomer.profile. - Bind endast fält som deklarerats av dess versionerade DTO. Okända källor misslyckas med
data_source.unknown. - Passera den redan auktoriserade portalen kontext; acceptera aldrig arbetsyta / kundidentitet från en opålitlig egendom.
- Listgränser är klämda till1–100 Normalisera paginering, lokal och sökvärden.
- Om en ny källa är oundviklig, lägga till sin stabila definition, säker kartläggning, behörigheter, tomt beteende och förhandsgranskningsarmatur tillsammans.
{
"success": true,
"source": "tickets.mine",
"contract_version": 1,
"items": [
{"id": 42, "number": "REQ-42", "subject": "Example", "status": "open"}
]
}
Håll dig inuti förtroendegränserna
| gräns | Krävt beteende |
|---|---|
| Arbetsyta | Lös från den betrodda värden / väg / session, sedan omfattning varje läs och skriv innan utförande. |
| HTML_ | Använd Portal sanitizer/parser-ullistan. Aldrig konkatenera opålitliga attribut, URLs, CSS eller skript. |
| Förhandsgranska | Kräver samma ursprungskälla fönster, signerad kanalversion och nonce. Ignorera oönskade meddelanden. |
| Identitet | Håll hemligheter utanför dokument. SCIM är bärare-authenticated, sessionless och workpace-bundna. |
| Paket | Avvisa traversal, absoluta vägar, länkar / specifika filer, överdimensionerade arkiv, checksum/signatur missmatchning och okända behörigheter. |
| Fel | Returnera stabil kod, säkert meddelande, retryability, remediation och korrelation ID; logga privata undantag server-side. |
| Kunskap | Läs via HelpCenterBridge. Aldrig författare eller duplicera Hjälpcenter-artiklar i en förlängning. |
{
"success": false,
"error": {
"code": "studio.permission_denied",
"message": "You do not have permission to publish the Portal.",
"retryable": false,
"correlation_id": "ps_…",
"meta": {"capability": "publish"}
}
}
Inspektera, installera och uppgradera atomiskt
- Sätt
component.jsonvid ZIP-roten och håll varje väg i förhållande. - Kör inspektion först. Installationsskyddet kapar arkiv på 500 poster och 25 MB utdragen; säkerhetsvalidering lägger till oberoende gränser.
- Verifiera den förväntade SHA-256 och paketsignatur i releaseprocessen.
- Installera till en versions katalog. mutera aldrig en installerad version på plats.
- Ge migreringar för att bryta schemaändringar och bevara okända kompatibilitetsfält.
- Öppna komponenten i ett utkast, kör varje stat/vissningsport/persona fixtur och publicera genom styrning.
- Rollback aktiverar den tidigare oföränderliga komponenten / dokumentfrisättningen; behåll dess reproducerbara bevis.
Bevisa förlängningen på samma release hash
php tools/portal_studio_certify.php --source-only --json
php tools/test_portal_studio_contract.php
php tools/test_portal_one_renderer.php
php tools/test_portal_studio_engineer.php
php tools/test_portal_component_contracts.php
php tools/test_portal_one_renderer.php
php tools/test_portal_shell_contract.php
php tools/test_portal_knowledge_contract.php
node node_modules/@playwright/test/cli.js test tests/e2e/portal-studio-shell-visual-contract.spec.js tests/e2e/portal-custom-code-runtime.spec.js
Källkedjor är nödvändiga, inte tillräckliga. Bifoga databas / migration, real-browser visuell, identitetsleverantör, auktorisationsisolering, tillgänglighet, prestanda, kö / cron, post / bilaga, backup / återställning och distribution bevis för samma oföränderliga release hash. Okänd krävs bevis måste misslyckas frisläppandet.
- Enhet: schema, sanitet, DTO form, villkor, migrationer och typade misslyckanden.
- Avtal: lastning/tomt/fel/framgång, mognad, slots, bindningar och en-återgivning paritet.
- Webbläsare: tangentbord, fokus, semantik, RTL, zoom/reflow, reducerad rörelse och varje breakpoint.
- Säkerhet: gränsöverskridande prober, smidda åtgärder, paketattacker, förhandsgranskningsspoofing och hemlig läckage.
- Operationer: hållbara framsteg, lämna / återgå, stoppa / retry / återuppta, schemalägga hjärtslag och rollback.
Felsökning av statligt och korrelation ID
| statsstat | Vad ska man göra |
|---|---|
| Tillstånd | Begär den namngivna förmågan. Dold UI är bekvämlighet; backenden alltid genomdriver det. |
| Validering | Öppna den rapporterade sidan / nod / fältet, korrigera det och sedan köra preflight. |
| Konflikt | Ladda om den senaste revideringen, jämför ändringar och återanvända avsiktligt. Tvinga aldrig överskrivning. |
| Offline / upprepar | Håll utkastet, återställa anslutning, försök genom åtgärden och verifiera hållbart jobbtillstånd. |
| Fatal / otillgänglig | Kopiera korrelation ID och tidsstämpel för stöd. Aldrig klistra in hemligheter eller privat undantag text. |
| Publicera misslyckades | Inspektera preflight / jobbutgång, retry endast förtrollbara stadier eller rulla tillbaka till den sista frisk utgåva. |
| SCIM 401/403 | Bekräfta endpoint/workspace, björntoken, aktiverat tillstånd och rotation; Använd aldrig en webbläsare session cookie. |
| Kunskap är stale | Verifiera lokal / publicering i Hjälpcenter, inspektera sedan cache-invalidering och den rena lokaliserade rutten. |
Denna guide är tryckklar. Använd Print → Spara som PDF För en kontrollerad offline-kopia.