Conn2Flow
Navegação das docs

SDD

Requisição 178 — Parser `c2f docs:build`: Markdown → Recursos do Sistema com Tailwind (FEAT-014, fase 1)

Origem: FEAT-014, decisões D1, D8 e D9 (2026-09-25); Parsedown aprovado pelo Humano. Lote Vinculado: BATCH-183. Status: approved. Autonomia: Nível 1 (supervisionado). Depende de…

Origem: FEAT-014, decisões D1, D8 e D9 (2026-09-25); Parsedown aprovado pelo Humano. Lote Vinculado: BATCH-183. Status: approved. Autonomia: Nível 1 (supervisionado). Depende de: contrato da req-177.


1. Contexto

O Markdown do Core (req-177) é a fonte única. O site público (conn2flow-site, req-006 daquele repositório) precisa dele como recursos do sistema. O formato de destino é o mesmo que o pipeline já sincroniza no Transforma MP:

  • publisher;

  • publisher_pages (fields_values, html_template);

  • pages com publisher_id;

  • menus.

2. Escopo técnico

  1. Parsedown 1.7.x (MIT, arquivo único, PHP puro):

    • copiado em cli/lib/parsedown/Parsedown.php, com LICENSE.txt;

    • carregado por require_once;

    • sem Composer, sem ir para gestor/ e sem ser distribuído às instalações (roda só no build).

  2. c2f docs:build --project=<id> [--source=<dir>] [--dry-run]:

    • O projeto é resolvido por ProjectEnvironmentResolver. A configuração vem de <gestor do projeto>/docs.config.json:

      • fonte (padrão: ai-workspace do Core);

      • idiomas;

      • mapeamento secao → publisher;

      • layout;

      • id do menu;

      • URL base do repositório para links de fonte.

    • Conversão com classes Tailwind explícitas (mapa em DocsTailwindTheme), sem @tailwindcss/typography:

      • títulos com âncoras;

      • parágrafos, listas, tabelas e citações;

      • código com botão de copiar;

      • callouts > [!NOTE|TIP|IMPORTANT|WARNING|CAUTION].

    • Reescrita de links .md relativos para @[[pagina#url-raiz]]@docs/.../. Link para doc inexistente é erro de build.

    • Sumário "nesta página" (h2/h3) e navegação anterior/próximo pela ordem do menu.

    • Selo "Verificado contra o código": verificado_em com link para as fontes no GitHub.

    • Gera, por idioma:

      • publisher_pages/<id>/<id>.html;

      • pages/<id>/<id>.html;

      • as entradas de publisher-pages.json e pages.json, mescladas por id: nunca remove recursos que não são de docs;

      • menus/<menu>/… + menus.json, com a árvore por seção e ordem.

    • Gera llms.txt e llms-full.txt (índice e conteúdo integral em Markdown) como páginas type: "page" servidas em docs/llms.txt, se o roteador permitir; senão, registra a limitação.

    • Ids de recurso com prefixo docs- e caminho derivado. A operação é idempotente: rodar duas vezes não gera diff.

    • Docs visibilidade: restrito são ignoradas, com aviso.

  3. Testes PHPUnit:

    • conversão;

    • callouts;

    • reescrita de links e link quebrado;

    • sumário;

    • idempotência da mescla de JSON;

    • sandbox de projeto em diretório temporário.

3. Critérios de Aceite

  1. php cli/c2f.php docs:build --project=[REDACTED] --dry-run lista os recursos a gerar sem escrever.

  2. Sem --dry-run, gera os arquivos no conn2flow-site, e uma segunda execução não altera nada.

  3. Link quebrado no Markdown faz o comando sair com código ≠ 0 e mensagem apontando arquivo e linha.

  4. PHPUnit verde e git diff --check limpo.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada