一、本周工作概述

本周的开发重点从“通用AI助手链路验证”推进到“合同业务功能落地”。在第三周已经完成 Sophnet DeepSeek-V4-Flash 模型接入的基础上,本周主要围绕模板管理模块和智能生成合同模块展开开发,实现了从模板维护、字段配置、模板发布,到用户选择模板并调用大模型生成合同草案的完整业务闭环。

本周完成的主要工作包括:

  1. 完成模板管理第一阶段功能,包括模板列表、详情、新增、编辑、删除和发布。
  2. 完成模板字段配置功能,支持为不同合同模板配置动态字段。
  3. 完成智能生成合同页面,用户可以选择已发布模板,填写甲乙方、金额、日期和模板特有字段。
  4. 完成后端合同生成服务,支持读取模板内容、字段配置、用户输入和知识库参考文本,统一组装 Prompt。
  5. 复用第三周已完成的 AiChatService,新增业务 Prompt 调用能力,完成合同生成大模型调用。
  6. 完成生成结果落库,包括合同主数据、合同字段值和初始合同版本快照。
  7. 修复 Spring MVC 参数名解析问题,开启 Maven -parameters 编译参数,并显式声明接口参数名。
  8. 更新项目架构文档、数据库文档、开发文档、流程图文档、接口文档和 README。

二、模板管理模块实现

模板管理模块是智能合同生成的基础。本周将原先的静态占位页面改造为真实业务页面,前端通过 frontend/src/api/template.ts 统一封装模板接口,页面层使用 TemplateView.vue 实现模板查询、编辑弹窗、字段配置表格和发布操作。

后端新增 TemplateService,将模板业务逻辑从 Controller 中拆出。当前模板保存逻辑采用“模板主表 + 字段配置表”的方式:先保存 contract_template,再根据模板 ID 重建 contract_template_field。这样做的好处是结构清晰,模板正文、生成规则和动态字段可以分开维护。

字段配置的核心作用是定义“模板特有变量”。例如保密协议模板中的 projectName 表示项目名称,confidentialityPeriod 表示保密期限。这些字段会在智能生成页面自动渲染为表单项,并在生成合同时随 fields 一起传到后端。字段编码需要与模板正文中的占位符保持一致,例如模板正文写 {{projectName}},字段配置中也必须使用 projectName。

三、智能合同生成链路

本周完成了智能合同生成的第一阶段实现。用户在合同生成页面选择已发布模板后,前端会调用模板详情接口,加载模板正文、Prompt 模板和字段配置。用户填写基础合同信息后,前端调用:

POST /api/contract/generate

请求中包含 templateId、合同名称、分类、甲方、乙方、金额、起止日期、动态字段 fields、知识库参考内容 knowledgeText 和额外生成要求 extraRequirement。

后端通过 ContractGenerateService 统一编排生成流程:读取模板、校验发布状态、加载字段配置、校验必填字段、组装 Prompt、调用大模型、保存合同结果。核心调用关系可以概括为:

String userPrompt = promptBuilder.build( template, templateFields, request.fields(), request, knowledge, request.extraRequirement() );

这里的 ContractPromptBuilder 是本周的关键设计点。它负责把模板正文、模板生成规则、合同基础信息、动态字段、知识库文本和额外要求整合成最终发给模型的 Prompt,避免 Prompt 拼接逻辑散落在 Controller 或 Service 中。

四、模板占位符与字段配置理解

本周联调中发现一个重要问题:合同生成页面填写的甲方、乙方、金额、日期虽然保存到了合同主表,但最初并没有进入 Prompt,导致模型生成结果中仍然出现【待补充】。排查后明确了字段来源需要分层处理:

  1. 甲方、乙方、金额、开始日期、结束日期属于合同基础字段。
  2. 项目名称、保密期限、管辖法院等属于模板特有字段。
  3. 基础字段和模板字段都必须进入 Prompt。
  4. 模板正文中的占位符应当被明确替换或提示模型替换。

因此本周对 Prompt 组装逻辑进行了修正,支持 {{partyA}}、${partyA}、【partyA】 等占位符格式。推荐模板写法如下:

甲方(披露方):{{partyA}} 乙方(接收方):{{partyB}} 鉴于甲乙双方正在就{{projectName}}进行合作……

这样既能保证模板可读性,也方便后续扩展更多合同类型。

五、数据落库与版本快照

本周生成合同后不再只是前端展示结果,而是完成了基础落库。contract_info 保存合同主数据,例如合同编号、合同名称、模板 ID、甲乙方、金额和日期;contract_field_value 保存模板动态字段值;contract_version 保存 AI 生成的合同正文快照,当前生成初稿的 source_type 为 generate,版本号为 1。

虽然本阶段暂不实现模板版本管理,但已经保留了合同版本快照能力。这为后续合同编辑、历史版本查看、版本对比和回滚提供了基础。

六、问题修复与阶段总结

本周还解决了一个 Spring Boot 常见问题:运行时报错提示无法通过反射获取参数名。原因是项目编译时没有保留 Java 方法参数名。最终采用两种方式兜底:一是在 Maven 编译插件中开启 -parameters,二是在 Controller 的 @RequestParam 和 @PathVariable 中显式写明参数名。这样后续接口更稳定,不依赖单一编译配置。

本周完成后,智契通已经具备一个可演示的核心业务链路:管理员维护模板,发布模板;业务用户选择模板,填写字段;后端调用大模型生成合同;系统保存合同草稿和版本。相比第三周只完成通用 AI 问答,本周已经把 AI 能力真正嵌入合同业务流程中。后续可以继续扩展知识库检索、生成记录追踪、模板版本管理、风险审查和摘要润色模块。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