123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- package main
- import (
- "app.yhyue.com/moapp/jybase/encrypt"
- . "app.yhyue.com/moapp/jybase/mongodb"
- . "dataIdentify/db"
- . "dataIdentify/service"
- "fmt"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/os/gctx"
- "github.com/gogf/gf/v2/util/gconv"
- "github.com/xuri/excelize/v2"
- "log"
- "net/rpc"
- "sync"
- "testing"
- )
- // {
- // $unset: {
- // "bid_commonwealth" : "",
- // "quote_mode" : "",
- // "model_dataidentify" : ""
- // }
- // }
- func TestAddField(t *testing.T) {
- pool := make(chan bool, 5)
- wait := &sync.WaitGroup{}
- sess := Mgo_Main.GetMgoConn()
- defer Mgo_Main.DestoryMongoConn(sess)
- it := sess.DB("qfw_data").C("wcj_bidding_20250708").Find(map[string]interface{}{}).Select(nil).Sort("-_id").Iter()
- index := 0
- for tm := make(map[string]interface{}); it.Next(tm); {
- index++
- if index%100 == 0 {
- log.Println("index", index)
- }
- pool <- true
- wait.Add(1)
- go func(m map[string]interface{}) {
- defer func() {
- <-pool
- wait.Done()
- }()
- href := "https://www.jianyu360.com/nologin/content/" + encrypt.CommonEncodeArticle("content", BsonIdToSId(m["_id"])) + ".html"
- Mgo_Main.Update("wcj_bidding_20250708", map[string]interface{}{
- "_id": m["_id"],
- }, map[string]interface{}{"$set": map[string]interface{}{
- "href": href,
- }}, false, false)
- }(tm)
- tm = make(map[string]interface{})
- }
- wait.Wait()
- log.Println("over...", index)
- }
- // 示例测试
- func TestRule(t *testing.T) {
- Start("686bc7add5d8e4081f8b8766")
- }
- func TestAll(t *testing.T) {
- pool := make(chan bool, g.Config().MustGet(gctx.New(), "poolSize").Int())
- wait := &sync.WaitGroup{}
- sess := Mgo_Main.GetMgoConn()
- defer Mgo_Main.DestoryMongoConn(sess)
- collection := "wcj_bidding_20250708"
- it := sess.DB("qfw_data").C(collection).Find(nil).Select(SelectField).Sort("-_id").Iter()
- index := 0
- for tm := make(map[string]interface{}); it.Next(tm); {
- index++
- if index%100 == 0 {
- log.Println("index", index)
- }
- pool <- true
- wait.Add(1)
- go func(m map[string]interface{}) {
- defer func() {
- <-pool
- wait.Done()
- }()
- _id := BsonIdToSId(m["_id"])
- flag, quoteMode, _, bidCommonwealth, _ := Pretreatment(_id, m, 0)
- if !flag {
- return
- }
- set := map[string]interface{}{}
- if quoteMode != "" {
- set["quote_mode"] = quoteMode
- }
- if bidCommonwealth != -1 {
- set["bid_commonwealth"] = bidCommonwealth
- }
- if len(set) > 0 {
- Mgo_Main.UpdateById(collection, m["_id"], map[string]interface{}{"$set": set})
- }
- }(tm)
- tm = make(map[string]interface{})
- }
- wait.Wait()
- log.Println("over...", index)
- }
- /* 返回结果:
- * map[中标联合体:否 报价模式:其他]
- * 中标联合体: 是/否
- * 报价模式:单价/费率/折扣率/正常报价/其他
- */
- func TestRpc(t *testing.T) {
- conn, err := rpc.DialHTTP("tcp", "172.31.31.203:8811")
- if err != nil {
- log.Println(err)
- return
- }
- defer conn.Close()
- var reply map[string]string
- err = conn.Call("DataIdentify.Execute", "5b0dfeb4a5cb26b9b79c1330", &reply)
- if err != nil {
- log.Println(err)
- }
- log.Println(reply)
- }
- func TestDd(t *testing.T) {
- of, err := excelize.OpenFile("./报价模式+中标联合体验证.xlsx")
- if err != nil {
- log.Fatalln(err)
- return
- }
- // 读取指定工作表中的所有行。
- f := excelize.NewFile()
- sheetName := of.GetSheetList()[1]
- newSheetIndex, _ := f.NewSheet(sheetName)
- f.SetActiveSheet(newSheetIndex)
- rows, err := of.GetRows(sheetName)
- k := 0
- for ck, row := range rows {
- if ck != 0 {
- data, _ := Mgo_Main.FindById("bidding_hasdetail", row[0], `{"subtype":1}`)
- if data == nil || len(*data) == 0 {
- continue
- } else if subtype := gconv.String((*data)["subtype"]); subtype != "中标" && subtype != "成交" && subtype != "合同" {
- continue
- }
- }
- k++
- for kk, vv := range row {
- cell, _ := excelize.ColumnNumberToName(kk + 1)
- f.SetCellValue(sheetName, fmt.Sprintf("%s%d", cell, k), vv)
- }
- }
- f.SaveAs("./新_报价模式+中标联合体验证.xlsx")
- }
- // 总共 300 报价模式不一致 86 中标联合体不一致 2
- func TestCompare(t *testing.T) {
- // 打开一个已存在的Excel文件。
- of, err := excelize.OpenFile("./报价模式+中标联合体验证第二轮.xlsx")
- if err != nil {
- log.Fatalln(err)
- return
- }
- // 获取工作表的名称列表。
- sheets := of.GetSheetList()
- // 读取指定工作表中的所有行。
- f := excelize.NewFile()
- sheetName := "对比结果"
- newSheetIndex, _ := f.NewSheet(sheetName)
- f.SetActiveSheet(newSheetIndex)
- // 设置工作表的标题行
- headers := []string{"_id", "链接", "测试-报价模式", "抽取-报价模式", "测试-中标联合体", "抽取-中标联合体"}
- for colNum, header := range headers {
- cell, _ := excelize.ColumnNumberToName(colNum + 1)
- f.SetCellValue(sheetName, fmt.Sprintf("%s%d", cell, 1), header)
- }
- rowsTemp, err := of.GetRows(sheets[1])
- if err != nil {
- log.Fatalln(err)
- }
- //rows := [][]string{rowsTemp[0], rowsTemp[1]}
- rows := rowsTemp
- result := map[string]map[string]interface{}{}
- lock := &sync.Mutex{}
- pool := make(chan bool, 5)
- wait := &sync.WaitGroup{}
- var aEq, bEq float64
- oneFieldMap := map[string]float64{}
- oneFieldEqMap := map[string]float64{}
- var aBidModel, bBigModel int64
- for k, r := range rows {
- if k == 0 {
- continue
- }
- pool <- true
- wait.Add(1)
- go func(kk int, row []string) {
- defer func() {
- <-pool
- wait.Done()
- }()
- _, a, aa, b, bb := Start(row[0])
- if a == QuoteMode_Other {
- a = QuoteMode_Whole
- }
- bv := ""
- if b == 1 {
- bv = "是"
- } else if b == -1 {
- bv = "否"
- }
- lock.Lock()
- result[row[0]] = map[string]interface{}{
- "报价模式": a,
- "报价模式_大模型": aa,
- "中标联合体": bv,
- "中标联合体_大模型": bb,
- }
- lock.Unlock()
- }(k, r)
- }
- wait.Wait()
- rowNum := 1
- for k, row := range rows {
- if k == 0 {
- continue
- }
- if row[4] == "" {
- row[4] = QuoteMode_Whole
- }
- obj := result[row[0]]
- a, b := obj["报价模式"], obj["中标联合体"]
- if gconv.Bool(obj["报价模式_大模型"]) {
- aBidModel++
- }
- if gconv.Bool(obj["中标联合体_大模型"]) {
- bBigModel++
- }
- oneFieldMap[row[4]]++
- if a == row[4] {
- aEq++
- oneFieldEqMap[row[4]]++
- }
- if b == row[6] {
- bEq++
- }
- if a == row[4] && b == row[6] {
- continue
- }
- rowNum++
- cell, _ := excelize.ColumnNumberToName(1)
- f.SetCellValue(sheetName, fmt.Sprintf("%s%d", cell, rowNum), row[0])
- cell, _ = excelize.ColumnNumberToName(2)
- f.SetCellValue(sheetName, fmt.Sprintf("%s%d", cell, rowNum), row[1])
- cell, _ = excelize.ColumnNumberToName(3)
- f.SetCellValue(sheetName, fmt.Sprintf("%s%d", cell, rowNum), row[4])
- cell, _ = excelize.ColumnNumberToName(4)
- f.SetCellValue(sheetName, fmt.Sprintf("%s%d", cell, rowNum), a)
- cell, _ = excelize.ColumnNumberToName(5)
- f.SetCellValue(sheetName, fmt.Sprintf("%s%d", cell, rowNum), row[6])
- cell, _ = excelize.ColumnNumberToName(6)
- f.SetCellValue(sheetName, fmt.Sprintf("%s%d", cell, rowNum), b)
- }
- f.SaveAs("./对比结果.xlsx")
- countRows := float64(len(rows) - 1)
- oneFieldMsg := ""
- for k, v := range oneFieldMap {
- oneFieldMsg += fmt.Sprintf("报价模式-%s,总数:%.f,正确:%.f,正确率:%.2f%%", k, v, oneFieldEqMap[k], oneFieldEqMap[k]/v*100) + "\n"
- }
- log.Println("总数", countRows, "\n",
- fmt.Sprintf("报价模式,正确:%.f,正确率:%.2f%%", aEq, aEq/countRows*100), "\n",
- oneFieldMsg,
- fmt.Sprintf("中标联合,正确:%.f,正确率:%.2f%%", bEq, bEq/countRows*100), "\n",
- "报价模式大模型抽取", aBidModel, "中标联合体大模型抽取", bBigModel)
- }
|