gui-sparim commited on
Commit
e66459a
·
verified ·
1 Parent(s): 55d9355

Restaura o diagnóstico de mercado padrão na seção 3.1

Browse files

Insere os sete parágrafos do template DIAGNOSTICO_MERCADO.docx antes da metodologia, também em laudos evolutivos. Adiciona verificações de conteúdo e ordem no DOCX. Os 101 testes passaram.

document/generator.py CHANGED
@@ -254,7 +254,13 @@ class LaudoGenerator:
254
  # 3. ANÁLISE DE MERCADO
255
  add_section_title(doc, num.secao(), "ANÁLISE VALOR DE MERCADO")
256
  add_subsection_title(doc, num.subsecao(), "DIAGNÓSTICO DE MERCADO")
257
- add_placeholder_text(doc, "[Inserir diagnóstico de mercado]")
 
 
 
 
 
 
258
 
259
  add_subsection_title(doc, num.subsecao(), "METODOLOGIA DE AVALIAÇÃO")
260
  imported = dados.get('avaliacoes_importadas')
 
254
  # 3. ANÁLISE DE MERCADO
255
  add_section_title(doc, num.secao(), "ANÁLISE VALOR DE MERCADO")
256
  add_subsection_title(doc, num.subsecao(), "DIAGNÓSTICO DE MERCADO")
257
+ texto_diagnostico = ler_texto_docx(TEXTOS_DIR / "DIAGNOSTICO_MERCADO.docx")
258
+ if texto_diagnostico:
259
+ for paragrafo in texto_diagnostico.split("\n\n"):
260
+ if paragrafo.strip():
261
+ add_body_text(doc, paragrafo.strip())
262
+ else:
263
+ add_placeholder_text(doc, "[Inserir diagnóstico de mercado]")
264
 
265
  add_subsection_title(doc, num.subsecao(), "METODOLOGIA DE AVALIAÇÃO")
266
  imported = dados.get('avaliacoes_importadas')
tests/test_evolutivo_documento.py CHANGED
@@ -18,6 +18,7 @@ from document.fundamentacao import global_foundation, model_foundation, construc
18
  from document.generator import LaudoGenerator
19
  from document.mesa_content import current_content
20
  from document.numbering import NumeradorSecoes
 
21
  from models.imported_context import matching_local, snapshot_model
22
  from models.model_data import ModelData
23
 
@@ -77,6 +78,17 @@ def all_text(doc):
77
 
78
 
79
  class EvolutivoDocumentTests(unittest.TestCase):
 
 
 
 
 
 
 
 
 
 
 
80
  def test_paragrafo_estatistico_usa_coeficientes_reais_e_referencia_anexos_por_nome(self):
81
  model = ModelData(nome='MODELO', path=Path('modelo.dai'), modelos_resumos={'r2': .9387**2})
82
  doc = Document(); model_analysis(doc, model, 'unitario')
 
18
  from document.generator import LaudoGenerator
19
  from document.mesa_content import current_content
20
  from document.numbering import NumeradorSecoes
21
+ from config.settings import TEXTOS_DIR
22
  from models.imported_context import matching_local, snapshot_model
23
  from models.model_data import ModelData
24
 
 
78
 
79
 
80
  class EvolutivoDocumentTests(unittest.TestCase):
81
+ def test_laudo_evolutivo_preserva_diagnostico_antes_da_metodologia(self):
82
+ imported = resolved(fixture((2021,)))
83
+ doc = Document()
84
+ with patch('document.evolutivo.matching_local', return_value=(None, '')):
85
+ LaudoGenerator()._gerar_corpo(doc, {'avaliacoes_importadas': imported}, {})
86
+ paragraphs = [p.text for p in doc.paragraphs]
87
+ start = next(i for i, text in enumerate(paragraphs) if 'DIAGNÓSTICO DE MERCADO' in text)
88
+ end = next(i for i, text in enumerate(paragraphs) if 'METODOLOGIA DE AVALIAÇÃO' in text)
89
+ expected = [p.text.strip() for p in Document(TEXTOS_DIR / 'DIAGNOSTICO_MERCADO.docx').paragraphs if p.text.strip()]
90
+ self.assertEqual(paragraphs[start + 1:end], expected)
91
+
92
  def test_paragrafo_estatistico_usa_coeficientes_reais_e_referencia_anexos_por_nome(self):
93
  model = ModelData(nome='MODELO', path=Path('modelo.dai'), modelos_resumos={'r2': .9387**2})
94
  doc = Document(); model_analysis(doc, model, 'unitario')
tests/test_modelo_anexos.py CHANGED
@@ -1,5 +1,6 @@
1
  from pathlib import Path
2
  import unittest
 
3
 
4
  import pandas as pd
5
  from docx import Document
@@ -12,6 +13,7 @@ from document.anexos.metodologia import (
12
  gerar_anexo_metodologia,
13
  )
14
  from document.generator import LaudoGenerator
 
15
  from models.model_data import ModelData
16
 
17
 
@@ -37,6 +39,20 @@ def _modelo_teste() -> ModelData:
37
 
38
 
39
  class ModeloAnexosTests(unittest.TestCase):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  def test_periodo_da_amostra_vem_do_metadado_do_modelo(self):
41
  self.assertEqual(
42
  _obter_periodo_amostra(_modelo_teste()),
 
1
  from pathlib import Path
2
  import unittest
3
+ from io import BytesIO
4
 
5
  import pandas as pd
6
  from docx import Document
 
13
  gerar_anexo_metodologia,
14
  )
15
  from document.generator import LaudoGenerator
16
+ from config.settings import TEXTOS_DIR
17
  from models.model_data import ModelData
18
 
19
 
 
39
 
40
 
41
  class ModeloAnexosTests(unittest.TestCase):
42
+ def test_diagnostico_de_mercado_preserva_texto_padrao_na_secao_3_1(self):
43
+ doc = Document()
44
+ LaudoGenerator()._gerar_corpo(doc, {}, {})
45
+ saved = BytesIO()
46
+ doc.save(saved)
47
+ saved.seek(0)
48
+ paragraphs = [p.text for p in Document(saved).paragraphs]
49
+ start = next(i for i, text in enumerate(paragraphs) if 'DIAGNÓSTICO DE MERCADO' in text)
50
+ end = next(i for i, text in enumerate(paragraphs) if 'METODOLOGIA DE AVALIAÇÃO' in text)
51
+ expected = [p.text.strip() for p in Document(TEXTOS_DIR / 'DIAGNOSTICO_MERCADO.docx').paragraphs if p.text.strip()]
52
+ self.assertEqual(len(expected), 7)
53
+ self.assertEqual(paragraphs[start + 1:end], expected)
54
+ self.assertNotIn('[Inserir diagnóstico de mercado]', paragraphs)
55
+
56
  def test_periodo_da_amostra_vem_do_metadado_do_modelo(self):
57
  self.assertEqual(
58
  _obter_periodo_amostra(_modelo_teste()),