"""Persisted asset anomaly flags from the engine's variance detection.""" from odoo import fields, models SEVERITY = [('low', 'Low'), ('medium', 'Medium'), ('high', 'High')] ANOMALY_TYPES = [ ('behind_schedule', 'Behind Schedule'), ('ahead_of_schedule', 'Ahead of Schedule'), ('low_utilization', 'Low Utilization'), ] class FusionAssetAnomaly(models.Model): _name = "fusion.asset.anomaly" _description = "Flagged Asset Anomaly" _order = "detected_at desc, severity desc" asset_id = fields.Many2one('fusion.asset', required=True, ondelete='cascade') company_id = fields.Many2one(related='asset_id.company_id', store=True) anomaly_type = fields.Selection(ANOMALY_TYPES, required=True) severity = fields.Selection(SEVERITY, required=True) expected = fields.Float() actual = fields.Float() variance_pct = fields.Float() detail = fields.Text() detected_at = fields.Datetime(default=fields.Datetime.now, required=True) state = fields.Selection([ ('new', 'New'), ('acknowledged', 'Acknowledged'), ('resolved', 'Resolved'), ('dismissed', 'Dismissed'), ], default='new', required=True) def action_acknowledge(self): self.write({'state': 'acknowledged'}) def action_dismiss(self): self.write({'state': 'dismissed'}) def action_resolve(self): self.write({'state': 'resolved'})