Files
Exporta-SD/scripts/caminhos.py
T
wanderandClaude Sonnet 5 0d4fdd2533 Commit inicial: app de exportação da SD + deploy Docker/Coolify
Aplicação Flask (enviar SD.md -> corrigir pendências -> exportar JSON),
scripts de contrato (scripts/) e infraestrutura de deploy (Dockerfile,
docker-compose.yml) para VPS via Coolify.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 14:07:38 -03:00

54 lines
2.1 KiB
Python

"""Caminhos canônicos do repositório — o único lugar que sabe onde a árvore está.
Mudança de estrutura é mudança aqui, e em mais lugar nenhum. A lição veio da
reorganização V0: eram 103 referências de caminho espalhadas por scripts,
Makefile e harness, e mover uma pasta quebrava tudo entre a mudança e a
reescrita.
"""
from pathlib import Path
RAIZ = Path(__file__).resolve().parent.parent
CLIENTE = RAIZ / "clientes" / "ses-mg"
CONTRATO = CLIENTE / "contrato"
GOVERNANCA = CLIENTE / "governanca"
PROJETOS = CLIENTE / "projetos"
ENTRADA = CLIENTE / "_entrada"
RELATORIOS = CLIENTE / "relatorios"
COMUNICACOES = CLIENTE / "comunicacoes"
METODOS = RAIZ / "metodos"
# _derivados/ é resultado, nunca fonte: gitignored, regenerável por make derivar.
DERIVADOS = RAIZ / "_derivados"
ITENS = CONTRATO / "itens.yaml"
# Visões GERADAS a partir das SDs (inversão da V0, 13/08/2026). Quem lê
# portfólio, carteira ou catálogo lê o resultado de `make derivar` — os
# mantidos à mão estão congelados em governanca/levantamentos/.
PORTFOLIO = DERIVADOS / "portfolio.yaml"
CARTEIRA = DERIVADOS / "carteira.yaml"
CATALOGO = DERIVADOS / "catalogo.md"
NUMERACAO = GOVERNANCA / "numeracao.yaml"
TRANSVERSAL = GOVERNANCA / "transversal.yaml"
TEMPLATE_SD = PROJETOS / "_template" / "SD.md"
# Modelo Word do material de leitura prévia (`make leitura-previa`): layout da
# nota técnica com logo no cabeçalho. Vive em metodos/modelos/ — cópia neutra;
# a original é evidência da P5·SD24 e evidência não é dependência de script.
MODELO_NOTA_TECNICA = METODOS / "modelos" / "nota-tecnica.docx"
# Projeção financeira: gerada em _derivados/, congelada datada em comunicacoes/.
PROJECAO_HTML = DERIVADOS / "projecao-executiva.html"
APRESENTACOES = COMUNICACOES / "apresentacoes"
def sds_reais():
"""Todos os SD.md sob projetos/*/sds/.
O template vive em projetos/_template/, fora de qualquer */sds/* — é o que
o mantém fora desta varredura por construção, em todos os consumidores de
uma vez. Era ele contaminando a varredura de faturamento na árvore antiga.
"""
return sorted(PROJETOS.glob("*/sds/*/SD.md"))