85 lines
3.2 KiB
Python
85 lines
3.2 KiB
Python
import logging
|
|
from odoo import models, fields, api
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class ResConfigSettings(models.TransientModel):
|
|
_inherit = 'res.config.settings'
|
|
|
|
fusion_ai_provider = fields.Selection(
|
|
selection=[('claude', 'Anthropic Claude'), ('openai', 'OpenAI GPT')],
|
|
string='AI Provider',
|
|
default='claude',
|
|
config_parameter='fusion_accounting.ai_provider',
|
|
)
|
|
fusion_anthropic_api_key = fields.Char(
|
|
string='Anthropic API Key (Fusion AI)',
|
|
config_parameter='fusion_accounting.anthropic_api_key',
|
|
)
|
|
fusion_openai_api_key = fields.Char(
|
|
string='OpenAI API Key (Fusion AI)',
|
|
config_parameter='fusion_accounting.openai_api_key',
|
|
)
|
|
fusion_claude_model = fields.Selection(
|
|
selection=[
|
|
('claude-opus-4-6', 'Claude Opus 4.6 (Most Intelligent)'),
|
|
('claude-sonnet-4-6', 'Claude Sonnet 4.6 (Best Balance)'),
|
|
('claude-haiku-4-5', 'Claude Haiku 4.5 (Fastest)'),
|
|
('claude-sonnet-4-5', 'Claude Sonnet 4.5'),
|
|
('claude-opus-4-5', 'Claude Opus 4.5'),
|
|
('claude-sonnet-4-0', 'Claude Sonnet 4'),
|
|
('claude-opus-4-0', 'Claude Opus 4'),
|
|
],
|
|
string='Claude Model',
|
|
default='claude-sonnet-4-6',
|
|
config_parameter='fusion_accounting.claude_model',
|
|
)
|
|
fusion_openai_model = fields.Selection(
|
|
selection=[
|
|
('gpt-5.4', 'GPT-5.4 (Flagship)'),
|
|
('gpt-5.4-mini', 'GPT-5.4 Mini (Fast)'),
|
|
('gpt-5.4-nano', 'GPT-5.4 Nano (Cheapest)'),
|
|
('o3', 'o3 (Best Reasoning)'),
|
|
('o4-mini', 'o4-mini (Fast Reasoning)'),
|
|
('gpt-4o', 'GPT-4o (Legacy)'),
|
|
('gpt-4o-mini', 'GPT-4o Mini (Legacy)'),
|
|
],
|
|
string='OpenAI Model',
|
|
default='gpt-5.4-mini',
|
|
config_parameter='fusion_accounting.openai_model',
|
|
)
|
|
fusion_tier3_threshold = fields.Float(
|
|
string='Tier 3 Promotion Threshold',
|
|
default=0.95,
|
|
config_parameter='fusion_accounting.tier3_threshold',
|
|
help='Accuracy threshold for promoting Tier 3 tools to auto-approved.',
|
|
)
|
|
fusion_tier3_min_sample = fields.Integer(
|
|
string='Tier 3 Minimum Sample Size',
|
|
default=30,
|
|
config_parameter='fusion_accounting.tier3_min_sample',
|
|
)
|
|
fusion_audit_cron_frequency = fields.Selection(
|
|
selection=[('daily', 'Daily'), ('weekly', 'Weekly'), ('monthly', 'Monthly')],
|
|
string='Audit Scan Frequency',
|
|
default='daily',
|
|
config_parameter='fusion_accounting.audit_cron_frequency',
|
|
)
|
|
fusion_history_in_prompt = fields.Integer(
|
|
string='Match History in Prompt',
|
|
default=50,
|
|
config_parameter='fusion_accounting.history_in_prompt',
|
|
help='Number of recent match history records to include in AI prompt.',
|
|
)
|
|
fusion_max_tool_calls = fields.Integer(
|
|
string='Max Tool Calls Per Turn',
|
|
default=20,
|
|
config_parameter='fusion_accounting.max_tool_calls',
|
|
)
|
|
fusion_enable_post_audit = fields.Boolean(
|
|
string='Enable Post-Action Audit Hook',
|
|
default=False,
|
|
config_parameter='fusion_accounting.enable_post_audit',
|
|
)
|