# -*- coding: utf-8 -*- # Copyright 2024-2026 Nexa Systems Inc. # License OPL-1 (Odoo Proprietary License v1.0) """Deterministic self-check rules. Seeded per equipment category + symptom keyword combination. Used by fusion.repair.ai.service when: - AI is unavailable (fusion_api not installed / OpenAI down) - AI returns malformed / unsafe content - The category has no AI configured Also rendered directly on the client portal when AI is disabled per spec. """ from odoo import fields, models class FusionRepairSelfCheckRule(models.Model): _name = 'fusion.repair.self.check.rule' _description = 'Repair Self-Check Rule (deterministic fallback)' _order = 'category_id, sequence, id' name = fields.Char(string='Title', required=True, translate=True) sequence = fields.Integer(default=10) active = fields.Boolean(default=True) company_id = fields.Many2one( 'res.company', string='Company', default=lambda self: self.env.company, ) category_id = fields.Many2one( 'fusion.repair.product.category', string='Equipment Category', required=True, index=True, ondelete='cascade', ) symptom_keywords = fields.Char( string='Symptom Keywords', help='Comma-separated, lowercase. Empty matches any symptom.', ) instruction = fields.Text( string='Instruction', required=True, translate=True, help='What to ask the client to do. Plain English, <= 1 sentence.', ) expected_result = fields.Text( string='Expected Result', required=True, translate=True, help='What success looks like ("alarm stops", "wheel spins freely").', ) safety_note = fields.Text( string='Safety Note', translate=True, help='Optional warning shown in red below the instruction.', )