[Day3] 模块定义和功能边界
本文介绍了合同管理系统的模块化设计,包含8个核心模块:合同管理模块负责合同上传与条款提取;智能审查引擎处理任务编排与规则执行;通用依赖模块提供多服务通信支持;鉴权模块基于若依框架开发实现权限控制;错误管理模块统一异常处理;网关模块作为系统入口提供安全控制;存储模块专注于文档加密存取;AI集成模块通过策略模式对接多种大模型API。各模块职责明确,采用微服务架构设计,共同构建了完整的合同智能管理系统,
合同管理模块 contract-management
功能:合同上传、类型识别、条款提取、附件管理
需求:处理合同相关配置的所有事务。
设计:合同管理模块包括rule、contract、prompt三部分作为内部逻辑,其他能力均为外部提供。
智能审查引擎 contract-review-engine
功能:任务编排、大模型调用、规则执行
需求:支持多种任务进行流转、支持一定程度上较为便捷的侵入式流程编排、追踪任务状态,总体负责合同审查任务的执行、管理和监控。
设计:设计状态机、定义状态枚举、通过定时任务进行状态流转,任务通过模板模式进行动作控制,通过任务executor定义执行器。
核心职责:
- 任务生命周期管理(创建、执行、监控、重试)
- 合同文本提取和预处理
- 条款识别和结构化处理
- 审查规则引擎执行
- 审查结果生成和存储
- 操作日志记录和审计
通用依赖模块 contract-common
功能:多服务通信Feign和相关传输类、通用工具类
需求:解耦management和engine的通用entity定义jar
设计: 只存放feign接口和相关定义的dto,其他domain实体都遵循"谁拥有数据,谁管理数据"的规范。controller具体实现和domain实体都在各自模块内,对外暴露的都是经过允许的dto。
实际只存储了dto(feign专用)、constant、controller
鉴权模块 contract-security-ruoyi
功能:远程鉴权、角色管理、权限管理,基于ruoyi-vue springboot3分支开发。
需求:为其他所有模块提供接口粒度的权限认证,下游引用相关依赖即可,使用注解和配置项即可,不需要代码配置。
设计:二次开发若依项目,增加ruoyi-feign模块,其中提供注解和Spring EL表达式,用法和原先若依的注解保持一致,整个用户系统由若依管理。
错误管理模块 contract-exception-handler
功能:全局错误捕获、错误日志记录、错误码管理
需求:提供统一的异常捕获和通用的ErrorCode,每个服务只需要引用这个包就可以进行异常处理,而且可以继承ErrorCode来实现自己的异常代码。
设计:
- 提供跨微服务的统一异常处理机制
- 标准化错误响应格式
- 简化各服务的异常处理逻辑
网关模块 contract-gateway
功能:限流、缓存、幂等控制、简单认证
需求:所有请求都会从这里过,并且会提供防火墙的功能,进行黑白名单筛选、url规则管理、简单的认证(例如token存在性校验)、一级缓存
设计:
- 统一入口
作为所有外部请求的唯一入口点
前端应用只需与网关交互,无需知道后端具体服务地址 - 请求路由与负载均衡
根据请求路径将流量分发到相应的微服务
实现服务间的负载均衡 - 安全控制
认证授权验证
API密钥管理
防止未授权访问 - 流量控制
限流保护(防止单个服务被过度请求)
熔断机制(服务故障时快速失败) - 错误处理 (在contract-exception-handler中实现)
统一错误码返回格式
异常统一处理 - 性能优化(暂未实现)
响应缓存(减少重复请求)
请求压缩
幂等控制(防止重复操作) - 监控与日志(暂未实现)
请求链路追踪
访问日志记录
性能指标收集
存储模块 contract-file
功能:文档存储、元数据、加密存取
需求:需要多种存取模式,脱离业务专注于存储。
设计:基于DDD架构的微服务设计,提供FileClient SDK和REST API双重接口,支持URL和UUID两种文件访问模式,可以自定义密钥进行加密存取,也可借助MinIO使用相关能力。
AI集成模块 contract-ai
功能:大模型适配、格式转换、第三方集成
需求:提供大模型能力接口,这个能力必须让模型代码和配置参数完全解耦。
设计:通过策略模式对接了GLM、IFLOW、DeepSeek三种API,并且各自对接了对话、图文、文件对话API。
下回预告
明天让我们稍微回溯一下时间线,来到模块设计之前,来看看有哪些设计需要做的事情。
更多推荐


所有评论(0)