Commit Graph

259 Commits

Author SHA1 Message Date
TanWenyan aec34d139a fix(frontend): comprehensive defensive guards in ReviewSettings
Multiple locations in ReviewSettings.tsx call .includes() or .filter()
on variables that could theoretically be non-arrays:

1. availableFields.filter/.includes - added safeAvailableFields guard
2. newFields.map field.includes('_') - added typeof===string guard + filter
3. (prior fix) cfgAvailableFields includes/every in renderRuleConfig
4. (prior fix) selectedFields includes in renderFieldTags

These prevent TypeError crashes when config objects contain unexpected
types (e.g. {} instead of []) from stale API data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 17:29:21 +08:00
TanWenyan 804e24eff9 fix(frontend): guard availableFields.includes in renderRuleConfig
config.availableFields may be undefined or a non-array value (e.g. {}),
causing TypeError when calling .includes/.every directly on it.
Precompute cfgAvailableFields with Array.isArray guard before use.

Fixes: N.includes is not a function on rules/new page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 17:04:10 +08:00
TanWenyan a8949d9abf fix(frontend): guard against non-array selectedFields in renderFieldTags
When config.fields is a non-array value (e.g. empty object {}),
the fallback logic could still result in a non-array if both
config.fields and config.selectedFields are abnormal values.
Added double-guard: after the fallback chain, explicitly assert
Array.isArray before using selectedFields.includes().

Fixes: TypeError: _.includes is not a function on rules/new page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 16:59:24 +08:00
TanWenyan d226ada0fe fix(ui): use inline style for multi-entity green background to override ant-btn
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 20:25:03 +08:00
TanWenyan 623cf8c427 fix(ui): match extraction field chips with review settings style, green only for multi-entity
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 20:20:32 +08:00
TanWenyan 9d6a5364bb fix(ui): use inline tailwind for field chips instead of scoped CSS class
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 20:16:59 +08:00
TanWenyan 95351893c6 fix(ui): compact multi-entity field chips to match tag-button size
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 20:04:21 +08:00
TanWenyan bc3e26c93e feat(frontend): field-level multi_entity toggle in extraction settings
- evaluation_points.ts: LLMFieldConfig type, LLMFieldType union,
  VLMField.multi_entity
- ExtractionSettings.tsx:
  - LLM fields render as colored buttons (green=multi_entity, gray=normal)
  - Click to toggle individual field multi_entity when switch is on
  - Toggle switch on: converts all string fields to {name, multi_entity:true}
  - Toggle switch off: converts back to plain strings
  - New fields default to multi_entity:true when switch is on

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 19:34:45 +08:00
TanWenyan 7ad9e479cd fix: add pointCode to ReviewPointResult interface to survive build
Vite/Remix tree-shaking was stripping pointCode from the return object
because it wasn't declared in the ReviewPointResult interface.
Also removed debug console.logs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 20:33:38 +08:00
TanWenyan ca1cc23c99 debug: log all keys to find pointCode issue 2026-03-23 20:28:21 +08:00
TanWenyan 38a43133c0 debug: add server-side point.code logging and enlarge badge 2026-03-23 20:25:30 +08:00
TanWenyan daca126ee2 debug: add pointCode fallback and console log 2026-03-23 20:11:53 +08:00
TanWenyan 2fe773909e feat(ui): display evaluation point code and support code search
- Add pointCode field to ReviewPoint interface and data pipeline
- Show code badge (e.g., JZ-DJ-001) before evaluation point name
- Search bar now matches against point code in addition to name
- Updated placeholder to indicate code search support

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 20:02:35 +08:00
TanWenyan 13e16f4046 fix(ui): increase table tooltip max height to 80vh
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 19:51:02 +08:00
TanWenyan 9f9cfea0e6 fix(ui): dynamic tooltip width/height based on table dimensions
Table tooltip now calculates maxWidth from column count (140px/col,
min 400, max 85vw) and maxHeight from row count (30px/row, min 150,
max 70vh) for better readability of large tables.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 19:48:53 +08:00
TanWenyan cbe9a0f74e fix(ui): show table summary with hover tooltip for full table view
Table fields now show a compact summary (first row preview + table icon)
with the full rendered table appearing on hover via Tooltip component,
consistent with the existing overflow tooltip behavior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 19:45:00 +08:00
TanWenyan 93b8673363 fix(ui): handle single-line markdown tables and pipe-delimited tables
- parseMarkdownTable now handles tables stored as single line by
  counting columns from separator row and grouping cells accordingly
- Added isPipeTable detection for pipe-delimited data without header
  (e.g., "1 | name | qty\n2 | name | qty")
