from odoo import models, fields


class MrpWorkorder(models.Model):
    _name = "mrp.workorder"
    _inherit = ["mrp.workorder", "directive.mixin"]

    def _directive_generation_spec(self):
        return [
            {
                "event": "on_write",
                "key": "mrp_iot_trigger",
                "field": "state",
                "from": "pending",
                "to": "ready",
                "use_record_template_group": True,
                "mode": "create_once",
                "domain": [("name", "ilike", "резка")],
            }
        ]

    def action_iot_signal(self, payload: dict):
        """
        Метод-обработчик завершения директивы оборудованием.
        Записывает телеметрию в саму операцию и в головной заказ (MO).
        """
        for wo in self:
            telemetry = payload.get('telemetry', {})
            temp = telemetry.get('temperature', 59)
            vibro = telemetry.get('vibration', 'Норма')

            message = (
                f"IoT CNC [{wo.name}]: Операция завершена.<br/>"
                f"Температура шпинделя: {temp}°C<br/>"
                f"Вибрация: {vibro}."
            )

            if wo.production_id:
                wo.production_id.message_post(
                    body=f"Отчет по операции {wo.name}: {message}"
                )
        return True


class MrpProduction(models.Model):
    _inherit = 'mrp.production'

    def action_choose_directive_group(self):

        self.ensure_one()

        workorder = self.workorder_ids[:1]

        if not workorder:
            return {
                'type': 'ir.actions.client',
                'tag': 'display_notification',
                'params': {
                    'title': 'Внимание',
                    'message': 'Сначала подтвердите заказ, чтобы появились операции (Work Orders)',
                    'type': 'warning',
                    'sticky': False,
                }
            }

        return {
            "type": "ir.actions.act_window",
            "name": f"Назначить директивы для: {workorder.name}",
            "res_model": "directive.choose.group.wizard",
            "view_mode": "form",
            "target": "new",
            "context": {
                # КОСТЫЛЬ
                "active_model": "mrp.workorder",
                "active_id": workorder.id,
            },
        }