#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""QA de acentuação e contagem de palavras nos artigos."""

from docx import Document
import os
import re

ARTIGOS = [
    "01_feng_shui_entrada_casa.docx",
    "02_feng_shui_quarto.docx",
    "03_plantas_feng_shui.docx",
    "04_5_animais_celestiais.docx",
    "05_bagua_mapa_casa.docx",
]

BASE = "/opt/mia/workspace/clientes/borrello/blog/artigos_v1_2026-09-18"

# Palavras sem acento que NÃO devem aparecer (sem acento = erro)
ACCENT_CHECKS = [
    ("voce",    "você"),
    ("nao",     "não"),
    ("tambem",  "também"),
    ("atras",   "atrás"),
    ("coracao", "coração"),
    ("entao",   "então"),
    ("posicao", "posição"),
    ("funcao",  "função"),
    ("orientacao", "orientação"),
    ("situacao", "situação"),
    ("atencao", "atenção"),
]

# Auto-elogios proibidos
SELF_PRAISE = [
    "40 anos",
    "40 mil alunos",
    "43 mil alunos",
    "método que uso",
    "método que ensino",
]

def extract_text(path):
    doc = Document(path)
    return "\n".join(p.text for p in doc.paragraphs)

def count_words(text):
    words = re.findall(r'\b\w+\b', text)
    return len(words)

print("=" * 60)
print("QA REPORT — Artigos Borrello v1 2026-09-18")
print("=" * 60)

all_ok = True
for fname in ARTIGOS:
    path = os.path.join(BASE, fname)
    text = extract_text(path)
    text_lower = text.lower()
    wc = count_words(text)

    print(f"\n--- {fname} ---")
    print(f"Palavras: {wc}")

    if wc < 1000:
        print(f"  [ALERTA] Abaixo de 1000 palavras!")
        all_ok = False
    elif wc > 2000:
        print(f"  [ALERTA] Acima de 2000 palavras!")
        all_ok = False
    else:
        print(f"  [OK] Contagem dentro do range (1200-1800 alvo)")

    # Acentuação — verifica palavra isolada (word boundary)
    accent_errors = []
    for wrong, correct in ACCENT_CHECKS:
        # Busca palavra sem acento como palavra isolada
        pattern = r'\b' + wrong + r'\b'
        matches = re.findall(pattern, text_lower)
        if matches:
            accent_errors.append(f"'{wrong}' (deveria ser '{correct}') — {len(matches)} ocorrência(s)")

    if accent_errors:
        print("  [ERRO ACENTO]")
        for e in accent_errors:
            print(f"    - {e}")
        all_ok = False
    else:
        print("  [OK] Acentuação sem erros detectados")

    # Auto-elogio
    praise_found = [p for p in SELF_PRAISE if p.lower() in text_lower]
    if praise_found:
        print(f"  [ALERTA AUTO-ELOGIO]: {praise_found}")
        all_ok = False
    else:
        print("  [OK] Sem auto-elogio detectado")

    # Travessão
    if "—" in text or " — " in text:
        # Conta ocorrências
        count_travessao = text.count("—") + text.count(" — ")
        print(f"  [ALERTA TRAVESSAO]: {count_travessao} travessão(s) encontrado(s)")
        all_ok = False
    else:
        print("  [OK] Sem travessão")

print("\n" + "=" * 60)
if all_ok:
    print("RESULTADO: APROVADO — Todos os checks passaram.")
else:
    print("RESULTADO: REVISAR — Há itens a corrigir (ver acima).")
print("=" * 60)
