[app_chatgpt] v18 to be validate

This commit is contained in:
Chill
2024-11-06 16:08:33 +08:00
parent d192e633e3
commit 76085f78d6
78 changed files with 31293 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
/** @odoo-module */
import {Message} from "@mail/core/common/message";
import {patch} from "@web/core/utils/patch";
patch(Message.prototype, {
async copy() {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(this.message.body.replaceAll('<br>', '\n').replaceAll('</br>', '\n'), "text/html");
const textInputContent = htmlDoc.body.textContent;
const tempInput = document.createElement("textarea");
tempInput.value = textInputContent;
document.body.appendChild(tempInput);
tempInput.select();
tempInput.setSelectionRange(0, tempInput.value.length);
document.execCommand("copy");
document.body.removeChild(tempInput);
},
async onClickMarkAsGood() {
this.messageService.react(this.message, '👍');
},
async onClickMarkAsBad() {
this.messageService.react(this.message, '👎');
},
});

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates xml:space="preserve">
<t t-name="app_chatgpt.Message" t-inherit="mail.Message" t-inherit-mode="extension">
<xpath expr="//t[@t-if='showSubtypeDescription']" position="after">
<!-- <p>gpt xml测试<t t-esc="message.ai_completion_tokens"/></p>-->
<div t-if="!state.isEditing" name="bottom_operation" class="position-relative mt-8">
<div t-if="message.human_prompt_tokens &gt; 0 or message.ai_completion_tokens &gt;0"
class="o_Message_token text-muted" style="float:left;display:inline;font-size: 13px;">
<br/>
------------------
<br/>
<span title="提问/答复 消耗Token">
<t t-esc="message.human_prompt_tokens"/>
/
<t t-esc="message.ai_completion_tokens"/>
</span>
</div>
<!-- 直接将btn处理方法置于此-->
<div name="action_btn" style="padding:40px 5px 0px 5px;float:right;">
<div class="position-relative" style="padding:0px 5px;height:20px;display:inline-block;">
<button t-on-click="copy" class="btn d-flex p-0 rounded-1">
<i class="o_MessageView_btn fa fa-copy o_MessageActionView_actionCopy"/>
</button>
</div>
<div class="position-relative" style="padding:0px 5px;height:20px;display:inline-block;">
<button t-on-click="onClickMarkAsGood" class="btn d-flex p-0 rounded-1">
<i class="o_MessageView_btn fa fa-thumbs-up"/>
</button>
</div>
<div class="position-relative" style="padding:0px 0px 0px 5px;height:20px;display:inline-block;">
<button t-on-click="onClickMarkAsBad" class="btn d-flex p-0 rounded-1">
<i class="o_MessageView_btn fa fa-thumbs-down"/>
</button>
</div>
</div>
</div>
</xpath>
</t>
</templates>

View File

@@ -0,0 +1,39 @@
/** @odoo-module **/
import { Message } from "@mail/core/common/message_model";
import { assignDefined } from "@mail/utils/common/misc";
import { patch } from "@web/core/utils/patch";
// 参考模块 whatsapp
patch(Message.prototype, {
update(data) {
assignDefined(this, data, ["human_prompt_tokens", "ai_completion_tokens", "is_ai"]);
super.update(data);
},
});
//
// registerPatch({
// name: 'Message',
// modelMethods: {
// convertData(data) {
// const data2 = this._super(data);
// if ('human_prompt_tokens' in data) {
// data2.human_prompt_tokens = data.human_prompt_tokens;
// }
// if ('ai_completion_tokens' in data) {
// data2.ai_completion_tokens = data.ai_completion_tokens;
// }
// if ('is_ai' in data) {
// data2.is_ai = data.is_ai;
// }
// return data2;
// },
// },
// fields: {
// human_prompt_tokens: attr(),
// ai_completion_tokens: attr(),
// is_ai: attr(),
//
// }
// })