Spaces:
Sleeping
Sleeping
Restaura o diagnóstico de mercado padrão na seção 3.1
Browse filesInsere 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 +7 -1
- tests/test_evolutivo_documento.py +12 -0
- tests/test_modelo_anexos.py +16 -0
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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()),
|