# -*- coding: utf-8 -*- # Copyright 2026 Nexa Systems Inc. # License OPL-1 from odoo import fields, models class FusionBillingMetric(models.Model): """A billable metric (CPU-seconds, API calls, messages, tokens ...). Defines how raw usage is aggregated within a billing period. See spec §5.1 / §6. """ _name = "fusion.billing.metric" _description = "Fusion Billing — Billable Metric" _order = "code" name = fields.Char(required=True) code = fields.Char(required=True, index=True) aggregation = fields.Selection( [ ("sum", "Sum"), ("max", "Max"), ("last", "Last value"), ("unique_count", "Unique count"), ], default="sum", required=True, ) unit_label = fields.Char(help="e.g. CPU-seconds, API calls, messages, tokens.") rounding = fields.Float(default=1.0) active = fields.Boolean(default=True) _code_uniq = models.Constraint("unique(code)", "Metric code must be unique.")