Files
agent_jrxml/data/sample_templates/report_with_summary.jrxml
panda 4b43c5d3e4 feat: LangGraph工作流核心 — Agent状态/节点/图 + 验证服务 + 知识库
agent/
  state.py: AgentState TypedDict(20字段含意图/压缩/会话/撤销)
  nodes.py: 17个节点函数(生成/修改/验证/纠错/意图分类/压缩/撤销/重置)
  graph.py: 17节点状态图,8意图路由分发

验证服务 validation_service/
  main.py: FastAPI服务,lxml XSD验证 + 结构化检查(字段引用/SQL/尺寸)

数据 data/
  sample_templates/: 4个JRXML示例模板
  corrections/: 3个错误修正案例

脚本 scripts/
  init_kb.py: Chroma知识库初始化
2026-05-14 23:21:10 +08:00

90 lines
4.1 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<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"
name="SalesSummary" pageWidth="595" pageHeight="842" columnWidth="555"
leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<queryString>
<![CDATA[SELECT department, total_sales, employee_count FROM dept_summary ORDER BY total_sales DESC]]>
</queryString>
<field name="department" class="java.lang.String"/>
<field name="total_sales" class="java.math.BigDecimal"/>
<field name="employee_count" class="java.lang.Integer"/>
<variable name="grand_total" class="java.math.BigDecimal" calculation="Sum">
<variableExpression><![CDATA[$F{total_sales}]]></variableExpression>
</variable>
<variable name="total_employees" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[$F{employee_count}]]></variableExpression>
</variable>
<title>
<band height="60">
<staticText>
<reportElement x="0" y="10" width="555" height="30"/>
<textElement textAlignment="Center">
<font size="16" isBold="true"/>
</textElement>
<text><![CDATA[Department Sales Summary]]></text>
</staticText>
</band>
</title>
<columnHeader>
<band height="25">
<staticText>
<reportElement x="0" y="0" width="200" height="20"/>
<textElement><font isBold="true"/></textElement>
<text><![CDATA[Department]]></text>
</staticText>
<staticText>
<reportElement x="210" y="0" width="170" height="20"/>
<textElement textAlignment="Right"><font isBold="true"/></textElement>
<text><![CDATA[Total Sales]]></text>
</staticText>
<staticText>
<reportElement x="390" y="0" width="165" height="20"/>
<textElement textAlignment="Right"><font isBold="true"/></textElement>
<text><![CDATA[Employee Count]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA[$F{department}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="210" y="0" width="170" height="20"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[$F{total_sales}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="390" y="0" width="165" height="20"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[$F{employee_count}]]></textFieldExpression>
</textField>
</band>
</detail>
<summary>
<band height="40">
<line>
<reportElement x="0" y="0" width="555" height="1"/>
</line>
<staticText>
<reportElement x="0" y="5" width="200" height="20"/>
<textElement><font isBold="true"/></textElement>
<text><![CDATA[Grand Total]]></text>
</staticText>
<textField>
<reportElement x="210" y="5" width="170" height="20"/>
<textElement textAlignment="Right"><font isBold="true"/></textElement>
<textFieldExpression><![CDATA[$V{grand_total}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="390" y="5" width="165" height="20"/>
<textElement textAlignment="Right"><font isBold="true"/></textElement>
<textFieldExpression><![CDATA[$V{total_employees}]]></textFieldExpression>
</textField>
</band>
</summary>
</jasperReport>