update app_chatgpt

This commit is contained in:
Chill
2023-04-13 18:24:01 +08:00
parent e5e5207f4d
commit 8557f0e790
7 changed files with 28 additions and 13 deletions

View File

@@ -56,8 +56,8 @@
'data/ir_config_parameter.xml', 'data/ir_config_parameter.xml',
'views/res_config_settings_views.xml', 'views/res_config_settings_views.xml',
'views/ai_robot_views.xml', 'views/ai_robot_views.xml',
'views/res_users_views.xml',
'views/res_partner_ai_use_views.xml', 'views/res_partner_ai_use_views.xml',
'views/res_users_views.xml',
], ],
'assets': { 'assets': {
'mail.assets_messaging': [ 'mail.assets_messaging': [

View File

@@ -4,7 +4,7 @@ from . import mail_channel
from . import res_config_settings from . import res_config_settings
from . import ai_robot from . import ai_robot
from . import res_partner from . import res_partner
from . import res_partner_ai_use
from . import res_users from . import res_users
from . import mail_message from . import mail_message
from . import mail_thread from . import mail_thread
from . import res_partner_ai_use

View File

@@ -28,7 +28,8 @@ class Channel(models.Model):
('message_type', '!=', 'user_notification'), ('message_type', '!=', 'user_notification'),
('parent_id', '!=', False), ('parent_id', '!=', False),
('author_id', '=', answer_id.id), ('author_id', '=', answer_id.id),
('body', '!=', '<p>%s</p>' % _('Response Timeout, please speak again.'))] ('body', '!=', '<p>%s</p>' % _('Response Timeout, please speak again.')),
('body', '!=', '温馨提示:您发送的内容含有敏感词,请修改内容后再向我发送。')]
if self.channel_type in ['group', 'channel']: if self.channel_type in ['group', 'channel']:
# 群聊增加时间限制,当前找所有人,不限制 author_id # 群聊增加时间限制,当前找所有人,不限制 author_id
domain += [('date', '>=', afterTime)] domain += [('date', '>=', afterTime)]
@@ -68,8 +69,8 @@ class Channel(models.Model):
user_id = answer_id.mapped('user_ids').filtered(lambda r: r.gpt_id)[:1] user_id = answer_id.mapped('user_ids').filtered(lambda r: r.gpt_id)[:1]
if user_id and answer_id.gpt_id: if user_id and answer_id.gpt_id:
gpt_policy = user_id.gpt_policy gpt_policy = user_id.gpt_policy
gpt_wl_users = user_id.gpt_wl_users gpt_wl_partners = user_id.gpt_wl_partners
is_allow = message.create_uid.id in gpt_wl_users.ids is_allow = message.author_id.id in gpt_wl_partners.ids
if gpt_policy == 'all' or (gpt_policy == 'limit' and is_allow): if gpt_policy == 'all' or (gpt_policy == 'limit' and is_allow):
ai = answer_id.gpt_id ai = answer_id.gpt_id
@@ -82,8 +83,8 @@ class Channel(models.Model):
user_id = partners.mapped('user_ids').filtered(lambda r: r.gpt_id)[:1] user_id = partners.mapped('user_ids').filtered(lambda r: r.gpt_id)[:1]
if user_id: if user_id:
gpt_policy = user_id.gpt_policy gpt_policy = user_id.gpt_policy
gpt_wl_users = user_id.gpt_wl_users gpt_wl_partners = user_id.gpt_wl_partners
is_allow = message.create_uid.id in gpt_wl_users.ids is_allow = message.author_id.id in gpt_wl_partners.ids
answer_id = user_id.partner_id answer_id = user_id.partner_id
if gpt_policy == 'all' or (gpt_policy == 'limit' and is_allow): if gpt_policy == 'all' or (gpt_policy == 'limit' and is_allow):
ai = user_id.gpt_id ai = user_id.gpt_id
@@ -134,7 +135,7 @@ class Channel(models.Model):
if sync_config == 'sync': if sync_config == 'sync':
self.get_ai_response(ai, messages, channel, user_id, message) self.get_ai_response(ai, messages, channel, user_id, message)
else: else:
self.with_delay().get_ai(ai, messages, channel, user_id, message) self.with_delay().get_ai_response(ai, messages, channel, user_id, message)
except Exception as e: except Exception as e:
raise UserError(_(e)) raise UserError(_(e))

View File

@@ -8,6 +8,7 @@ class ResPartnerAiUse(models.Model):
_description = '消费者Ai使用情况' _description = '消费者Ai使用情况'
name = fields.Many2one('res.partner', 'Partner') name = fields.Many2one('res.partner', 'Partner')
ai_user_id = fields.Many2one('res.users', 'Ai User', domain=[('gpt_id', '!=', False)])
first_ask_time = fields.Datetime('First Ask Time') first_ask_time = fields.Datetime('First Ask Time')
service_start_date = fields.Datetime('Service Start Date') service_start_date = fields.Datetime('Service Start Date')
service_end_date = fields.Datetime('Service End Date') service_end_date = fields.Datetime('Service End Date')

View File

@@ -12,5 +12,5 @@ class ResUsers(models.Model):
('all', 'All Users'), ('all', 'All Users'),
('limit', 'Selected Users') ('limit', 'Selected Users')
], string='Allowed Conversation Mode', default='all', ondelete='set default') ], string='Allowed Conversation Mode', default='all', ondelete='set default')
gpt_wl_users = fields.Many2many('res.users', 'res_users_res_users_rel', 'robot_id', 'user_id', string='Allowed Users', domain="[('id', '!=', id)]") gpt_wl_partners = fields.Many2many('res.partner', 'res_partner_ai_use', 'ai_user_id', 'name', string='Allowed Partners')
gpt_demo_time = fields.Integer('Default Demo Time', default=0) gpt_demo_time = fields.Integer('Default Demo Time', default=0)

