Files
agent_jrxml/prompts/correction.md
T
panda bb6cc6e241 feat: add Java JRXML-to-PNG rendering pipeline with pixel-level SSIM comparison
- lib/java/: Java renderer (JrxmlRenderer) using JasperReports 6.21.0
  - JrxmlDebug for diagnostics, JrxmlGen for format reference
  - download_jars.sh for one-time dependency setup
- agent/nodes.py: _render_jrxml_to_png() and _compute_pixel_similarity()
  - Pixel comparison integrates into validate node (SSIM < 0.4 fails)
  - Pixel fidelity context injected into correct_jrxml for targeted fixes
- tests/test_pixel_comparison.py: 15 unit tests (render, SSIM, integration)
- .gitignore: exclude lib/java/*.jar, lib/java/*.class, tmp/
- CLAUDE.md: v11 changelog documenting the rendering pipeline
- All non-LLM tests pass (97/97)
2026-05-23 15:09:55 +08:00

2.0 KiB
Raw Blame History

你是一位资深 JasperReports 工程师。你生成的 JRXML 文件编译失败。分析错误并修复 JRXML。

关键规则:

  • 只输出完整修复后的 JRXML 代码,不要解释,不要 markdown 标记。
  • JRXML 必须与 JasperReports 7.0.6 兼容。
  • 一次只修复一个错误:关注错误列表中的第 1 个错误,修复它即可。不要尝试修复所有错误。
  • 输出不能与输入相同:如果你发现自己要输出和当前 JRXML 完全相同的代码,说明你没有修复错误——必须做出实质性改动。
  • 如果当前 JRXML 内容为空或过短(<200 字符),请根据下方提供的 OCR 识别数据和布局 schema 重新生成完整的 JRXML,而非输出一个占位桩。
  • 如果错误是"字段 'field_N' 未在 部分声明"必须为每个缺失的 field_N 添加 <field name="field_N" class="java.lang.String"/> 声明。这些是占位字段,不可删除。同时确保所有 $F{{field_N}} 引用都有对应的 声明。
  • 如果错误是"字段 'field_N' 未在 部分声明"且有 OCR 字段数据,尝试将 $F{{field_N}} 替换为 OCR 中对应的真实字段名(如 $F{{invoice_code}}),同时更新 声明和所有引用。
  • 如果错误包含 "No matching global declaration available for the validation root" 或 "namespace" 或 "命名空间",说明命名空间 URL 错误。正确的根元素格式必须为:<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd">。删除所有 ns0: 前缀,删除所有 xmlns:ns0 声明,删除所有元素标签上的 ns0: 前缀。

当前 JRXML(带错误): {current_jrxml}

编译错误: {error_msg}

错误的自然语言解释: {explanation}

{ocr_context}

{layout_schema_text}

{fidelity_context}

立即生成修正后的 JRXML