Files
ArcaSuite/services/mcp-docugen
Adriano 54bf41efd6 fix(mcp-docugen): preprocessor HTML→Markdown per output Word leggibile
Il DOCX prodotto dalla versione precedente emetteva i div Tielogic
(`<div class="cover">`, `<div class="info-col">`, `<div class="acceptance">`,
`<div class="status-card">`) come testo grezzo: Pandoc non sa
interpretare il CSS-flavoured HTML del PDF e li copia letteralmente
nel documento Word. Anche le tabelle `<table class="financial">`
finivano spezzate cella per cella.

Il fix introduce un preprocessor dedicato che riscrive tutta la
HTML Tielogic-flavoured in Markdown nativo prima di passare il
documento a Pandoc.

- docx_preprocessor.py: nuovo modulo basato su BeautifulSoup. Strippa
  frontmatter e <style>, poi rewrite di:
    * <div class="cover"> → titoli H1/H2, paragrafi, tabella pipe
      2-col FORNITORE/CLIENTE, validità in italic, \newpage finale
    * <table class="financial"> → tabella pipe Markdown con riga
      total-row in **bold**
    * <div class="acceptance"> → heading H2 + intro + tabella pipe
      con riga firma `_____________________` + luogo/data
    * <div class="status-card"> → paragrafo "**name** — descrizione"
    * <span class="badge ..."> → testo **bold**
    * <div class="page-break"> → \newpage Pandoc-friendly
- docx_renderer.py: deferisce tutto il preprocessing al nuovo modulo
  (più compatto, niente regex sparse).
- pyproject.toml + uv.lock: aggiunta dipendenza beautifulsoup4>=4.12.
- 8 nuovi test unit per il preprocessor (cover, tabelle, badge,
  acceptance, idempotenza, niente div residui, badge standalone).
  Adattati i test esistenti agli import dal nuovo modulo. 101 verde.

Smoke E2E via MCP: l'offerta TieMeasureFlow esce in DOCX leggibile
con tabelle Word native, heading colorati Tielogic e firme in tabella.
2026-04-26 11:26:52 +02:00
..

mcp-docugen

MCP server per generazione documenti Markdown da template + LLM (OpenRouter).

Design: ../../docs/mcp-docugen-design.md Plan: ../../docs/mcp-docugen-implementation.md

Dev

Dalla root del repo:

uv sync --all-groups
uv run --package mcp-docugen mcp-docugen

Test

uv run --package mcp-docugen pytest services/mcp-docugen

Docker

# build (dalla root)
docker build -f docker/base.Dockerfile -t arca-base:latest .
docker build -f docker/mcp-docugen.Dockerfile -t arca-mcp-docugen:dev .

# o via compose
docker compose build mcp-docugen
docker compose up mcp-docugen

Env

Vedi .env.example. Variabili obbligatorie: API_KEY, OPENROUTER_API_KEY, PUBLIC_BASE_URL.