- Added renderPipeTable for headerless pipe tables

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 19:30:44 +08:00
TanWenyan d0124b0121 feat(ui): support markdown table rendering in evaluation field values
ReactTableTooltip now detects and renders markdown tables (| delimited)
in addition to existing tab-delimited tables. Table content is rendered
directly as an HTML table instead of showing raw markdown text.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 19:19:53 +08:00
DocAuditAI Dev ebcaf05625 revert: reset to 32bee87 for clean text_bbox baseline
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 18:14:11 +08:00
LiangShiyong 702b7d3e3a fix: 修复甲方和乙方的公司名称是用第一个key内的value值来进行查询。 2026-03-23 16:45:35 +08:00
LiangShiyong 519287c7f4 feat: 渲染大模型的评查结果也添加上true和false的判断 2026-03-23 16:45:35 +08:00
DocAuditAI Dev 33fbd6b860 feat(pdf): support GraphRAG text_bbox highlighting in PDF viewer
When documents are processed through GraphRAG pipeline, coordinate
enrichment produces text_bbox (paragraph-level coordinates) instead of
char_positions (character-level OCR coordinates). Added resolveCharPositions()
helper that converts text_bbox to CharPosition[] format, enabling PDF
highlight rendering for GraphRAG-processed documents.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 16:44:22 +08:00
TanWenyan 32bee87998 fix(reviews): show field value when res=false instead of showing '缺失'
Second rendering path (entity fields) incorrectly hid values when
res=false, showing '缺失' even for fields with extracted values.
Fixed to match first rendering path: only show '缺失' when both
res=false AND value is empty. Values always display when present.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 01:05:48 +08:00
TanWenyan c0f8004278 feat(reviews): display not-applicable evaluation points in review list
- Create placeholder reviewPoints from not_applicable unified results
- Merge with existing reviewPoints for display
- Count notApplicable from reviewPoints for accurate statistics

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:29:48 +08:00
TanWenyan 0d8b9b1976 fix(reviews): make not-applicable button clickable with filter toggle
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:16:35 +08:00
TanWenyan b13e758db1 fix(reviews): map failed_count to warning, always show not-applicable badge
- failed_count should be 'warning' not 'error' for scored eval
- Show '未涉及' badge always, not only when count > 0

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:08:33 +08:00
TanWenyan 48f605a5c4 feat(reviews): add not-applicable count display in evaluation statistics
- Add notApplicable field to Statistics interface
- Show blue "未涉及" badge when count > 0 (display only, no filter)
- Map backend not_applicable_count to frontend statistics

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:27:41 +08:00
TanWenyan 306cb24c70 feat(frontend): integrate GraphRAG scored evaluation results
- Add getUnifiedEvaluationResults API function
- Extend ReviewPointsListProps with flowType, scoredResults, scoredSummary
- Add ScoredResultCard rendering for graphrag flow_type
- Modify reviews.tsx loader to call unified API
- Add scored evaluation component imports

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 09:42:30 +08:00
TanWenyan 11c00d34bc fix(ReviewPointsList): 读取后端传入的 per-field res 替代前端自行判定
renderModelRule 对 AI 评查点的 res 计算改为优先使用后端写入
config.fields[key].res 的值,fallback 到原来的 value 非空判定。

