From 99d09096cb1232d51a295f6d8162b9c5e63c2275 Mon Sep 17 00:00:00 2001 From: ryan Date: Tue, 4 Mar 2025 11:25:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=8F=8D=E9=A6=88?= =?UTF-8?q?=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agent-ui/feedback/imgs/star-highlight.svg | 2 + .../agent-ui/feedback/imgs/star.svg | 2 + .../components/agent-ui/feedback/index.js | 277 ++++++++++++++++++ .../components/agent-ui/feedback/index.json | 4 + .../components/agent-ui/feedback/index.wxml | 35 +++ .../components/agent-ui/feedback/index.wxss | 91 ++++++ .../components/agent-ui/imgs/thumb-down.svg | 2 + .../components/agent-ui/imgs/thumb-up.svg | 2 + .../miniprogram/components/agent-ui/index.js | 34 ++- .../components/agent-ui/index.json | 3 +- .../components/agent-ui/index.wxml | 40 +-- 11 files changed, 459 insertions(+), 33 deletions(-) create mode 100644 miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/imgs/star-highlight.svg create mode 100644 miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/imgs/star.svg create mode 100644 miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.js create mode 100644 miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.json create mode 100644 miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.wxml create mode 100644 miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.wxss create mode 100644 miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/imgs/thumb-down.svg create mode 100644 miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/imgs/thumb-up.svg diff --git a/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/imgs/star-highlight.svg b/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/imgs/star-highlight.svg new file mode 100644 index 0000000..ce48ec8 --- /dev/null +++ b/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/imgs/star-highlight.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/imgs/star.svg b/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/imgs/star.svg new file mode 100644 index 0000000..9c2ef58 --- /dev/null +++ b/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/imgs/star.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.js b/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.js new file mode 100644 index 0000000..37bc2c1 --- /dev/null +++ b/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.js @@ -0,0 +1,277 @@ +// pages/components/feedback/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + isShowFeedback: { + type: Boolean, + value: false + }, + feedbackRecordId: { + type: String, + value: '' + }, + feedbackType: { + type: String, + value: '' + }, + botId: { + type: String, + value: '' + }, + input: { + type: String, + value: "" + }, + aiAnswer: { + type: String, + value: '' + } + }, + + /** + * 组件的初始数据 + */ + data: { + upVote: [ + { + "selected": false, + "value": "准确有效" + }, + { + "selected": false, + "value": "回答全面" + }, + { + "selected": false, + "value": "立场正确" + }, + { + "selected": false, + "value": "格式规范" + }, + { + "selected": false, + "value": "专业性强" + }, + { + "selected": false, + "value": "富有创意" + }, + { + "selected": false, + "value": "表达清晰" + }, + { + "selected": false, + "value": "值得信赖" + }, + { + "selected": false, + "value": "高效" + }, + { + "selected": false, + "value": "满意" + } + ], + downVote: [ + { + "selected": false, + "value": "理解错误" + }, + { + "selected": false, + "value": "未识别问题" + }, + { + "selected": false, + "value": "事实错误" + }, + { + "selected": false, + "value": "推理错误" + }, + { + "selected": false, + "value": "内容不完整" + }, + { + "selected": false, + "value": "不专业" + }, + { + "selected": false, + "value": "违法有害" + }, + { + "selected": false, + "value": "格式错误" + }, + { + "selected": false, + "value": "乱码" + }, + { + "selected": false, + "value": "内容重复" + } + ], + score: 5, + message: "" + }, + observers:{ + "feedbackType":function (value) { + this.setData({score:value==='upvote'?5:1}) + } + }, + /** + * 组件的方法列表 + */ + methods: { + reset: function () { + this.setData({ + upVote: [ + { + "selected": false, + "value": "准确有效" + }, + { + "selected": false, + "value": "回答全面" + }, + { + "selected": false, + "value": "立场正确" + }, + { + "selected": false, + "value": "格式规范" + }, + { + "selected": false, + "value": "专业性强" + }, + { + "selected": false, + "value": "富有创意" + }, + { + "selected": false, + "value": "表达清晰" + }, + { + "selected": false, + "value": "值得信赖" + }, + { + "selected": false, + "value": "高效" + }, + { + "selected": false, + "value": "满意" + } + ], + downVote: [ + { + "selected": false, + "value": "理解错误" + }, + { + "selected": false, + "value": "未识别问题" + }, + { + "selected": false, + "value": "事实错误" + }, + { + "selected": false, + "value": "推理错误" + }, + { + "selected": false, + "value": "内容不完整" + }, + { + "selected": false, + "value": "不专业" + }, + { + "selected": false, + "value": "违法有害" + }, + { + "selected": false, + "value": "格式错误" + }, + { + "selected": false, + "value": "乱码" + }, + { + "selected": false, + "value": "内容重复" + } + ], + score: 5, + message: "" + }) + }, + onChangeScore: function (e) { + const { score } = e.currentTarget.dataset + this.setData({ score }) + }, + onSelect: function (e) { + const { item } = e.currentTarget.dataset + const newArr = [...this.data.feedbackType === 'upvote' ? this.data.upVote : this.data.downVote] + const [selectedItem] = newArr.filter(i => i.value === item.value) + selectedItem.selected = !selectedItem.selected + if (this.data.feedbackType === 'upvote') { + this.setData({ upVote: newArr }) + } else { + this.setData({ downVote: newArr }) + } + + }, + inputChange: function (e) { + const value = e.detail.value + this.setData({ message: value }) + }, + closeShowFeedback: function () { + this.triggerEvent('close') + }, + submitFeedback: async function () { + const res = await wx.cloud.extend.AI.bot.sendFeedback({ + userFeedback: { + botId: this.data.botId, + recordId: this.data.feedbackRecordId, + comment: this.data.message, + rating: this.data.score, + tags: this.data.feedbackType === 'upvote' ? this.data.upVote.filter(item => item.selected).map(item => item.value) : this.data.downVote.filter(item => item.selected).map(item => item.value), + aiAnswer: this.data.aiAnswer, + input: this.data.input, + type: this.data.feedbackType === 'upvote' ? "upvote" : 'downvote', + }, + botId: this.data.botId + }); + if (res.status === 'success') { + wx.showToast({ + title: "感谢反馈", + icon: "success", + }); + } else { + wx.showToast({ + title: "反馈失败", + icon: "fail", + }); + } + this.reset(); + // console.log(res) + this.triggerEvent("close") + } + } +}) \ No newline at end of file diff --git a/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.json b/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.wxml b/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.wxml new file mode 100644 index 0000000..7ad9dae --- /dev/null +++ b/miniprogram/tcb-agent-ui/miniprogram/components/agent-ui/feedback/index.wxml @@ -0,0 +1,35 @@ + +