import json
import base64
import hashlib


VERSION = "V1.0-20260828"
QUOTE_DOC_NAME = f"智慧食堂客户方案说明｜{VERSION}.pdf"
PRODUCT_DOC_NAME = f"智慧食堂客户方案说明｜{VERSION}"
PILOT_REF = f"PORTAL-PILOT-{VERSION}"
SENSITIVE_MARKERS = (
    "成本", "毛利", "供应商", "厂商", "采购价", "发票号", "发货单号", "源表行", "内部审批",
)


ICP = env["ir.config_parameter"].sudo()
quote_doc = env["quotation.document"].sudo().search([("name", "=", QUOTE_DOC_NAME)])
product_docs = env["product.document"].sudo().search([("name", "=", PRODUCT_DOC_NAME)])
order = env["sale.order"].sudo().search([("client_order_ref", "=", PILOT_REF)], limit=1)

assert ICP.get_param("web.base.url") == "https://odoo.cpt-fit.com"
assert ICP.get_param("web.base.url.freeze") == "True"
assert hashlib.sha256(base64.b64decode(env.company.sudo().logo)).hexdigest() == "58c87931a17ddf738b8ad020c7cba11ea0aa2a4bde6ed5a8501cd02ade89f912"
assert len(quote_doc) == 1
assert quote_doc.mimetype == "application/pdf"
assert quote_doc.datas
assert quote_doc.add_by_default
assert len(quote_doc.quotation_template_ids) == 2
assert product_docs
assert all(document.type == "url" and document.attached_on_sale == "quotation" for document in product_docs)
assert order
assert order.access_token
assert not order.require_signature
assert not order.require_payment
assert quote_doc in order.quotation_document_ids
assert order._get_product_documents()

customer_text = "\n".join([order.note or "", *order.order_line.mapped("name")])
matched = [marker for marker in SENSITIVE_MARKERS if marker in customer_text]
assert not matched, matched

print("VALIDATE_RESULT", json.dumps({
    "base_url": ICP.get_param("web.base.url"),
    "base_url_freeze": ICP.get_param("web.base.url.freeze"),
    "company_logo": "康比特 Logo",
    "quotation_documents": len(quote_doc),
    "product_documents": len(product_docs),
    "pilot_order_id": order.id,
    "pilot_order_name": order.name,
    "pilot_access_url": order.access_url,
    "pilot_product_lines": len(order.order_line.filtered(lambda line: not line.display_type)),
    "portal_documents": len(order._get_product_documents()),
    "sensitive_markers": matched,
}, ensure_ascii=False, sort_keys=True))
