@customize-agent/knowledge 4.3.0 → 4.3.2

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,9 @@ function collectTenderFormatBlock(lines, start) {
109
109
  /** 招标文件:泛化引用行("详见投标人须知前附表"类短行,无实质项目信息;后缀短语可选) */
110
110
  const TENDER_GENERIC_LINE_RE = /^(详见|具体见|以|按).{0,30}?(前附表|招标文件|招标公告|补疑|澄清|清单|图纸|合同文件)((的)?(要求|规定|为准|执行))?[。;;]?$|^投标人应(仔细|认真)(阅读|核对)(招标文件|本项目)(的全部内容)?[。;;]?$|^未(按|依照|按照)(上述|本|招标文件)要求/u;
111
111
  /** 招标文件:电子投标程序句(行级)。投标人须知条目式排版无可靠段落边界,按句删除
112
- * 程序性操作(加密/解密/上传/撤回/签号/病毒防范);双重信号(程序动词 + 程序对象)
113
- * 防止误删技术条款。仅招标文件生效。 */
114
- const TENDER_EPROCEDURE_LINE_RE = /(?:电子交易系统|数字证书|加密|解密|撤回操作|上传投标文件|签号|病毒防范).{0,30}(?:上传|递交|撤回|解密|完成|显示|关闭|发放|防范)|(?:投标截止时间).{0,25}(?:上传|递交|撤回|自动关闭)/u;
112
+ * 程序性操作(加密/解密/上传/撤回/签号/病毒防范/获取/发布/提出/发出/发送/下载/拒收);
113
+ * 双重信号(程序动词 + 程序对象)防止误删技术条款。仅招标文件生效。 */
114
+ const TENDER_EPROCEDURE_LINE_RE = /(?:电子交易系统|数字证书|加密|解密|撤回操作|上传投标文件|签号|病毒防范).{0,30}(?:上传|递交|撤回|解密|完成|显示|关闭|发放|发送|防范|获取|发布|提出|发出|下载|拒收|查看|接收)|(?:投标截止时间).{0,25}(?:上传|递交|撤回|自动关闭)/u;
115
115
  /** 补疑文件:零信息回复行("答:按招标文件执行"类套话;含数字/单位的实质回复不删) */
116
116
  const CLARIFICATION_BOILERPLATE_RE = /^(?:(?:答|答复|回复)[::]\s*)?(?:按|以)(招标文件|招标公告|合同文件|清单|图纸|补疑|答疑)?(约定|规定|要求|执行|为准)[。;;]?$|^(?:(?:答|答复|回复)[::]\s*)?不(作|做|予)(调整|修改|变更)[。;;]?$|^(?:(?:答|答复|回复)[::]\s*)?维持(不变|原状)[。;;]?$|^(?:(?:答|答复|回复)[::]\s*)?(本项|此项)(无|没有)(调整|修改|变化)[。;;]?$/u;
117
117
  /** 图纸:无汉字纯坐标数字行(≥2 组相邻 "数字,数字" 坐标对即 ≥3 个连续坐标值,设计坐标不写入施组正文) */
@@ -324,7 +324,11 @@ export function cleanExtractedText(input) {
324
324
  return { text: input.text, removedChars: 0, removedLines: 0, stats: zeroStats() };
325
325
  const docKind = detectDocKind(input.fileName || '', input.text.slice(0, 4000));
326
326
  const isCad = input.category === 'cad' || input.category === 'diagram';
327
- const lines = input.text.split(/\r?\n/u);
327
+ // CAD 控制码还原前置:确定性无损替换(%%U/%%O 格式开关删除、%%%→%),
328
+ // 不参与行级启发式删除与 30% 回退保护——纯图纸文件(标高/图元行占比高)常触发
329
+ // 回退保护使整个清洗作废,控制码还原若挂在行级规则里会随之失效
330
+ const sourceText = isCad ? cleanCadControlCodes(input.text) : input.text;
331
+ const lines = sourceText.split(/\r?\n/u);
328
332
  const totalLines = lines.length;
329
333
  // 全文高重复行统计(页眉/页脚/图框标题栏判定依据)
330
334
  const lineCounts = new Map();
@@ -451,10 +455,7 @@ export function cleanExtractedText(input) {
451
455
  index += 1;
452
456
  continue;
453
457
  }
454
- // 11. 图纸:CAD 文本格式控制码还原(%%U/%%O 格式开关删除、%%D/%%P/%%C 符号映射、
455
- // %%% 百分号转义「95%%%」→「95%」;还原后行保留,仅替换字符)
456
- const keptLine = isCad && CAD_CONTROL_CODE_RE.test(line) ? cleanCadControlCodes(line) : line;
457
- kept.push(keptLine);
458
+ kept.push(line);
458
459
  index += 1;
459
460
  }
460
461
  const resultText = kept.join('\n');
@@ -462,13 +463,14 @@ export function cleanExtractedText(input) {
462
463
  // 1) 行级启发式删除导致剩余不足原文 30% → 判定误伤,回退原文;
463
464
  // 2) K2 章节级删除(标题 + 规模/内容 + 边界三重证据)置信度高,不参与 30% 判定,
464
465
  // 否则通用条款占比高的合同文件永远洗不掉;但剩余不足原文 10% 时仍整体回退(防极端全删)
465
- const totalChars = input.text.trim().length;
466
+ // 回退时返回 sourceText(已做 CAD 控制码还原),保证确定性还原在回退路径同样生效
467
+ const totalChars = sourceText.trim().length;
466
468
  const remainingRatio = totalChars > 0 ? resultText.trim().length / totalChars : 1;
467
469
  const lineLevelRemovedChars = removedChars - sectionRemovedChars;
468
470
  const lineLevelSafe = lineLevelRemovedChars === 0 || remainingRatio >= 0.3;
469
471
  const extremeSafe = remainingRatio >= 0.1;
470
472
  if (removedChars > 0 && totalChars > 2000 && (!lineLevelSafe || !extremeSafe)) {
471
- return { text: input.text, removedChars: 0, removedLines: 0, stats: zeroStats() };
473
+ return { text: sourceText, removedChars: 0, removedLines: 0, stats: zeroStats() };
472
474
  }
473
475
  return { text: resultText, removedChars, removedLines, stats };
474
476
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customize-agent/knowledge",
3
- "version": "4.3.0",
3
+ "version": "4.3.2",
4
4
  "description": "Local knowledge base infrastructure for customize-agent",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",