@customize-agent/knowledge 4.3.3 → 4.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -109,9 +109,14 @@ function collectTenderFormatBlock(lines, start) {
109
109
  /** 招标文件:泛化引用行("详见投标人须知前附表"类短行,无实质项目信息;后缀短语可选) */
110
110
  const TENDER_GENERIC_LINE_RE = /^(详见|具体见|以|按).{0,30}?(前附表|招标文件|招标公告|补疑|澄清|清单|图纸|合同文件)((的)?(要求|规定|为准|执行))?[。;;]?$|^投标人应(仔细|认真)(阅读|核对)(招标文件|本项目)(的全部内容)?[。;;]?$|^未(按|依照|按照)(上述|本|招标文件)要求/u;
111
111
  /** 招标文件:电子投标程序句(行级)。投标人须知条目式排版无可靠段落边界,按句删除
112
- * 程序性操作(加密/解密/上传/撤回/签号/病毒防范/获取/发布/提出/发出/发送/下载/拒收/提交/开标/导入/制作/中断/在线);
112
+ * 程序性操作(加密/解密/上传/撤回/签号/病毒防范/获取/发布/提出/发出/发送/下载/拒收/提交/开标/导入/制作/中断/在线/查询/登录/进行/公示);
113
113
  * 双重信号(程序动词 + 程序对象)防止误删技术条款。仅招标文件生效。 */
114
- const TENDER_EPROCEDURE_LINE_RE = /(?:电子交易系统|数字证书|加密|解密|撤回操作|上传投标文件|签号|病毒防范).{0,45}(?:上传|递交|撤回|解密|完成|显示|关闭|发放|发送|防范|获取|发布|提出|发出|下载|拒收|查看|接收|提交|开标|导入|拒绝|制作|中断|在线)|(?:投标截止时间).{0,35}(?:上传|递交|撤回|自动关闭)/u;
114
+ const TENDER_EPROCEDURE_PREFIX_RE = /(?:电子交易系统|数字证书|加密|解密|撤回操作|上传投标文件|签号|病毒防范)/u;
115
+ const TENDER_EPROCEDURE_LINE_RE = /(?:电子交易系统|数字证书|加密|解密|撤回操作|上传投标文件|签号|病毒防范).{0,45}(?:上传|递交|撤回|解密|完成|显示|关闭|发放|发送|防范|获取|发布|提出|发出|下载|拒收|查看|接收|提交|开标|导入|拒绝|制作|中断|在线|查询|登录|进行|公示)|(?:投标截止时间).{0,35}(?:上传|递交|撤回|自动关闭)/u;
116
+ /** 具体时间/地点证据:跨行拼接删除的防护——拼接后含实质时间地点信息的不删 */
117
+ const TENDER_TIME_PLACE_RE = /\d{4}年\d{1,2}月\d{1,2}日|\d{1,2}时\d{1,2}分|地点[::为是]/u;
118
+ /** 折行接续行判定:行首非编号/序号/条文标题(PDF 折行接续的行首是句中词) */
119
+ const TENDER_CONTINUATION_HEAD_RE = /^(?:###\s*)?(?:第[一二三四五六七八九十百零两\d]+[条章节]|[((]?[一二三四五六七八九十\d]+[))、.、.]|\d{1,3}[.、.]|[【[])/u;
115
120
  /** 补疑文件:零信息回复行("答:按招标文件执行"类套话;含数字/单位的实质回复不删) */
116
121
  const CLARIFICATION_BOILERPLATE_RE = /^(?:(?:答|答复|回复)[::]\s*)?(?:按|以)(招标文件|招标公告|合同文件|清单|图纸|补疑|答疑)?(约定|规定|要求|执行|为准)[。;;]?$|^(?:(?:答|答复|回复)[::]\s*)?不(作|做|予)(调整|修改|变更)[。;;]?$|^(?:(?:答|答复|回复)[::]\s*)?维持(不变|原状)[。;;]?$|^(?:(?:答|答复|回复)[::]\s*)?(本项|此项)(无|没有)(调整|修改|变化)[。;;]?$/u;
117
122
  /** 图纸:无汉字纯坐标数字行(≥2 组相邻 "数字,数字" 坐标对即 ≥3 个连续坐标值,设计坐标不写入施组正文) */
@@ -424,6 +429,24 @@ export function cleanExtractedText(input) {
424
429
  index += 1;
425
430
  continue;
426
431
  }
432
+ // 招标文件:电子投标程序句(跨行拼接;PDF 提取折行把程序动词折到下一行,行间夹空行)
433
+ if (TENDER_EPROCEDURE_PREFIX_RE.test(trimmed)
434
+ && !/[。;;::!!??]$/u.test(trimmed)) {
435
+ let nextIdx = index + 1;
436
+ while (nextIdx < lines.length && !lines[nextIdx].trim())
437
+ nextIdx += 1;
438
+ if (nextIdx < lines.length && nextIdx - index <= 3) {
439
+ const next = lines[nextIdx].trim();
440
+ const continuation = next.length > 0 && next.length < 80 && !TENDER_CONTINUATION_HEAD_RE.test(next);
441
+ const joined = `${trimmed}${next}`;
442
+ if (continuation && TENDER_EPROCEDURE_LINE_RE.test(joined) && !TENDER_TIME_PLACE_RE.test(joined)) {
443
+ drop(line, s => { s.tenderEprocedureLines += 1; });
444
+ drop(lines[nextIdx], s => { s.tenderEprocedureLines += 1; });
445
+ index = nextIdx + 1;
446
+ continue;
447
+ }
448
+ }
449
+ }
427
450
  }
428
451
  // 6. 补疑文件:零信息回复行(行级,长度 ≤25 且无数字/单位)
429
452
  if (docKind === 'clarification' && trimmed.length <= 25 && CLARIFICATION_BOILERPLATE_RE.test(trimmed) && !/\d/u.test(trimmed)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customize-agent/knowledge",
3
- "version": "4.3.3",
3
+ "version": "4.3.4",
4
4
  "description": "Local knowledge base infrastructure for customize-agent",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",