99 lines
3.5 KiB
Python
99 lines
3.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright 2026 Nexa Systems Inc.
|
|
# License OPL-1 (Odoo Proprietary License v1.0)
|
|
|
|
from odoo import models, fields
|
|
|
|
|
|
class ResConfigSettings(models.TransientModel):
|
|
_inherit = 'res.config.settings'
|
|
|
|
fclk_ai_openai_api_key = fields.Char(
|
|
string='OpenAI API Key',
|
|
config_parameter='fusion_clock_ai.openai_api_key',
|
|
)
|
|
fclk_ai_openai_model = fields.Selection([
|
|
('gpt-4o', 'GPT-4o (Best quality, higher cost)'),
|
|
('gpt-4o-mini', 'GPT-4o Mini (Good quality, low cost)'),
|
|
('gpt-3.5-turbo', 'GPT-3.5 Turbo (Basic, lowest cost)'),
|
|
], string='AI Model',
|
|
config_parameter='fusion_clock_ai.openai_model',
|
|
default='gpt-4o-mini',
|
|
)
|
|
fclk_ai_max_response_tokens = fields.Integer(
|
|
string='Max Response Tokens',
|
|
config_parameter='fusion_clock_ai.max_response_tokens',
|
|
default=1024,
|
|
)
|
|
fclk_ai_monthly_budget_usd = fields.Float(
|
|
string='Monthly Budget (USD)',
|
|
config_parameter='fusion_clock_ai.monthly_budget_usd',
|
|
default=50.0,
|
|
help="Set to 0 for unlimited. AI requests stop when budget is reached.",
|
|
)
|
|
fclk_ai_cache_ttl_minutes = fields.Integer(
|
|
string='Cache TTL (minutes)',
|
|
config_parameter='fusion_clock_ai.cache_ttl_minutes',
|
|
default=15,
|
|
)
|
|
fclk_ai_enable_manager_chat = fields.Boolean(
|
|
string='Enable Manager AI Chat',
|
|
config_parameter='fusion_clock_ai.enable_manager_chat',
|
|
default=True,
|
|
)
|
|
fclk_ai_enable_employee_chat = fields.Boolean(
|
|
string='Enable Employee AI Assistant',
|
|
config_parameter='fusion_clock_ai.enable_employee_chat',
|
|
default=True,
|
|
)
|
|
fclk_ai_enable_narrative_reports = fields.Boolean(
|
|
string='Enable AI Narrative Reports',
|
|
config_parameter='fusion_clock_ai.enable_narrative_reports',
|
|
default=True,
|
|
)
|
|
fclk_ai_enable_anomaly_detection = fields.Boolean(
|
|
string='Enable Payroll Anomaly Detection',
|
|
config_parameter='fusion_clock_ai.enable_anomaly_detection',
|
|
default=True,
|
|
)
|
|
fclk_ai_enable_coach = fields.Boolean(
|
|
string='Enable Attendance Coach',
|
|
config_parameter='fusion_clock_ai.enable_coach',
|
|
default=True,
|
|
)
|
|
fclk_ai_enable_correction_advisor = fields.Boolean(
|
|
string='Enable Correction Review Advisor',
|
|
config_parameter='fusion_clock_ai.enable_correction_advisor',
|
|
default=True,
|
|
)
|
|
fclk_ai_enable_predictions = fields.Boolean(
|
|
string='Enable Predictive Alerts',
|
|
config_parameter='fusion_clock_ai.enable_predictions',
|
|
default=False,
|
|
)
|
|
fclk_ai_enable_shift_suggestions = fields.Boolean(
|
|
string='Enable Shift Optimization',
|
|
config_parameter='fusion_clock_ai.enable_shift_suggestions',
|
|
default=False,
|
|
)
|
|
fclk_ai_enable_compliance = fields.Boolean(
|
|
string='Enable Compliance Checks',
|
|
config_parameter='fusion_clock_ai.enable_compliance',
|
|
default=False,
|
|
)
|
|
fclk_ai_enable_smart_config = fields.Boolean(
|
|
string='Enable Natural Language Config',
|
|
config_parameter='fusion_clock_ai.enable_smart_config',
|
|
default=False,
|
|
)
|
|
fclk_ai_enable_geofence_tuning = fields.Boolean(
|
|
string='Enable Geofence Tuning',
|
|
config_parameter='fusion_clock_ai.enable_geofence_tuning',
|
|
default=False,
|
|
)
|
|
fclk_ai_enable_incident_explain = fields.Boolean(
|
|
string='Enable Incident Auto-Explain',
|
|
config_parameter='fusion_clock_ai.enable_incident_explain',
|
|
default=True,
|
|
)
|