Saber o que o Studio possui
O Portal Studio possui a shell voltada para o cliente: páginas, colocação de componentes, fichas de marca, comportamento responsivo, navegação, rodapé, apresentação de identidade, viagens e lançamentos de tickets. A Central de Ajuda possui idiomas, categorias, seções e conteúdo de artigos. O Studio consome esse conteúdo através de uma ponte protegida; nunca cria uma segunda loja de artigos .
Aproxime-se completamente antes de construir profundamente
- Abrir Portal Studio → Início → Pronto.
- Confirme o endereço canônico do Portal e abra-o em uma aba separada.
- Defina o logotipo, ícone do navegador, ícone de toque, imagem social e cor do tema.
- Confirme idiomas da Central de Ajuda; altere a autoridade do idioma na Central de ajuda, não no Studio.
- Configurar navegação e o rodapé global da empresa.
- Escolha uma viagem de ticket e configure pelo menos um formulário de solicitação.
- Mantenha pelo menos um método de entrada seguro ativo e revise a descoberta da identidade.
- Executar Qualidade e estabelecer o aperto de mão pré-visualização assinado.
- Crie a primeira versão governada após cada item de bloqueio ser claro.
A percentagem de prontidão é calculada a partir dos dados salvos do espaço de trabalho e do estado de antevisão. Selecionando um item rotas diretamente para o seu próprio painel.
Compila páginas e seções reutilizáveis
- Abrir Compilar → Páginas e selecione uma página protegida do sistema ou crie uma página personalizada.
- Define a rota, o título, o modo de acesso e o comportamento local. As rotas do sistema protegidas não podem ser apagadas.
- Abrir Componentes, filtrar por trabalho ou maturidade, e colocar um componente em uma slot compatível.
- Use o inspetor para conteúdo, aparência, vinculação, visibilidade e acessibilidade.
- Use padrões reutilizáveis para estruturas repetidas; mantenha diferenças de organização ou marca em variantes.
- Salve o rascunho e exercício de carregamento, vazio, erro, convidado e estados assinados na pré-visualização.
Visualizar viagens reais, nenhuma tela feliz
- Escolha suporte a hóspedes, ingresso assinado, atendimento de cobrança, organização ou transferência de conhecimento.
- Mude personas, organização, papel e linguagem da Central de Ajuda.
- Inspecione pontos de interrupção móveis, grandes, tablet, laptop, desktop, amplos e ultrawide.
- Verificar os valores herdados, anulados e repor; evite duplicações desnecessárias de pontos de paragem.
- Executar o teclado, RTL, redução de movimento, carregamento, vazio, não disponível e estados de permissão.
- Use o Test Lab para acessibilidade, carga útil, rota, vinculação e resultados do renderizador antes de revisão.
Operar uma Central de Ajuda do Zendesk-level sem conteúdo duplicado
- Criar categorias, seções, artigos, traduções, anexos e modelos em Centro de Ajuda.
- Habilite idiomas lá; less localizados, pesquisa, feeds, SEO e cromo de artigo seguem a mesma autoridade.
- No Studio, coloque busca de conhecimento, grades categoria/recurso, feeds, acordeão tópico, artigo, índice, feedback, componentes relacionados e anteriores/próximos.
- Configurar feeds em destaque, populares e recentes; use sugestões contextuais nos fluxos de ticket.
- Visualize sem resultados, artigos longos, anexos, feedback, relógio/assinatura e transferência de ticket.
- Verifique rotas locais limpas, canônicas/hreflang, dados estruturados e invalidação de cache após a publicação.
Configurar o login com segurança
- Abrir Identidade & organizações → Identidade e manter pelo menos um caminho de entrada ativado.
- Escolha o método padrão, política de registro, duração da sessão, SSO-completo e comportamento de descoberta.
- Adicionar provedores com campos de roteamento visual: tipo, domínios, prioridade, apresentação, estado habilitado e verificado. Segredos permanecem no subsistema identidade.
- Para SCIM, habilitar o provisionamento, copiar o ponto final exato do espaço de trabalho e rodar o token. Guarde o toke único no IP.
- Mapa reivindicações e organização de associação, em seguida, teste criar, atualizar, membro do grupo e desativação com um inquilino teste.
- Visualize o convidado, cliente, organização delegada e estados bloqueados antes da publicação.
Compor a jornada completa de suporte
- Selecione formulário direto, assistente, primeiro pesquisa, hub ou serviço-desk entrada.
- Crie um formulário de solicitação com nome, versão com seções e etiquetas de campo acessíveis.
- Construir condições visuais, roteamento,SLAe etapas de aprovação; avançadoJSONé apenas para alterações de desenvolvedor revisadas.
- Configurar lista, detalhe, thread, linha do tempo, anexo, aprovação, SLA e superfícies de resposta.
- Teste o olhar de hóspedes, solicitações de inscrição, visibilidade da organização, falha no upload, notificação por e-mail e deflexão do conhecimento.
- Salve um rascunho; publique somente após o adaptador de rota e a rota de notificação passarem antes do voo.
Mover através de uma versão governada
- Executar validação e Test Lab. Corrigir os resultados de bloqueio; reconhecer avisos permitidos com contexto.
- Adicione notas de versão e request review. Reviewers comentar em stable page/node routes.
- Aprova inspecione o diff, as viagens de visualização, as alterações de permissão e as evidências.
- Publique ou agenda através do trabalhador de fundo. Deixar o Studio não cancela um trabalho durável.
- Assista progresso, saúde e identificação de correlação. Pare/retirar apenas dos controles de trabalho.
- Verifique rotas críticas, identidade, tickets e conhecimento. Volte para uma versão prévia imutável quando necessário.
| Capacidade | Objecto |
|---|---|
| Ver / Editar | Inspecionar ou alterar rascunhos sem autoridade de liberação. |
| Revisão / Aprovar | Separar feedback e aprovação de autoria. |
| Agendar / Publicar / Retroceder | Controlos independentes da produção. |
| Identidade / SCIM / Migrar / Componentes / Diagnósticos | Restrinja operações especializadas sensíveis. |
Migrar com provas e um caminho de volta
- Selecione o projeto do provedor e crie uma execução em seco.
- Reveja as configurações descobertas, valores não mapeados, contagens de conteúdo e capturas de paridade visual.
- Completar mapeamentos seguros e executar novamente o diff estruturado.
- Aplicar a um rascunho, conciliar conta e visualizar cada viagem protegida.
- Gravar aceitação autorizada; nunca sobrescrever a versão atual publicada durante a importação.
- Publicar através da governança e manter o relatório de migração, liberar ID e ponto de retorno juntos.
Expandir contratos, não modelos
Uma extensão segura registra um tipo de componente estável e esquema, declara permissões e necessidades de dados, renderiza através do compilador canônico, e fornece dispositivos/testes determinísticos. Não consulte tabelas arbitrárias, injete editor JavaScript no Portal público, crie outro repositório de artigos ou ignore a porta de lançamento.
Documento do Portal v2
As páginas contêm nós estáveis, slots, propriedades, ligações, sobreposições responsivas, condições e metadados de acessibilidade.
Registro de Componentes
Um contrato alimenta o estúdio, compilador, documentação, migração e verificação de maturidade.
Registro de origem dos dados
DTOs allowlisted, somente leitura, com o escopo de permissão substituem ações arbitrárias SQL ou dinâmicas.
Um renderizador
Visualização e compilação de ações de saída pública, higienização, orçamentos e estados em tempo de execução.
Definir um pacote de componentes
Use um ID com espaço de nomes minúsculo e versão semântica. Forneça ambos os nomes de propriedades de compatibilidade mostrados porque a inspeção de pacotes e validação de segurança realizam verificações independentes.
{
"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}
}
Forma do nó
{
"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"}
}
- IDs permanecem estáveis entre edições e migrações.
- Propriedades rejeitam campos não declarados e inseguros HTML.
- Cada view de dados define carga, vazio, permissão e saída de erro retrívevel.
- Os componentes do recipiente nomeiam os seus slots; as folhas não podem aceitar crianças arbitrárias.
- Marcar maturidade honestamente: blocos planejados, alertas beta, GA requer evidência completa.
Usar DTOs seguros para permissão
- Escolha um ID pontilhado existente, como
tickets.mine,knowledge.featuredoucustomer.profile. - Ligar apenas os campos declarados pelo seu DTO. As fontes desconhecidas falham com
data_source.unknown. - Passe o contexto já autorizado do Portal; nunca aceite a identidade de espaço de trabalho/cliente de uma propriedade não confiável.
- Os limites da lista são fixados a1–100. Normalizar os valores de paginação, localização e busca.
- Se uma nova fonte for inevitável, adicione sua definição estável, mapeamento seguro, permissões, comportamento vazio e visualização de conjunto.
{
"success": true,
"source": "tickets.mine",
"contract_version": 1,
"items": [
{"id": 42, "number": "REQ-42", "subject": "Example", "status": "open"}
]
}
Fiquem dentro dos limites da confiança.
| Limite | Comportamento necessário |
|---|---|
| Espaço de trabalho | Resolver a partir do host/route/session confiável, em seguida, examinar cada leitura e escrita antes da execução. |
| HTML | Usar a lista de permissões do Portal para o tratamento de dados. Nunca concatenar atributos não confiáveis, URLs, CSS ou guião. |
| Antevisão | Requer a janela de origem da mesma fonte, a versão do canal assinada e o nonce. Ignorar as mensagens não solicitadas. |
| Identidade | Keep secrets outside documents. SCIM is bearer-authenticated, sessionless and workspace-bound. |
| Pacotes | Rejeitar a travessia, caminhos absolutos, links/arquivos especiais, arquivos de tamanho excessivo, erro de assinatura/sum e permissões desconhecidas. |
| Erros | Devolver código estável, mensagem segura, retentabilidade, reparação e correlação ID; log private exceptions server-side. |
| Conhecimento | Leia através do HelpCenterBridge. Nunca autor ou duplicar artigos da Central de Ajuda em uma extensão. |
{
"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"}
}
}
Inspecionar, instalar e atualizar atomicamente
- Colocar
component.jsonna raiz ZIP e manter todos os caminhos relativos. - Executar a inspeção primeiro. O instalador caps arquivos em 500 entradas e 25 MB extraído; validação de segurança adiciona limites independentes.
- Verificar o SHA esperado 256 e assinatura do pacote no processo de lançamento.
- Instale para uma pasta versionada. Nunca mute uma versão instalada no local.
- Fornecer migrações de propriedades para quebrar mudanças de esquema e preservar campos de compatibilidade desconhecidos.
- Abra o componente em um rascunho, execute cada estado/viewport/persona e publique através da governança.
- O retrocesso ativa a liberação de componentes/documentos imutáveis anteriores; mantém sua evidência de reprodutibilidade.
Prove a extensão no mesmo hash de lançamento
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
Gates de origem são necessários, não suficientes. Anexar banco de dados/migração, visual navegador real, provedor de identidade, isolamento de autorização, acessibilidade, desempenho, fila/cron, e-mail/attachment, backup/restauração e evidência de implantação para o mesmo hash de liberação imutável. Evidência desconhecida necessária deve falhar a liberação.
- Unidade: esquema, higienização, DTO forma, condições, migrações e falhas digitadas.
- Contrato: carga/vazio/erro/sucesso, maturidade, faixas horárias, ligações e paridade de um renderer.
- Navegador: teclado, foco, semântica, RTL, zoom/refluxo, movimento reduzido e cada ponto de interrupção.
- Segurança: sondas de espaço de trabalho cruzado, ações forjadas, ataques de pacotes, spoofing prévia e vazamento secreto.
- Operações: progresso durável, licença/retorno, paragem/retentação/resumo, batimento cardíaco do programador e retrocesso.
Solução de problemas por estado e identificação de correlação
| Estado | O que fazer |
|---|---|
| Permissão | Solicitar a capacidade nomeada. UI escondida é conveniência; a infra-estrutura sempre força-lo. |
| Validação | Abra a página/node/campo reportado, corrija-a e depois reexecute o pré-voo. |
| Conflito | Recarregar a última revisão, comparar as alterações e reaplicar intencionalmente. Nunca force a sobrescrever. |
| Desligado/reexperimentável | Mantenha o rascunho, restaure a conectividade, tente novamente através da ação e verifique o estado de trabalho durável. |
| Fatal / indisponível | Copiar o ID de correlação e a hora- limite para suporte. Nunca cole segredos ou texto privado de exceção. |
| A publicação falhou | Inspecione a saída pré-voo/trabalho, tente apenas estágios retríveis ou volte para a última versão saudável. |
| SCIM 401/403 | Confirme o ponto final/espaço de trabalho, token ao portador, estado e rotação habilitados; nunca use um cookie de sessão do navegador. |
| O conhecimento está velho | Verifique locale/publication na Central de Ajuda, inspecione a invalidação do cache e a rota localizada limpa. |
Este guia está pronto para impressão. Use Imprimir → Salvar como PDF para uma cópia offline controlada.