documents/generate: suporte a edicao in-place + linkage documento_id
document_generated.documento_id (FK pra documents) estava sempre NULL no INSERT — sem isso nao da pra rastrear qual generated belongs to qual documents row, impossibilitando re-edicao. DocumentGenerate.service saveGeneratedDocument: - Modo create (default): INSERT em documents PRIMEIRO pra capturar doc.id, depois INSERT em document_generated com documento_id setado. - Modo edit (editingDocId param novo): UPDATE in-place — substitui PDF no Storage (novo path), atualiza bucket_path/tamanho/nome em documents (preserva id+audit), atualiza dados_preenchidos+pdf_path em document_generated. Se nao houver registro generated (doc legado), INSERT vinculando ao documents.id. Cleanup best-effort do PDF antigo. - Nova fn loadGeneratedFromDocId(documentoId): busca template_id + dados_preenchidos pra pre-popular o dialog de edicao. useDocumentGenerate.generateAndSave: ganha 2o param editingDocId que passa pro service. Backfill SQL pra docs antigos: match dg.pdf_path = d.bucket_path + tenant/patient guard. 3 docs linkados no DB local, 5 ficaram orfaos (paths que nao existem mais em documents — cleanup antigo). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -99,9 +99,12 @@ export function useDocumentGenerate() {
|
||||
// ── Gerar PDF (client-side) ────────────────────────────
|
||||
|
||||
/**
|
||||
* Gera PDF blob, faz download, salva no Storage + banco.
|
||||
* Gera PDF blob, salva no Storage + banco.
|
||||
* @param {string} patientId
|
||||
* @param {string|null} editingDocId - se setado, UPDATE no doc existente
|
||||
* (in-place replace de PDF + metadados, preserva documents.id e audit).
|
||||
*/
|
||||
async function generateAndSave(patientId) {
|
||||
async function generateAndSave(patientId, editingDocId = null) {
|
||||
if (!selectedTemplate.value) throw new Error('Nenhum template selecionado.');
|
||||
|
||||
loading.value = true;
|
||||
@@ -119,7 +122,8 @@ export function useDocumentGenerate() {
|
||||
dadosPreenchidos: { ...variables.value },
|
||||
pdfBlob: blob,
|
||||
templateNome,
|
||||
templateTipo: selectedTemplate.value.tipo
|
||||
templateTipo: selectedTemplate.value.tipo,
|
||||
editingDocId
|
||||
});
|
||||
generatedDocs.value.unshift(result);
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user