DoConure

Se arrivi da Carbone o Docmosis

I tuoi modelli Word mantengono la loro impaginazione; cambiano solo i tag. Una chiamata riscrive i tag che capisce, nomina uno per uno quelli che non capisce, e non conserva nulla. I tuoi dati restano lo stesso JSON di oggi.

Una chiamata per modello

POST /api/v1/compose/templates/convert
Authorization: Bearer lpdc_...

{
  "from": "carbone",
  "templateType": "docx",
  "fileName": "invoice.docx",
  "fileBase64": "UEsDBBQABgAIAAAAIQ..."
}

Il campo output.compose.conversion della risposta contiene il nuovo file (fileBase64, fileName), ogni tag convertito (converted, da cosa a cosa, con una note dove qualcosa è stato eliminato), ogni tag lasciato com'era e il perché (unconverted), e le diagnostics che Valida darebbe sul nuovo file. Nulla viene conservato, generato o addebitato. Quando il report ti convince, carica il file come qualsiasi altro (Gestire i modelli da uno script) e fai una chiamata di test con i dati che il tuo sistema invia oggi.

from vale carbone o docmosis; templateType vale docx o html. La chiave deve avere il permesso documents:templates (la chiave iniziale non ce l'ha: Crea una chiave completa nella pagina Chiavi API). I modelli Word vengono letti per intero anche dove Word ha diviso un tag tra due porzioni di formattazione.

Cosa diventa cosa: Carbone

CarboneDoConureNota
{d.customer.name}{{ customer.name }}Il d. sparisce: i dati sono la radice.
Una riga di tabella con {d.items[i].qty}, e la riga successiva con {d.items[i+1]...}La riga tra {%tr for row in items %} e {%tr endfor %}; ogni valore è {{ row.qty }}In Carbone la riga [i+1] segnava solo la fine dell'elenco, e viene rimossa.
:upperCase, :lowerCase, :ucFirst, :ucWords| upper, | lower, | capitalize, | title
:formatD(...), :formatN(...), :formatC(...) e i formattatori aritmeticiIl valore sempliceTolti ed elencati: manda il valore già formattato, come vuoi che sia stampato.
:ifEQ(...), :show(...) e le altre condizioni; {c.}, {#alias}, {t()}Lasciati come sonoElencati sotto unconverted: riscrivili come parti condizionali, o metti il valore nei dati.

Cosa diventa cosa: Docmosis

DocmosisDoConureNota
<<customer.name>>{{ customer.name }}Un :format dopo il nome viene tolto ed elencato.
<<rr_items>> ... <<er_items>> in una riga di tabellaLa riga tra {%tr for row in items %} e {%tr endfor %}Un campo dentro la riga legge da ciascun elemento (row.); se è un campo fuori dall'elenco, togli row..
<<rs_items>> e <<es_items>>, ciascuno da solo sulla sua riga{%p for row in items %} ... {%p endfor %}
<<cs_notes>> ... <<es_notes>>{% if notes %} ... {% endif %}Su una riga o su righe a sé.
Espressioni (<<{...}>>), $variabiliLasciate come sonoElencate sotto unconverted: calcola il valore nei dati.

Se carichi un modello così com'è

Il caricamento riesce e il documento esce, con i tag dell'altro prodotto stampati come testo. Il caricamento e Validate avvisano entrambi quando un modello contiene tag di Carbone o Docmosis, con il numero trovato.

Con un agente AI

Un agente può fare tutto il passaggio: dagli la cartella dei modelli e questa istruzione, e leggi i rapporti che riporta prima di caricare qualunque cosa.

Read https://app.doconure.com/llms-full.txt, then the guide page
https://app.doconure.com/docs/migrate-templates.
For each .docx in ./templates: call POST /api/v1/compose/templates/convert
(from = carbone or docmosis), write the result next to it as *-doconure.docx,
and write a report listing every "unconverted" tag and every "note".
Do not upload anything. Read the key from DOCONURE_API_KEY.

La sintassi: Scrivere un modello, Elenchi e righe ripetute, Parti condizionali. Spostare un'integrazione con un agente: Come faccio scrivere l'integrazione a un agente AI?