From dd67f630856114b73d48d11631f29949230e4a28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Thu, 28 May 2026 10:38:22 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/models/issue_library.py | 17 +++++------------ yuthon_issue/views/issue_library_views.xml | 1 + 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/yuthon_issue/models/issue_library.py b/yuthon_issue/models/issue_library.py index ca33394b6..fd1eedd7f 100644 --- a/yuthon_issue/models/issue_library.py +++ b/yuthon_issue/models/issue_library.py @@ -141,18 +141,11 @@ class IssueLibrary(models.Model): records = self.env['issue.library'].browse(active_ids) count = 0 for record in records: - if record.class_char: - # 先清理HTML标签 - value = record.class_char - value = re.sub(r'<[^>]+>', '', value) - # 再补"次"字 - if '班子会' in value and '第' in value: - pattern = r'(第\d+)(班子会)' - new_value = re.sub(pattern, r'\1次\2', value) - else: - new_value = value - if new_value != record.class_char: - record.class_char = new_value + # 只清理party_char的HTML标签 + if record.party_char: + clean_value = re.sub(r'<[^>]+>', '', record.party_char) + if clean_value != record.party_char: + record.party_char = clean_value count += 1 return { 'type': 'ir.actions.client', diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml index 9ef07c3a6..def33a6d7 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -57,6 +57,7 @@ decoration-muted="issue_state == 'cancel'">
From a9297f91fa3feb08541fa157e48deea65d12537b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= <9664676+pengyuthon@user.noreply.gitee.com> Date: Thu, 28 May 2026 10:42:03 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_property_approval/models/property_open_rent.py | 1 + yuthon_property_approval/views/property_open_rent_views.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/yuthon_property_approval/models/property_open_rent.py b/yuthon_property_approval/models/property_open_rent.py index 760f00df1..0b1e94e9c 100644 --- a/yuthon_property_approval/models/property_open_rent.py +++ b/yuthon_property_approval/models/property_open_rent.py @@ -21,6 +21,7 @@ class PropertyOpenRent(models.Model): upset = fields.Float(string="底价") document_ids = fields.Many2many('ir.attachment', string="附件") handling_opinions = fields.Text(string="经办意见") + type_stamp_ids = fields.Many2many('seals.type.setting', string='用章类型') # 物业 property_name = fields.Char(string="物业信息") diff --git a/yuthon_property_approval/views/property_open_rent_views.xml b/yuthon_property_approval/views/property_open_rent_views.xml index 449098fd7..affc194b4 100644 --- a/yuthon_property_approval/views/property_open_rent_views.xml +++ b/yuthon_property_approval/views/property_open_rent_views.xml @@ -41,6 +41,7 @@ + From bbe62a9c994956b04420f899c34f62ae64150808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Thu, 28 May 2026 10:51:38 +0800 Subject: [PATCH 3/4] =?UTF-8?q?ai=E6=A8=A1=E5=9D=97=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_ai_agent/__manifest__.py | 12 +++---- yuthon_ai_agent/controllers/main.py | 2 +- yuthon_ai_agent/models/ai_agent.py | 4 +-- yuthon_ai_agent/security/ai_security.xml | 10 +++--- yuthon_ai_agent/security/ir.model.access.csv | 32 +++++++++---------- .../static/src/js/ai_chat_action.js | 4 +-- .../static/src/xml/ai_chat_template.xml | 2 +- .../static/src/xml/ai_floating_template.xml | 2 +- .../views/ai_conversation_views.xml | 6 ++-- yuthon_ai_agent/views/ai_provider_views.xml | 6 ++-- yuthon_ai_agent/views/ai_rule_views.xml | 2 +- .../views/ai_token_usage_views.xml | 8 ++--- .../views/ai_user_profile_views.xml | 6 ++-- 13 files changed, 48 insertions(+), 48 deletions(-) diff --git a/yuthon_ai_agent/__manifest__.py b/yuthon_ai_agent/__manifest__.py index c3cae085e..560fe2bb0 100644 --- a/yuthon_ai_agent/__manifest__.py +++ b/yuthon_ai_agent/__manifest__.py @@ -29,12 +29,12 @@ ], 'assets': { 'web.assets_backend': [ - 'yuthon_ai_agent_17/static/src/js/ai_chat_action.js', - 'yuthon_ai_agent_17/static/src/js/ai_floating.js', - 'yuthon_ai_agent_17/static/src/xml/ai_chat_template.xml', - 'yuthon_ai_agent_17/static/src/xml/ai_navbar_button.xml', - 'yuthon_ai_agent_17/static/src/css/ai_chat.css', - 'yuthon_ai_agent_17/static/src/css/ai_floating.css', + 'yuthon_ai_agent/static/src/js/ai_chat_action.js', + 'yuthon_ai_agent/static/src/js/ai_floating.js', + 'yuthon_ai_agent/static/src/xml/ai_chat_template.xml', + 'yuthon_ai_agent/static/src/xml/ai_navbar_button.xml', + 'yuthon_ai_agent/static/src/css/ai_chat.css', + 'yuthon_ai_agent/static/src/css/ai_floating.css', ], }, 'installable': True, diff --git a/yuthon_ai_agent/controllers/main.py b/yuthon_ai_agent/controllers/main.py index 78abe133e..1c64366b7 100644 --- a/yuthon_ai_agent/controllers/main.py +++ b/yuthon_ai_agent/controllers/main.py @@ -11,7 +11,7 @@ class AiChatController(http.Controller): def _check_ai_access(self): """检查用户是否有 AI Agent 使用权限""" - if not request.env.user.has_group('yuthon_ai_agent_17.group_ai_agent_user'): + if not request.env.user.has_group('yuthon_ai_agent.group_ai_agent_user'): return {'error': '您没有使用 AI 助手的权限,请联系管理员开通。'} return None diff --git a/yuthon_ai_agent/models/ai_agent.py b/yuthon_ai_agent/models/ai_agent.py index 9a52e3e2b..f07255fb0 100644 --- a/yuthon_ai_agent/models/ai_agent.py +++ b/yuthon_ai_agent/models/ai_agent.py @@ -157,7 +157,7 @@ class AiConversation(models.Model): self.ensure_one() return { 'type': 'ir.actions.client', - 'tag': 'yuthon_ai_agent_17.chat', + 'tag': 'yuthon_ai_agent.chat', 'name': self.name, 'params': {'res_id': self.id}, } @@ -445,7 +445,7 @@ class AiConversation(models.Model): """发送用户消息并获取 AI 回复(支持工具调用)。""" self.ensure_one() # 权限校验:只有 AI Agent 用户组才能使用 - if not self.env.user.has_group('yuthon_ai_agent_17.group_ai_agent_user'): + if not self.env.user.has_group('yuthon_ai_agent.group_ai_agent_user'): return {'error': '您没有使用 AI 助手的权限,请联系管理员开通。'} provider = self.provider_id diff --git a/yuthon_ai_agent/security/ai_security.xml b/yuthon_ai_agent/security/ai_security.xml index 2612190b8..afebb493e 100644 --- a/yuthon_ai_agent/security/ai_security.xml +++ b/yuthon_ai_agent/security/ai_security.xml @@ -13,7 +13,7 @@ AI Agent 管理员 管理 AI 服务商配置 - + @@ -22,7 +22,7 @@ AI 对话:仅本人 [('create_uid','=',user.id)] - + @@ -34,7 +34,7 @@ AI 画像:仅本人 [('user_id','=',user.id)] - + @@ -46,7 +46,7 @@ AI 记忆:仅本人 [('profile_id.user_id','=',user.id)] - + @@ -58,7 +58,7 @@ Token 用量:仅本人 [('user_id','=',user.id)] - + diff --git a/yuthon_ai_agent/security/ir.model.access.csv b/yuthon_ai_agent/security/ir.model.access.csv index c75445390..b76628c18 100644 --- a/yuthon_ai_agent/security/ir.model.access.csv +++ b/yuthon_ai_agent/security/ir.model.access.csv @@ -1,17 +1,17 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_ai_provider_read,AI服务商-只读,model_ai_provider,yuthon_ai_agent_17.group_ai_agent_user,1,0,0,0 -access_ai_provider_admin,AI服务商-管理员,model_ai_provider,yuthon_ai_agent_17.group_ai_agent_admin,1,1,1,1 -access_ai_conversation_user,AI对话-用户,model_ai_conversation,yuthon_ai_agent_17.group_ai_agent_user,1,1,1,1 -access_ai_message_user,AI消息-用户,model_ai_message,yuthon_ai_agent_17.group_ai_agent_user,1,1,1,1 -access_ai_conversation_admin,AI对话-管理员,model_ai_conversation,yuthon_ai_agent_17.group_ai_agent_admin,1,1,1,1 -access_ai_message_admin,AI消息-管理员,model_ai_message,yuthon_ai_agent_17.group_ai_agent_admin,1,1,1,1 -access_ai_user_profile_user,AI画像-用户,model_ai_user_profile,yuthon_ai_agent_17.group_ai_agent_user,1,1,1,0 -access_ai_user_profile_admin,AI画像-管理员,model_ai_user_profile,yuthon_ai_agent_17.group_ai_agent_admin,1,1,1,1 -access_ai_user_memory_user,AI记忆-用户,model_ai_user_memory,yuthon_ai_agent_17.group_ai_agent_user,1,1,1,1 -access_ai_user_memory_admin,AI记忆-管理员,model_ai_user_memory,yuthon_ai_agent_17.group_ai_agent_admin,1,1,1,1 -access_ai_token_usage_user,Token用量-用户,model_ai_token_usage,yuthon_ai_agent_17.group_ai_agent_user,1,0,1,0 -access_ai_token_usage_admin,Token用量-管理员,model_ai_token_usage,yuthon_ai_agent_17.group_ai_agent_admin,1,1,1,1 -access_ai_token_usage_summary_user,Token汇总-用户,model_ai_token_usage_summary,yuthon_ai_agent_17.group_ai_agent_user,1,0,0,0 -access_ai_token_usage_summary_admin,Token汇总-管理员,model_ai_token_usage_summary,yuthon_ai_agent_17.group_ai_agent_admin,1,0,0,0 -access_ai_rule_user,AI规则-用户只读,model_ai_rule,yuthon_ai_agent_17.group_ai_agent_user,1,0,0,0 -access_ai_rule_admin,AI规则-管理员,model_ai_rule,yuthon_ai_agent_17.group_ai_agent_admin,1,1,1,1 +access_ai_provider_read,AI服务商-只读,model_ai_provider,yuthon_ai_agent.group_ai_agent_user,1,0,0,0 +access_ai_provider_admin,AI服务商-管理员,model_ai_provider,yuthon_ai_agent.group_ai_agent_admin,1,1,1,1 +access_ai_conversation_user,AI对话-用户,model_ai_conversation,yuthon_ai_agent.group_ai_agent_user,1,1,1,1 +access_ai_message_user,AI消息-用户,model_ai_message,yuthon_ai_agent.group_ai_agent_user,1,1,1,1 +access_ai_conversation_admin,AI对话-管理员,model_ai_conversation,yuthon_ai_agent.group_ai_agent_admin,1,1,1,1 +access_ai_message_admin,AI消息-管理员,model_ai_message,yuthon_ai_agent.group_ai_agent_admin,1,1,1,1 +access_ai_user_profile_user,AI画像-用户,model_ai_user_profile,yuthon_ai_agent.group_ai_agent_user,1,1,1,0 +access_ai_user_profile_admin,AI画像-管理员,model_ai_user_profile,yuthon_ai_agent.group_ai_agent_admin,1,1,1,1 +access_ai_user_memory_user,AI记忆-用户,model_ai_user_memory,yuthon_ai_agent.group_ai_agent_user,1,1,1,1 +access_ai_user_memory_admin,AI记忆-管理员,model_ai_user_memory,yuthon_ai_agent.group_ai_agent_admin,1,1,1,1 +access_ai_token_usage_user,Token用量-用户,model_ai_token_usage,yuthon_ai_agent.group_ai_agent_user,1,0,1,0 +access_ai_token_usage_admin,Token用量-管理员,model_ai_token_usage,yuthon_ai_agent.group_ai_agent_admin,1,1,1,1 +access_ai_token_usage_summary_user,Token汇总-用户,model_ai_token_usage_summary,yuthon_ai_agent.group_ai_agent_user,1,0,0,0 +access_ai_token_usage_summary_admin,Token汇总-管理员,model_ai_token_usage_summary,yuthon_ai_agent.group_ai_agent_admin,1,0,0,0 +access_ai_rule_user,AI规则-用户只读,model_ai_rule,yuthon_ai_agent.group_ai_agent_user,1,0,0,0 +access_ai_rule_admin,AI规则-管理员,model_ai_rule,yuthon_ai_agent.group_ai_agent_admin,1,1,1,1 diff --git a/yuthon_ai_agent/static/src/js/ai_chat_action.js b/yuthon_ai_agent/static/src/js/ai_chat_action.js index c94467a0f..809ac9856 100644 --- a/yuthon_ai_agent/static/src/js/ai_chat_action.js +++ b/yuthon_ai_agent/static/src/js/ai_chat_action.js @@ -5,7 +5,7 @@ import { registry } from "@web/core/registry"; import { useService } from "@web/core/utils/hooks"; export class AiChatAction extends Component { - static template = "yuthon_ai_agent_17.AiChatTemplate"; + static template = "yuthon_ai_agent.AiChatTemplate"; // Client Action 接收的 props static props = ["*"]; @@ -86,4 +86,4 @@ export class AiChatAction extends Component { } } -registry.category("actions").add("yuthon_ai_agent_17.chat", AiChatAction); +registry.category("actions").add("yuthon_ai_agent.chat", AiChatAction); diff --git a/yuthon_ai_agent/static/src/xml/ai_chat_template.xml b/yuthon_ai_agent/static/src/xml/ai_chat_template.xml index a7c301c3c..a2decd6cd 100644 --- a/yuthon_ai_agent/static/src/xml/ai_chat_template.xml +++ b/yuthon_ai_agent/static/src/xml/ai_chat_template.xml @@ -1,6 +1,6 @@ - +
diff --git a/yuthon_ai_agent/static/src/xml/ai_floating_template.xml b/yuthon_ai_agent/static/src/xml/ai_floating_template.xml index 61b6bf5e3..0234fe8ad 100644 --- a/yuthon_ai_agent/static/src/xml/ai_floating_template.xml +++ b/yuthon_ai_agent/static/src/xml/ai_floating_template.xml @@ -2,7 +2,7 @@ - +