115 lines
5.4 KiB
XML
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>
|