解决了评查点不通过但所有细项都显示绿色的问题。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 15:50:12 +08:00
LiangShiyong b97d0e1a0b 1. 登录返回总公司,分公司,部门信息。
2. 修改角色权限管理的分配用户的数据渲染和接口。
3. 交叉评查任务的创建的组织架构组件的重构。
2026-01-21 10:04:04 +08:00
LiangShiyong 9951f16e50 1.同步包版本。
2.交叉评查的任务中上传文件。
3.添加dify库名解决保存配置失败的问题。
2026-01-20 17:29:55 +08:00
LiangShiyong 1fca1a2e2e 1. 添加新的正式环境的secret配置信息。
2. 动态回调地址,如果是钉钉应用则用对应的回调地址。
3. 高频错误评查点改成显示出错次数。
4. 添加开关的通用组件,评查点列表方便修改状态。
2026-01-19 16:22:21 +08:00
LiangShiyong e332d05e5d 评查点规则编辑中添加多实体开关控制。
修复文档类型删除失败的bug
2026-01-16 10:11:53 +08:00
LiangShiyong ea896f98fd 添加开关组件,在评查点规则列表中添加单个状态控制的开关 2026-01-16 09:59:38 +08:00
LiangShiyong ae89b377b7 添加甲方,乙方的企查查入口按钮 2026-01-16 09:52:11 +08:00
LiangShiyong 66d2f7cef4 1.添加移动端用户的检测工具类,移动端用户只能访问对话页面。
2.评查点列表添加文档属性类型字段。
3.优化dify的对话侧边栏的显示效果。
4.评查点规则添加使用文档属性类型的输入框。添加多实体开关的操作开关。
2025-12-30 18:35:48 +08:00
LiangShiyong 616f059f1e feat: 1. 完善评查点分组的删除逻辑,会涉及文档类型绑定的一级分组,分组绑定的评查点规则。新增一个评查点分组换绑的。
2. 修复交叉评查的任务中的文档列表的历史文档的查看跳转路径。
3. 修复评查点新增中评查点类型只能显示当前文档类型绑定的这几个一级分组。评查点类型=一级分组。
4. 修复文档列表关于pdf的下载失败的问题。
2025-12-19 00:21:49 +08:00
LiangShiyong 6fa65ff156 fix: 1. 优化collabora的高亮效果,不固定主要页面。
2. 优化评查结果中的下载按钮,如果加载docx文件的话需要先保存再下载。
3. 交叉评查结果中添加返回按钮,并实现打开对应的任务的文档列表。
4. 文档类型的添加,添加绑定合同管理为入口的时候文档类型名称必须是要附带‘合同’字符。
2025-12-17 01:09:23 +08:00
LiangShiyong d04882bf51 1. 开启交叉评查的显示/隐藏(开启生产环境的配置),优化不同端口的显示/隐藏交叉评查入口的效果。
2. 优化评查结果的AI建议修改的文本输入框的显示效果。
3. 提交17正式环境的api-config.ts,备份一个wafIP的配置api-config-wafIP.ts。
2025-12-16 17:47:15 +08:00
LiangShiyong 0aa75c6ffb 修改企查查使用真实的接口 2025-12-15 15:19:26 +08:00
LiangShiyong 1658bb1c6f feat: 1. 重构交叉评查任务的文档列表的显示,对接接口查询当前任务的文档相关信息。
2.文档上传通过接口去查询是否存在同名的文件,做上传前拦截提示。
3.交叉评查的评查结果也同步添加企查查的企业信息查询模块。
4. 封装上传附件和上传模板的模态框的组件,在交叉评查的文档列表中引入显示。
5. 交叉评查的评查结果中关于合同类型的文档同步加入结构比对的功能。
2025-12-13 07:18:37 +08:00
LiangShiyong daa53289af feat: 1. 添加企查查的按钮。新增相关组件和对接接口进行显示。
2. 为51707端口添加只存在交叉评查入口的项目启动配置。入口页添加相关的区分。
3. 完善文档列表的权限功能控制。
4. 隐藏系统概览中高风险用户的统计模块。
fix: 1. 修复合同起草无权访问却生成了新的模板文件的问题。
2. 修复文档类型无法编辑入口模块的问题。
2025-12-13 02:59:34 +08:00
LiangShiyong 5c47b20e1d fix: 1.修复评查结果中的法典的显示样式 2025-12-12 16:18:21 +08:00
LiangShiyong 847f7b2b5a feat: 1. 添加交叉评查中的相关页面的按钮与权限的绑定控制。 2. 完善权限校验的hook函数,添加指定的交叉评查的相关的权限。
fix: 1. 修复交叉评查中无法高亮文档的问题。
2025-12-12 16:10:05 +08:00
LiangShiyong d4000cd292 fix: 1. 继续对齐交叉评查的接口,完善创建交叉评查的逻辑 和 相关组件的渲染布局。
2. 文档的基本信息修改改用接口。      3. 重新完善角色权限管理的页面逻辑。     4.将评查点列表中的返回逻辑改用浏览器的记忆返回。
2025-12-12 12:00:36 +08:00
PingChuan 38c57f7acc feat:dify聊天页面接入消息反馈、复制功能 2025-12-10 21:57:43 +08:00
LiangShiyong ba517d7b9c fix:修复前端路由权限校验。修复交叉评查与普通评查结果的ai建议的替换效果不一致。 2025-12-10 09:10:57 +08:00
LiangShiyong ad3f244a1b Merge branch 'PingChuan' into shiy-login 2025-12-09 21:05:01 +08:00
LiangShiyong e82e61b589 feat: 1. 添加morgan这个web中间件去接收记录所有的http请求。
2. 更改打包配置文件,服务的启动由remix/server改成自定义server.js(Express服务器+morgan中间件:记录http日志)
2025-12-09 21:04:37 +08:00
PingChuan d60405ceda fix:修复Collabora组件高亮传入页码时失效的问题,增强两种高亮方法的兼容性 2025-12-09 17:56:45 +08:00