from odoo import models, fields, api import logging _logger = logging.getLogger(__name__) class AbAiLog(models.Model): _name = 'ab.ai.log' _description = 'AI Activity Log' _order = 'create_date desc' _rec_name = 'summary' summary = fields.Char(string='Summary', required=True, readonly=True) level = fields.Selection( [('info', 'Info'), ('warning', 'Warning'), ('error', 'Error'), ('debug', 'Debug')], string='Level', default='info', required=True, index=True, ) agent_name = fields.Char(string='Agent', readonly=True, index=True) directive_id = fields.Char(string='Directive ID', readonly=True, index=True) user_id = fields.Many2one('res.users', string='User', readonly=True) details = fields.Text(string='Details', readonly=True) model_name = fields.Char(string='Model', readonly=True) record_id = fields.Integer(string='Record ID', readonly=True) @api.model def log(self, summary, level='info', agent=None, directive_id=None, user_id=None, details=None, model=None, record_id=None): return self.create({ 'summary': summary[:255] if summary else '', 'level': level, 'agent_name': agent or '', 'directive_id': directive_id or '', 'user_id': user_id, 'details': details or '', 'model_name': model or '', 'record_id': record_id or 0, }) @api.model def cron_cleanup(self): cutoff = fields.Datetime.subtract(fields.Datetime.now(), days=30) old = self.search([('create_date', '<', cutoff), ('level', 'in', ['info', 'debug'])]) old.unlink()