mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
update app_chatgpt
This commit is contained in:
@@ -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': [
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user