Explorar o código

分包提示语调整

zhengkun hai 6 meses
pai
achega
aac69a4d92
Modificáronse 2 ficheiros con 42 adicións e 32 borrados
  1. 12 7
      clean/c_money.go
  2. 30 25
      prompt/prompt_package.go

+ 12 - 7
clean/c_money.go

@@ -77,8 +77,8 @@ func init() {
 }
 
 // 金额转换
-func CleanMoney(data []interface{}) float64 {
-	//isfindUnit := true
+func CleanMoney(data []interface{}) (float64, bool) {
+	isFindUnit := false
 	tmpstr := (data)[0]
 	totmpstr := ""
 	if _, ok := tmpstr.(float64); ok {
@@ -142,7 +142,7 @@ func CleanMoney(data []interface{}) float64 {
 	if utf8.RuneCountInString(totmpstr) > 100 { //过长-字符无有效金额
 		(data)[0] = 0
 		data = append(data, false)
-		return 0.0
+		return 0.0, isFindUnit
 	}
 
 	if utf8.RuneCountInString(totmpstr) > 20 {
@@ -153,10 +153,15 @@ func CleanMoney(data []interface{}) float64 {
 		} else {
 			(data)[0] = 0
 			data = append(data, false)
-			return 0.0
+			return 0.0, isFindUnit
 		}
 	}
 
+	//是否发现单位
+	if strings.Contains(fmt.Sprint(data[0]), "万") || strings.Contains(fmt.Sprint(data[0]), "亿") {
+		isFindUnit = true
+	}
+
 	ret := capitalMoney(data)[0]
 	if ret.(float64) < float64(10000) || ret.(float64) > float64(50000000000) {
 		ret2, _ := numMoney(data)
@@ -179,13 +184,13 @@ func CleanMoney(data []interface{}) float64 {
 	data[0] = f
 	if f == 0 && !moneyUnitRegBool.MatchString(fmt.Sprint(tmpstr)) {
 		data = append(data, false)
-		return 0.0
+		return 0.0, isFindUnit
 	}
 	data = append(data, true)
 	if len(data) > 0 {
-		return util.Float64All(data[0])
+		return util.Float64All(data[0]), isFindUnit
 	} else {
-		return 0.0
+		return 0.0, isFindUnit
 	}
 }
 

+ 30 - 25
prompt/prompt_package.go

@@ -45,11 +45,13 @@ var pmt_pkg_1 = `
 "标段名称":(标包名称,通常包含地理区域、专业类别、标包内容描述等内容,不可以填写"标的名称"),
 "标段/包号":(标包编号,可以来自标段名称,如果不存在写"无",比如:一标段、二标段、包一、I包、I标段、标包一、标包编号等,不可以填写"项目编号"或"标的编号"),
 "中标单位":(中标单位名称,要求:中标角色包括但不限于成交供应商(注:当入围供应商/中标人存在多个,选择第一位为中标单位)、中标人、中标方、承包方、中选单位、服务商、第一|1名中标候选人(忽略其他中标候选人)。当流标显示流标,废标时显示废标。联合体投标时,请列出所有单位名称使用","分割),
-"中标金额":(中标金额数值及单位,要求:不能使用预算金额。多个金额时请进行计算,非单价,如果是单价,则等于单价*数量。),
-"包预算金额":(预算金额数值及单位,要求:不可以用中标金额来填充),
+"预算金额":(预算金额、整体预留项目金额、最高限价、面向中小企业采购金额,要求:不可以用中标金额来填充),
+"中标金额":(项目中标后的成交金额、合同签订金额,如果不存在则使用“无”代替,要求:不能使用预算金额填充。多个金额时请进行计算,非单价,如果是单价,则等于单价*数量。),
+"中标金额单位":"对应金额的单位,如果不存在输出“无”",
+"预算金额单位":"对应金额的单位,如果不存在输出“无”",
 "项目编号":(项目编号,通常具有唯一性,它能够准确无误地标识一个特定的项目,不要使用证书编号当做项目编号的值),
 "标段编号":(通常为标段的唯一识别码,由数字、字母或其组合构成,不要使用纯汉字),
-"合同编号":(通常为合同提供了一个独一无二的标识,不要使用证书编号当做项目编号的值)
+"合同编号":(通常为合同提供了一个独一无二的标识,不要使用证书编号当做项目编号的值),
 },
 ....
 ],
@@ -57,14 +59,15 @@ var pmt_pkg_1 = `
 
 第三步、审查第二步输出的结果,
 0.检查"标段名称"及"标段/包号"是否真的在原文中出现,
-1.检查"标段名称"及"标段/包号"是否有明确提及,如果只有标的名称明确提及,请删除
-2.检查"中标金额"是否在原文中明确提及,否则删除第一步的中标金额结果
-3.检查中标金额与预算金额中的数值与单位是否正确
-4.中标单位如果是候选人、评标结果,检查中标单位是否为第一名,否则删除当前信息
-5.检查"项目编号"是否在原文中明确提及,否则删除第一步的项目编号结果
-6.检查"标段编号"是否在原文中明确提及,否则删除第一步的标段编号结果
-7.检查"合同编号"是否在原文中明确提及,否则删除第一步的合同编号结果
-8.修正答案
+1.检查"标段名称"及"标段/包号"是否有明确提及,如果只有标的名称明确提及,请输出“无”
+2.检查"中标金额"是否在原文中明确提及,否则删除第一步的中标金额结果,中标金额存在于中标信息,不可以使用预算代替,如果不是中标信息,则使用‘无’
+3.中标单位如果是候选人、评标结果,检查中标单位是否为第一名,请输出“无”
+4.检查"项目编号"是否在原文中明确提及,请输出“无”
+5.检查"标段编号"是否在原文中明确提及,请输出“无”
+6.检查"合同编号"是否在原文中明确提及,请输出“无”
+7.注意面向企业采购金额不是中标金额,而是预算金额,不可以使用预算金额填充,请删除中标金额
+8.检查预算金额包括最高限价,面向企业采购金额等非中标成交金额,重新填充预算金额
+9.修正答案
 
 第四步、根据第一、二、三步结果总结得到最终正确的结果
 
@@ -94,14 +97,16 @@ var pmt_pkg_2 = `
 "项目名称":"",
 "分包信息":[
 {
-"标段名称":(标包名称,通常包含地理区域、专业类别、标包内容描述等内容,不可以填写"标的名称"与"项目名称"。类似"涪陵区便捷超充站建设项目一标段和二标段预算服务"含有整体招标含义,应是个整体,不能拆分),
+"标段名称":(标包名称,通常包含地理区域、专业类别、标包内容描述等内容,不可以填写"标的名称"),
 "标段/包号":(标包编号,可以来自标段名称,如果不存在写"无",比如:一标段、二标段、包一、I包、I标段、标包一、标包编号等,不可以填写"项目编号"或"标的编号"),
 "中标单位":(中标单位名称,要求:中标角色包括但不限于成交供应商(注:当入围供应商/中标人存在多个,选择第一位为中标单位)、中标人、中标方、承包方、中选单位、服务商、第一|1名中标候选人(忽略其他中标候选人)。当流标显示流标,废标时显示废标。联合体投标时,请列出所有单位名称使用","分割),
-"中标金额":(中标金额数值及单位,如果公告中没有明确说明,输出"无",不能使用预算金额。),
-"包预算金额":(预算金额数值及单位,要求:不可以用中标金额来填充)
+"预算金额":(预算金额、整体预留项目金额、最高限价、面向中小企业采购金额,要求:不可以用中标金额来填充),
+"中标金额":(项目中标后的成交金额、合同签订金额,如果不存在则使用“无”代替,要求:不能使用预算金额填充。多个金额时请进行计算,非单价,如果是单价,则等于单价*数量。),
+"中标金额单位":"对应金额的单位,如果不存在输出“无”",
+"预算金额单位":"对应金额的单位,如果不存在输出“无”",
 "项目编号":(项目编号,通常具有唯一性,它能够准确无误地标识一个特定的项目,不要使用证书编号当做项目编号的值),
 "标段编号":(通常为标段的唯一识别码,由数字、字母或其组合构成,不要使用纯汉字),
-"合同编号":(通常为合同提供了一个独一无二的标识,不要使用证书编号当做项目编号的值)
+"合同编号":(通常为合同提供了一个独一无二的标识,不要使用证书编号当做项目编号的值),
 },
 ....
 ],
@@ -109,14 +114,15 @@ var pmt_pkg_2 = `
 
 第二步、审查第一步输出的结果,
 0.检查"标段名称"及"标段/包号"是否真的在原文中出现,
-1.检查"标段名称"及"标段/包号"是否有明确提及,如果只有标的名称明确提及,请删除
-2.检查"中标金额"是否在原文中明确提及,否则删除第一步的中标金额结果
-3.检查中标金额与预算金额中的数值与单位是否正确
-4.中标单位如果是候选人、评标结果,检查中标单位是否为第一名,否则删除当前信息
-5.检查"项目编号"是否在原文中明确提及,否则删除第一步的项目编号结果
-6.检查"标段编号"是否在原文中明确提及,否则删除第一步的标段编号结果
-7.检查"合同编号"是否在原文中明确提及,否则删除第一步的合同编号结果
-8.修正答案
+1.检查"标段名称"及"标段/包号"是否有明确提及,如果只有标的名称明确提及,请输出“无”
+2.检查"中标金额"是否在原文中明确提及,否则删除第一步的中标金额结果,中标金额存在于中标信息,不可以使用预算代替,如果不是中标信息,则使用‘无’
+3.中标单位如果是候选人、评标结果,检查中标单位是否为第一名,请输出“无”
+4.检查"项目编号"是否在原文中明确提及,请输出“无”
+5.检查"标段编号"是否在原文中明确提及,请输出“无”
+6.检查"合同编号"是否在原文中明确提及,请输出“无”
+7.注意面向企业采购金额不是中标金额,而是预算金额,不可以使用预算金额填充,请删除中标金额
+8.检查预算金额包括最高限价,面向企业采购金额等非中标成交金额,重新填充预算金额
+9.修正答案
 
 第三步、根据第一、二步结果总结得到最终正确的结果
 
@@ -125,7 +131,6 @@ var pmt_pkg_2 = `
 
 第二步结果:
 
-
 最终正确的结果:
  `
 
@@ -160,7 +165,7 @@ func AcquireNewMultiplePackageInfo(detail string, isTable bool) map[string]inter
 		code := qu.ObjToString(v["标段/包号"])
 		winner := clean.CleanWinner(qu.ObjToString(v["中标单位"]))
 		bidamount := clean.CleanMoney([]interface{}{v["中标金额"], ""})
-		budget := clean.CleanMoney([]interface{}{v["预算金额"], ""})
+		budget := clean.CleanMoney([]interface{}{v["预算金额"], ""})
 		if bidamount > 1000000000.0 {
 			bidamount = 0.0
 		}