标注平台辅助校准

对AI研判内容有问题点击选择问题

当前为 2024-11-13 提交的版本,查看 最新版本

// ==UserScript==
// @name         标注平台辅助校准
// @version      0.1
// @description  对AI研判内容有问题点击选择问题
// @author       my
// @match        *://qgpt-mark.skyeye.qianxin-inc.cn/*
// @require      http://libs.baidu.com/jquery/2.0.0/jquery.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/lib/index.min.js
// @require      https://unpkg.com/react-trigger-change/dist/react-trigger-change.js
// @license MIT
// @namespace https://greasyfork.org/users/1362442
// ==/UserScript==


class MarkTool {


    constructor() {
        console.log("这是构造函数");
    }

    run() {
        var that = this;
        // 设置定时器,定时添加各种按钮
        window.setInterval(function () {
            if (window.location.href.indexOf("/mark-data/list/calibrate/") != -1) {
                that.addSuggestionSelect();
            }
        }, 1000);

    }
    addSuggestionSelect() {
        // 级联选择器
        const template = `
    <div class="suggestion-select1">
    <el-cascader
      v-model="value"
      :options="options"
      :props="{ expandTrigger: 'hover' }"
      @change="handleChange"
      clearable></el-cascader>
  </div>
    `;
        if (!document.querySelector(".suggestion-select1")) {
            var header = document.querySelector(
                "#pane-model > div > div:nth-child(2) > div.header > div > div.item-header-left"
            );
            if (header) {
                var that = this;
                console.log("找到元素");
                const div = document.createElement("div");
                div.innerHTML = template;

                header.append(div);
            }
        }
    }
}

function addElementUICSS() {
    const link = document.createElement("link");
    link.rel = "stylesheet";
    link.type = "text/css";
    link.href =
        "https://cdn.jsdelivr.net/npm/[email protected]/lib/theme-chalk/index.min.css";
    document.head.appendChild(link);
}
function findyanpanSelectElement() {
    console.log("油猴脚本测试");
    // 建议选择器的vue渲染
    const element = document.querySelector(".suggestion-select1");
    const vue_element = document.querySelector(".el-input.el-input--suffix");
    const jiaozhun_btn = document.querySelector(
        "#pane-model > div > div:nth-child(2) > div.header > div > div.slider"
    );
    if (jiaozhun_btn && element && !vue_element) {
        console.log("渲染建议选择");
        var Main = {
            data() {
                return {
                    currentNumber: 1,
                    showLoading: false,
                    value: [],
                    options: [
                        {
                            value: "缺少信息",
                            label: "缺少信息",
                            children: [
                                {
                                    value: "缺少Payload分析",
                                    label: "缺少Payload分析",
                                },
                                {
                                    value: "缺少Payload对应的攻击者意图判断",
                                    label: "缺少Payload对应的攻击者意图判断",
                                },
                                {
                                    value: "缺少Payload攻击成功的判断原理",
                                    label: "缺少Payload攻击成功的判断原理",
                                },
                                {
                                    value: "缺少判断报文中的Payload是否攻击成功",
                                    label: "缺少判断报文中的Payload是否攻击成功",
                                },
                                {
                                    value: "缺少结论",
                                    label: "缺少结论",
                                },
                            ],
                        },
                        {
                            value: "分析错误",
                            label: "分析错误",
                            children: [
                                {
                                    value: "告警介绍内容错误",
                                    label: "告警介绍内容错误",
                                },
                                {
                                    value: "payload分析错误",
                                    label: "payload分析错误",
                                },
                                {
                                    value: "攻击者意图分析错误",
                                    label: "攻击者意图分析错误",
                                },
                                {
                                    value: "成功原理分析错误",
                                    label: "成功原理分析错误",
                                },
                                {
                                    value: "报文中的Payload是否攻击成功分析错误",
                                    label: "报文中的Payload是否攻击成功分析错误",
                                },
                                {
                                    value: "结论错误",
                                    label: "结论错误",
                                },
                            ],
                        },
                        {
                            value: "模型问题",
                            label: "模型问题",
                            children: [
                                {
                                    value: "模型幻觉",
                                    label: "模型幻觉",
                                },
                                {
                                    value: "模型异常错误",
                                    label: "模型异常错误",
                                }
                            ],
                        },
                        {
                            value: "其他",
                            label: "其他",
                            children: [
                                {
                                    value: "解码错误",
                                    label: "解码错误",
                                },
                                {
                                    value: "计算错误",
                                    label: "计算错误",
                                },
                                {
                                    value: "格式错误",
                                    label: "格式错误",
                                },
                                {
                                    value: "非脆弱性类告警",
                                    label: "非脆弱性类告警",
                                },
                                {
                                    value: "非业务/误报类告警",
                                    label: "非业务/误报类告警",
                                },
                                {
                                    value: "非需要核实类告警",
                                    label: "非需要核实类告警",
                                },
                                {
                                    value: "非情报类告警",
                                    label: "非情报类告警",
                                },
                                {
                                    value: "非攻击类告警",
                                    label: "非攻击类告警",
                                },
                            ],
                        },
                    ],
                };
            },
            methods: {
                handleChange(value) {
                    this.setSuggestion(value);
                },
                setSuggestion(selectedValue) {
                    const textarea = document.querySelector("#pane-model > div > div:nth-child(3) > div > textarea");
                    if (textarea) {
                        console.log("textarea:", textarea);
                        // 将选中的值转换为字符串,并用冒号分隔
                        const selectedText = selectedValue.join(':');

                        finalContent = `${this.currentNumber}. ${selectedText}\n`

                        // 更新文本区域的值
                        textarea.focus();

                        document.execCommand('insertText', false, finalContent);

                        // 递增编号,以便下次添加时使用
                        this.currentNumber++;

                        // 可选:在控制台打印最终内容以进行调试
                        console.log("Final content:", finalContent);
                    }
                    else {
                        console.log("没有找到textarea");
                    }
                },

            },
        };
        var Ctor = Vue.extend(Main);
        new Ctor().$mount(".suggestion-select1");
    }
}

var markTool = new MarkTool();
(function () {
    "use strict";
    addElementUICSS();
    markTool.run();
    //调用函数开始查找
    window.setInterval(function () {
        if (window.location.href.indexOf("/mark-data/list/calibrate/") != -1) {
            findyanpanSelectElement();
        }
    }, 1000);
})();