diff --git a/app_chatgpt/__manifest__.py b/app_chatgpt/__manifest__.py
index 0e046cc3..b9a7a86a 100644
--- a/app_chatgpt/__manifest__.py
+++ b/app_chatgpt/__manifest__.py
@@ -57,6 +57,7 @@
'views/res_config_settings_views.xml',
'views/ai_robot_views.xml',
'views/res_users_views.xml',
+ 'views/res_partner_ai_use_views.xml',
],
'assets': {
'mail.assets_messaging': [
diff --git a/app_chatgpt/models/__init__.py b/app_chatgpt/models/__init__.py
index 5327e517..4b819a4e 100644
--- a/app_chatgpt/models/__init__.py
+++ b/app_chatgpt/models/__init__.py
@@ -7,3 +7,4 @@ from . import res_partner
from . import res_users
from . import mail_message
from . import mail_thread
+from . import res_partner_ai_use
diff --git a/app_chatgpt/models/ai_robot.py b/app_chatgpt/models/ai_robot.py
index db5bcea8..545ae76d 100644
--- a/app_chatgpt/models/ai_robot.py
+++ b/app_chatgpt/models/ai_robot.py
@@ -139,25 +139,35 @@ GPT-3 A set of models that can understand and generate natural language
usage = json.loads(json.dumps(res['usage']))
content = json.loads(json.dumps(res['choices'][0]['message']['content']))
data = content.replace(' .', '.').strip()
- if usage:
- # todo: 不是写到 user ,是要写到指定 m2m 相关模型, 如: res.partner.ai.use
- user_id = author_id.mapped('user_ids')[:1]
+ answer_user = answer_id.mapped('user_ids')[:1]
+ if answer_user.gpt_policy == 'limit' and usage:
prompt_tokens = usage['prompt_tokens']
completion_tokens = usage['completion_tokens']
total_tokens = usage['total_tokens']
- vals = {
- 'human_prompt_tokens': user_id.human_prompt_tokens + prompt_tokens,
- 'ai_completion_tokens': user_id.ai_completion_tokens + completion_tokens,
- 'tokens_total': user_id.tokens_total + total_tokens,
- 'used_number': user_id.used_number + 1,
- }
- if not user_id.first_ask_time:
- ask_date = fields.Datetime.now()
- vals.update({
+ # 不是写到 user ,是要写到指定 m2m 相关模型, 如: res.partner.ai.use
+ ai_use = self.env['res.partner.ai.use'].search([('name', '=', author_id.id)], limit=1)
+ ask_date = fields.Datetime.now()
+ if not ai_use:
+ ai_use.create({
+ 'name': author_id.id,
+ 'human_prompt_tokens': prompt_tokens,
+ 'ai_completion_tokens': completion_tokens,
+ 'tokens_total': total_tokens,
+ 'used_number': 1,
'first_ask_time': ask_date
})
- user_id.write(vals)
- # res = self.filter_sensitive_words(data)
+ else:
+ vals = {
+ 'human_prompt_tokens': ai_use.human_prompt_tokens + prompt_tokens,
+ 'ai_completion_tokens': ai_use.ai_completion_tokens + completion_tokens,
+ 'tokens_total': ai_use.tokens_total + total_tokens,
+ 'used_number': ai_use.used_number + 1,
+ }
+ if not ai_use.first_ask_time:
+ vals.update({
+ 'first_ask_time': ask_date
+ })
+ ai_use.write(vals)
else:
data = res
return data
diff --git a/app_chatgpt/models/res_partner_ai_use.py b/app_chatgpt/models/res_partner_ai_use.py
new file mode 100644
index 00000000..202e87a3
--- /dev/null
+++ b/app_chatgpt/models/res_partner_ai_use.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+
+from odoo import fields, models
+
+
+class ResPartnerAiUse(models.Model):
+ _name = "res.partner.ai.use"
+ _description = '消费者Ai使用情况'
+
+ name = fields.Many2one('res.partner', 'Partner')
+ first_ask_time = fields.Datetime('First Ask Time')
+ service_start_date = fields.Datetime('Service Start Date')
+ service_end_date = fields.Datetime('Service End Date')
+ used_number = fields.Integer('Number of Used')
+ max_number = fields.Integer('Max Number of Call')
+ human_prompt_tokens = fields.Integer('Human Prompt Tokens')
+ ai_completion_tokens = fields.Integer('AI Completion Tokens')
+ tokens_total = fields.Integer('Total Tokens')
+ token_balance = fields.Integer('Token Balance')
+
diff --git a/app_chatgpt/models/res_users.py b/app_chatgpt/models/res_users.py
index 7e2005f3..2fa6a8be 100644
--- a/app_chatgpt/models/res_users.py
+++ b/app_chatgpt/models/res_users.py
@@ -14,13 +14,3 @@ class ResUsers(models.Model):
], 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_demo_time = fields.Integer('Default Demo Time', default=0)
-
- first_ask_time = fields.Datetime('First Ask Time')
- service_start_date = fields.Datetime('Service Start Date')
- service_end_date = fields.Datetime('Service End Date')
- used_number = fields.Integer('Number of Used')
- max_number = fields.Integer('Max Number of Call')
- human_prompt_tokens = fields.Integer('Human Prompt Tokens')
- ai_completion_tokens = fields.Integer('AI Completion Tokens')
- tokens_total = fields.Integer('Total Tokens')
-
diff --git a/app_chatgpt/security/ir.model.access.csv b/app_chatgpt/security/ir.model.access.csv
index 48a026f0..e299d261 100644
--- a/app_chatgpt/security/ir.model.access.csv
+++ b/app_chatgpt/security/ir.model.access.csv
@@ -1,2 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_gpt_robt_user,AiRobotUser,model_ai_robot,base.group_user,1,1,1,1
\ No newline at end of file
+access_gpt_robt_user,AiRobotUser,model_ai_robot,base.group_user,1,1,1,1
+access_res_partner_ai_use_user,ResPartnerAiUseUser,model_res_partner_ai_use,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/app_chatgpt/views/res_partner_ai_use_views.xml b/app_chatgpt/views/res_partner_ai_use_views.xml
new file mode 100644
index 00000000..9f76e740
--- /dev/null
+++ b/app_chatgpt/views/res_partner_ai_use_views.xml
@@ -0,0 +1,68 @@
+
+
+
+ res.partner.ai.use.tree
+ res.partner.ai.use
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ res.partner.ai.use.form
+ res.partner.ai.use
+
+
+
+
+
+
+ Partner Ai Use
+ res.partner.ai.use
+ tree,form
+ {}
+
+
+
+
\ No newline at end of file
diff --git a/app_chatgpt/views/res_users_views.xml b/app_chatgpt/views/res_users_views.xml
index 16a9895a..77c4e5f4 100644
--- a/app_chatgpt/views/res_users_views.xml
+++ b/app_chatgpt/views/res_users_views.xml
@@ -15,18 +15,6 @@
-
-
-
-
-
-
-
-
-
-
-
-