Files
gzth/yuthon_ai_agent/views/ai_token_usage_views.xml
T
2026-06-12 18:32:36 +08:00

115 lines
5.4 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- ============================================ -->
<!-- Token 使用明细 - 列表视图 -->
<!-- ============================================ -->
<record id="view_ai_token_usage_tree" model="ir.ui.view">
<field name="name">ai.token.usage.tree</field>
<field name="model">ai.token.usage</field>
<field name="arch" type="xml">
<tree string="Token 使用明细" default_order="create_date desc">
<field name="create_date" string="时间"/>
<field name="user_id"/>
<field name="provider_id"/>
<field name="model_name"/>
<field name="prompt_tokens" sum="合计"/>
<field name="completion_tokens" sum="合计"/>
<field name="total_tokens" sum="合计"/>
<field name="conversation_id" optional="hide"/>
</tree>
</field>
</record>
<!-- Token 使用明细 - 搜索视图 -->
<record id="view_ai_token_usage_search" model="ir.ui.view">
<field name="name">ai.token.usage.search</field>
<field name="model">ai.token.usage</field>
<field name="arch" type="xml">
<search string="Token 使用搜索">
<field name="user_id"/>
<field name="provider_id"/>
<field name="model_name"/>
<separator/>
<filter name="filter_today" string="今天"
domain="[('create_date','>=', (context_today()).strftime('%Y-%m-%d'))]"/>
<filter name="filter_week" string="本周"
domain="[('create_date','>=', (context_today() - datetime.timedelta(days=7)).strftime('%Y-%m-%d'))]"/>
<filter name="filter_month" string="本月"
domain="[('create_date','>=', (context_today()).strftime('%Y-%m-01'))]"/>
<separator/>
<group expand="0" string="分组">
<filter name="group_user" string="用户" context="{'group_by': 'user_id'}"/>
<filter name="group_provider" string="服务商" context="{'group_by': 'provider_id'}"/>
<filter name="group_model" string="模型" context="{'group_by': 'model_name'}"/>
<filter name="group_date" string="日期" context="{'group_by': 'create_date:day'}"/>
</group>
</search>
</field>
</record>
<!-- ============================================ -->
<!-- Token 使用汇总 - 列表视图 -->
<!-- ============================================ -->
<record id="view_ai_token_usage_summary_tree" model="ir.ui.view">
<field name="name">ai.token.usage.summary.tree</field>
<field name="model">ai.token.usage.summary</field>
<field name="arch" type="xml">
<tree string="Token 使用汇总" create="false" edit="false" delete="false">
<field name="user_id"/>
<field name="provider_id"/>
<field name="model_name"/>
<field name="call_count" sum="合计"/>
<field name="prompt_tokens" sum="合计"/>
<field name="completion_tokens" sum="合计"/>
<field name="total_tokens" sum="合计"/>
</tree>
</field>
</record>
<!-- ============================================ -->
<!-- Actions -->
<!-- ============================================ -->
<!-- 所有用户 Token 用量(管理员) -->
<record id="action_all_token_usage" model="ir.actions.act_window">
<field name="name">Token 明细</field>
<field name="res_model">ai.token.usage</field>
<field name="view_mode">tree</field>
<field name="context">{'search_default_group_user': 1}</field>
</record>
<!-- Token 汇总(管理员) -->
<record id="action_token_usage_summary" model="ir.actions.act_window">
<field name="name">Token 汇总</field>
<field name="res_model">ai.token.usage.summary</field>
<field name="view_mode">tree</field>
</record>
<!-- ============================================ -->
<!-- 菜单项(全部隐藏,通过 stat button 穿透) -->
<!-- ============================================ -->
<menuitem id="menu_all_token_usage" name="Token 明细"
parent="menu_sys_token" action="action_all_token_usage" sequence="1"
groups="yuthon_ai_agent.group_ai_agent_admin"/>
<menuitem id="menu_token_usage_summary" name="Token 汇总"
parent="menu_sys_token" action="action_token_usage_summary" sequence="2"
groups="yuthon_ai_agent.group_ai_agent_admin"/>
<!-- 兼容旧 XML ID(升级时不残留) -->
<record id="action_my_token_usage" model="ir.actions.act_window">
<field name="name">Token 明细</field>
<field name="res_model">ai.token.usage</field>
<field name="view_mode">tree</field>
<field name="domain">[('user_id', '=', uid)]</field>
</record>
<menuitem id="menu_my_token_usage" name="Token 明细"
parent="menu_ai_root" sequence="99"
groups="yuthon_ai_agent.group_ai_agent_admin" active="0"/>
<menuitem id="menu_token_management" name="Token 管理"
parent="menu_ai_root" sequence="99"
groups="yuthon_ai_agent.group_ai_agent_admin" active="0"/>
</odoo>