View File

@@ -6,6 +6,7 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree> <tree>
<field name="name"/> <field name="name"/>
<field name="ai_user_id"/>
<field name="first_ask_time"/> <field name="first_ask_time"/>
<field name="service_start_date"/> <field name="service_start_date"/>
<field name="service_end_date"/> <field name="service_end_date"/>
@@ -31,6 +32,7 @@
</h1> </h1>
<group> <group>
<group> <group>
<field name="ai_user_id"/>
<field name="first_ask_time"/> <field name="first_ask_time"/>
<field name="service_start_date"/> <field name="service_start_date"/>
<field name="service_end_date"/> <field name="service_end_date"/>
@@ -44,8 +46,6 @@
<field name="tokens_total" readonly="True"/> <field name="tokens_total" readonly="True"/>
</group> </group>
</group> </group>
</sheet> </sheet>
</form> </form>
</field> </field>
@@ -55,7 +55,16 @@
<field name="name">Partner Ai Use</field> <field name="name">Partner Ai Use</field>
<field name="res_model">res.partner.ai.use</field> <field name="res_model">res.partner.ai.use</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="context">{}</field> <field name="context">{'create': 0, 'delete': 0}</field>
</record>
<record id="action_res_users_2_partner_ai_use" model="ir.actions.act_window">
<field name="name">Partner Ai Use</field>
<field name="res_model">res.partner.ai.use</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('ai_user_id', 'in', active_ids)]</field>
<field name="context">{'default_ai_user_id':active_id,}</field>
</record> </record>
<menuitem <menuitem

View File

@@ -5,13 +5,17 @@
<field name="model">res.users</field> <field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/> <field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//div[@name='button_box']" position="inside">
<button name="%(app_chatgpt.action_res_users_2_partner_ai_use)d" type="action" string="Partner AI Use" icon="fa-comments">
</button>
</xpath>
<xpath expr="//page[@name='preferences']" position="after"> <xpath expr="//page[@name='preferences']" position="after">
<page name="page_chatgpt" string="ChatGPT"> <page name="page_chatgpt" string="ChatGPT">
<group> <group>
<group> <group>
<field name="gpt_id"/> <field name="gpt_id"/>
<field name="gpt_policy"/> <field name="gpt_policy"/>
<field name="gpt_wl_users" widget="many2many_tags" attrs="{'invisible': [('gpt_policy', '=', 'all')]}"/> <field name="gpt_wl_partners" widget="many2many_tags" attrs="{'invisible': [('gpt_policy', '=', 'all')]}"/>
<field name="gpt_demo_time"/> <field name="gpt_demo_time"/>
</group> </group>
</group> </group>