ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SpringCloud+Layui+AI:智能政务微服务审批系统架构设计与实践

SpringCloud+Layui+AI:智能政务微服务审批系统架构设计与实践 基于SpringCloudLayuiAI的智能政务微服务审批管理系统我先把结论放在前面这是一个很适合做计算机毕业设计的选题因为一条线就能把微服务架构、审批工作流、AI大模型集成全部串起来。但也是因为它跨了三个技术方向很多同学做得一半就卡住每个技术都能讲一点合在一起不知道边界在哪里。下面我会把它当成一个真实项目来拆而不是一个PPT标题。先看清楚政务审批到底要处理什么再拆微服务边界然后讲工作流怎么接最后说AI能力应该放在哪个环节、怎么验证、怎么应对答辩追问。如果你是准备做这个选题或者已经在开发中按下面这个顺序看会比较顺。1. 先看清楚这套系统要解决什么问题1.1 政务审批场景的典型流程政务审批系统不只是信息管理系统它有一个很明显的业务特征流程固定、材料多、留痕要求高。一个常规审批单从提交到办结通常要经过“申请人填写→窗口受理→科室初审→分管领导审批→办结归档”几个环节。中间还会出现材料不齐需要补正、领导出差需要转办、多人会签等各种分支。如果只用普通CRUD页面去实现表面上也能做。但真正的问题是每个审批单当前在哪个节点、谁办过、卡在谁手里、历史意见去哪查。这些信息一旦散落在多张业务表里查询和统计会特别痛苦。所以工作流引擎在这里不是锦上添花而是核心支撑。从毕业设计的角度看这个场景的优势在于业务明确、过程可演示、数据关系清楚。评审老师不需要太多背景说明就能理解你在做什么这点比很多“看着很炫但是讲不清用途”的选题强很多。1.2 用微服务和AI分别解决哪些问题微服务解决的是系统结构问题。政务审批系统通常需要用户权限、审批业务、流程引擎、附件存储、消息通知等多个模块。如果全部写在一个单体项目里功能多起来之后编译慢、启动慢、多人协作容易冲突。拆成微服务之后每个服务可以独立开发、独立部署、独立扩容。当然拆分的代价是服务间通信、配置管理、部署维护都变复杂。毕设范围不会太大一般拆五到七个服务就足够支撑演示。AI负责的是辅助层面的能力。比如用户填表时AI帮助检查材料是否齐全审核人打开待办时AI根据材料摘要生成一条拟办意见草稿遇到政策问题AI可以从文档库里检索答案。这些功能不改变审批的决策权但能明显提升系统的演示亮点和课题新颖度。这里要提前想清楚AI在政务场景里不是越自由越好而是越可控越好。评审老师很可能会追问这一点。AI生成的东西只能作为建议和草稿不能直接作为审批依据这个定位从一开始就要在设计和代码里体现。1.3 这个选题适合什么基础的人如果你已经掌握SpringBoot、MyBatis、MySQL并且能独立写出一个单体后台管理系统那做这个选题就属于“跳一跳能够到”的难度。SpringCloud你只需要把注册中心、网关、远程调用、配置中心这四件事跑通不需要把每个组件都研究到源码级别。Layui属于上手非常快的前端框架文档多、中文资料多、模板也多。如果你现在还不会SpringBoot建议先不要直接上微服务。先把单体版审批系统做出来再逐步拆分会比一开始就搭一堆服务容易得多。2. 技术选型拆解SpringCloud、Layui、AI、工作流各承担什么角色2.1 SpringCloud技术栈怎么选毕业设计建议走SpringCloud Alibaba这条线原因很直接国内资料多、中文文档多、老项目的踩坑记录也能搜得到。核心组件先用这四个Nacos注册中心加配置中心服务发现和配置管理都靠它默认端口8848。Gateway统一入口负责路由转发、跨域处理、登录鉴权校验。注意SpringCloud Gateway底层是WebFlux不要在网关里直接写业务逻辑。OpenFeign服务之间的远程调用比手动写RestTemplate更直观接口风格和本地方法调用接近。Sentinel限流和熔断。毕设阶段可以只做配置和简单演示不必把规则设计得太复杂。如果你的课题申报书里写的是SpringCloud而不是SpringCloud Alibaba也不要慌。微服务的大方向是一致的区别主要在组件选型。答辩时能说清楚“为什么选择Nacos而不是Eureka”反而比单纯会用一个框架更出彩。网关路由配置是一个很容易忽略的点。如果前端请求的接口路径和后端服务路由对不上会出现页面能打开但数据不加载的情况。建议提前整理一份路由表把每个接口前缀对应到哪个服务写清楚联调时能省大量时间。2.2 Layui的定位是后台管理界面Layui是一个轻量前端UI框架核心优势是表格、表单、弹窗这些后台管理页面需要的组件都有现成样式。它的定位就是“拿来就能用”。在毕设里Layui有两种接法。第一种是传统非前后端分离后端用模板引擎渲染页面Layui提供样式和交互。第二种是前后端基本分离前端静态页面放在独立目录通过Ajax调用后端接口。如果是从若依微服务版本起步直接沿用它的非前后端分离方式学习成本最低如果是自己从头搭项目根据自己熟悉程度选就行。很多同学纠结Layui是不是太旧。这里要分清Layui适合的是“后台管理系统”不是C端官网、移动端App。政务系统场景里后台管理界面追求清晰、可维护、权限控制方便Layui正好匹配。另外毕设重点在后端架构和业务流程前端能支撑演示即可没必要在React、Vue上额外投入大量时间。2.3 AI大模型在系统里的定位AI必须是辅助而不是决策主体。政务审批场景对准确性、可解释性、留痕要求非常高AI生成的内容如果直接作为审批依据风险很大。所以设计时一定要把AI模块封装成“AI辅助服务”输出只能是“建议”和“草稿”所有结果都要人工确认后才能写入正式数据。具体讲AI可以处理四类任务材料完整性预检对用户提交的申请表单做字段级检查提示缺失项。审批意见草稿根据当前材料摘要和流程信息生成拟办意见辅助审批人起草。政策知识问答把政策文档切块后做向量化存储通过RAG方式回答问题。相似案例检索根据当前审批单内容返回历史上相似案件的办理结果。这四个方向里材料预检和意见草稿最容易被评委看到效果因为演示路径短、结果直观。政策问答需要准备知识库和向量数据库工作量会明显增加时间紧可以不做。2.4 工作流引擎Activiti还是Flowable审批类系统离不开工作流引擎。常见的两个选择是Activiti和FlowableFlowable可以理解为Activiti的延续和分支在文档、API和维护活跃度上都更稳定一些。两者都遵循BPMN 2.0规范如果只是做常规审批核心API差别不会太大。还有一个关键点如果选择若依微服务版本作为基础它通常已经集成了Activiti或Flowable的二次开发模块包括流程设计器、流程管理、任务办理页面。你不需要从零写一套流程引擎只需要把业务表单和流程变量对接进去。这对毕业设计来说是很大的工作量节省但也意味着你要花时间搞清楚哪些模块代码能直接用、哪些需要改。3. 从数据模型到微服务拆分先搭骨架再写业务3.1 核心数据表与关系不管微服务怎么拆数据表要先行。这里列一个偏通用的表集合你可以根据业务调整数据域核心表作用系统域sys_user、sys_role、sys_menu用户、角色、菜单权限业务域biz_apply、biz_material、biz_opinion审批单主表、材料表、审批意见表流程域act_re_procdef、act_ru_task、act_hi_taskActiviti/Flowable引擎表辅助域ai_check_result、file_info、sys_logAI预检记录、附件、日志有一点要特别提醒不要把业务数据硬塞进流程引擎表。比如用户的姓名、材料清单、审批金额这些内容建议在业务表里管理。流程引擎的表只负责流程实例、任务节点、流程变量和历史记录。这样做的好处是后续你要做自定义查询、报表统计时不需要去理解引擎表的复杂结构。数据库设计时最好把所有建表语句整理成一个sql脚本按系统域、业务域、流程域分目录存放。答辩时老师如果问到数据库设计你可以直接展示表关系图比现场翻代码高效很多。3.2 微服务怎么拆针对政务审批场景推荐一个适合毕设的拆分方案gateway-service路由网关统一接收前端请求。auth-service登录认证、Token下发、用户权限查询。system-service用户、角色、菜单、部门管理。business-service审批单业务负责申请材料保存、业务状态流转、列表查询。workflow-service流程引擎封装启动流程、待办查询、任务审批、流程历史。ai-serviceAI辅助能力材料预检、意见草稿、知识问答。如果时间紧张file-service附件服务可以不单独拆放进business-service里。ai-service也可以作为可选服务只在需要演示AI功能时启动。服务数量控制在五到七个演示时启动顺序清晰答辩时也能讲得清楚。这里给一个判断标准如果一个模块没有独立部署、独立技术栈或独立扩展的需求就不要单独拆服务。强行把用户管理拆成两个服务只会增加服务间调用的复杂度答辩时反而很难自圆其说。3.3 服务间调用和数据一致性服务拆开后最大的问题是数据怎么保持一致。毕设阶段的一个常规做法是业务服务保存审批单后通过OpenFeign调用流程服务启动流程实例然后把流程实例ID回写到业务表。流程任务完成时通过消息或回调通知业务服务更新当前节点状态。这条链路最容易出问题的不是业务逻辑而是服务调用的超时和事务边界。在毕业设计里建议用“最终一致”的简化方案先保存业务数据再启动流程启动失败就把状态标记为“流程启动失败”由定时任务或人工修复不要强行要求跨服务强一致。演示时如果遇到偶发调用失败重新发起一次通常就能恢复。一个OpenFeign调用的典型写法可以参考FeignClient(name workflow-service) public interface WorkflowClient { PostMapping(/workflow/instances/start) R startProcess(RequestBody StartProcessDTO dto); }调用方注意三个点服务名要配正确路径要保持一致返回超时时间要调大一点。默认超时时间比较短启动流程时如果涉及多个节点判断很容易超时。4. 审批流程怎么做从流程定义到自定义查询4.1 流程模型与BPMN部署流程设计通常借助流程设计器完成也可以用Flowable提供的BPMN建模工具。一个最简单的政务审批流程模型包括这些节点开始事件用户任务窗口受理用户任务科室初审排他网关判断是否通过用户任务领导审批结束事件流程文件保存为XML后通过RepositoryService部署到引擎。部署成功后会生成流程定义ID发起审批时通过流程定义Key启动实例。流程示例简化版 发起申请 → 窗口受理 → 科室初审 → 领导审批 → 办结这里要注意流程Key的唯一性。改过一次流程定义后旧的任务如果没有跑完代码里按Key启动时用的还是最新版本。所以毕业设计中建议先设计好流程再开始联调不要一边改流程一边测试容易出现流程版本混乱。4.2 发起审批、办理任务、加签与驳回启动流程的代码思路比较简单ProcessInstance instance runtimeService .startProcessInstanceByKey(approve_flow, businessKey, variables);businessKey建议用业务表的主键ID这样可以通过流程实例反向找到审批单。办理任务时先查询当前用户拥有的任务列表然后对指定任务执行complete同时可以设置流程变量taskService.complete(taskId, variables);会签和多实例节点属于进阶功能。一个多实例节点可以让多个审批人同时收到任务所有人通过才继续。在毕设里可以作为加分项但优先级不高。驳回建议实现“退回到上一节点”或“退回到发起人”中的一种两种都做会显著增加边界判断。4.3 自定义查询怎么配合流程表这是“Activiti 自定义查询 微服务”这个组合里最容易被问到的点。审批系统的列表页通常要求按标题、状态、申请人、时间查询同时显示当前节点和办理人。流程引擎表里字段很多直接join会非常难受而且引擎表的结构和版本有关。更稳定的做法是维护一张业务表冗余状态。SELECT t.id, t.title, t.apply_user_id, t.current_node, t.status, t.create_time FROM biz_apply t WHERE t.status #{status} AND t.title LIKE CONCAT(%, #{keyword}, %) ORDER BY t.create_time DESC流程推进时无论经过哪个节点都把最新节点名称和办理人回写进biz_apply表。查询列表只查业务表点进详情时再通过流程实例ID查历史记录。这种“业务状态冗余”设计在中小型系统里非常实用答辩时遇到“为什么要冗余”的提问也能给出合理解释。4.4 会签、驳回、撤回的边界处理给一个务实建议毕业设计不用把审批操作做全但要把做过的操作讲清楚。会签适合多部门联合审批配置为多实例顺序或并行审批。驳回如果只做一种做“退回发起人”实现简单、演示直观。撤回只在流程未开始时允许发起人点击撤回后删除流程实例业务状态改回草稿。类似这种边界在论文里可以写成“功能设计适度取舍”在答辩时能体现你考虑过真实业务。不要把简单需求过度设计更不要让流程状态出现无法解释的值。5. AI能力落地材料预检、意见生成、语义检索怎么做5.1 先确认AI模块的定位AI在这个系统里最容易犯的错是把它做成一个独立的大杂烩页面比如“聊天机器人”和审批业务毫无关系。这样演示时评委看不懂论文也难写。更合理的做法是让AI嵌入到业务动作里点击“提交申请”前触发材料预检返回缺失项。打开待办任务时自动生成一条“拟办意见草稿”。在政策咨询页面输入问题返回文档段落和来源。这三个入口都绑定实际业务不用单独给AI设计演示剧本。后面会再讲具体怎么演示。5.2 本地部署大模型还是调用API在毕设阶段建议优先考虑API调用理由很直接开发速度快、不依赖本地显存、调试方便。调用时把API密钥放到Nacos配置中心不要写死在代码里更不要提交到Git仓库。如果你的环境有独立GPU可以尝试本地部署参数量在7B到14B的开源模型。部署成本可以参考下面这个判断方案需要的条件适合场景调用大模型API网络、API密钥、有预算毕设演示、快速开发本地部署开源模型有GPU显存尽量16G以上论文里想写模型部署细节本地部署8B模型通常建议显存不低于16G如果只有CPU没有GPU能跑但速度会很慢演示体验不好。无论哪种方式都要提前确认依赖版本和网络条件不要在答辩前临时换方案。5.3 一个可演示的AI材料预检示例材料预检本质上是把用户填写的申请表单字段发给大模型让模型判断有没有缺失或者格式不合规的内容。这是一个很典型的文本分类和抽取任务。调用接口的请求结构可以简化成{ model: qwen-plus, messages: [ { role: system, content: 你是政务审批材料预检助手你只负责检查申请材料是否完整不输出任何政策建议。 }, { role: user, content: 申请类型营业执照变更名称已填统一社会信用代码未填法人已填材料无。请给出缺失项。 } ], temperature: 0.2 }注意这里的model名称和接口地址只是示例实际以你接入的服务为准。temperature设为0.2是为了让模型输出更稳定不要像聊天一样随意发散。拿到模型返回后把结果解析成缺失项清单展示在页面上同时写入ai_check_result表保证留痕。5.4 AI内容要可控可解释这个部分非常重要。一是安全边界。AI返回的内容不能直接写进正式审批意见必须由审批人点击确认后才会落库。系统里要有记录哪条意见是AI生成的哪条是人工确认的。二是数据边界。不要把用户的身份证号、手机号等敏感字段发给大模型。如果只是做功能演示可以脱敏后再发送论文里也可以写“敏感信息本地脱敏后接入”。三是可解释性。政策问答场景需要附上来源文档不然评委随便问一个问题系统答不上来或答错来源会很难看。RAG方案天然满足“答案出处”的需求比直接问大模型更可控。6. 前端Layui对接微服务接口的实测要点6.1 先想清楚页面方案如果沿用若依微服务版本的目录结构页面一般是放在后端资源目录里的通过模板引擎渲染Layui负责页面美化。如果自己搭建项目也可以把Layui静态资源独立成前端目录用Ajax对接网关。建议第一次跑通时先选一种方式不要混用。最怕的就是一半页面由后端渲染一半页面纯静态接口路径和鉴权逻辑各写一套调试时非常容易乱。6.2 请求带Token和权限判断前端对接微服务接口通常需要做两件事登录后把Token存下来所有Ajax请求统一在Header里带上Token。网关在收到请求后解析Token把用户信息透传给下游服务。在Layui里可以统一封装一个Ajax入口layui.use([jquery, layer], function () { var $ layui.jquery; $.ajaxSetup({ headers: { Authorization: localStorage.getItem(token) } }); });这里只是示例。实际项目里Token存储和刷新策略要根据你的认证方案来。如果页面调接口返回401优先检查Token是否过期再去查网关的token校验逻辑。6.3 表格、表单和流程追踪页面的选择Layui的table模块做审批列表很合适支持分页、排序、行点击。form模块负责申请填表。弹窗用layer组件比浏览器原生弹窗好看很多。流程追踪页面是加分项。简单做法是把流程图静态图片展示出来根据当前节点名称高亮对应节点更复杂一点可以在后端返回节点坐标前端渲染动态流程图。毕设阶段建议先做静态高亮稳定之后再考虑动态渲染。6.4 前端常见问题做Layui页面时最常见的问题不是Layui本身而是接口联调。建议优先打开浏览器F12看Network面板里请求的URL、状态码和返回体。看到404先检查网关路由是否配置看到401先检查Token看到500再去看后端日志。还有一些页面显示问题比如表格滚动时表头错位。遇到这类问题先确认表格容器是否设置了固定宽度再检查数据加载完成后是否调用了table.resize。页面展示问题修复优先级不高不要为了一个布局问题花掉一整天。7. 演示和答辩时要盯住的三个环节7.1 启动顺序和检查清单演示当天最怕的不是代码有bug而是服务启动顺序不对导致连环报错。建议按这个顺序准备启动MySQL和Redis确认服务能连。启动Nacos确认后台能登录。启动auth-service看注册中心有没有出现服务实例。启动system-service、business-service、workflow-service。最后启动gateway-service。打开前端页面登录一次发起一条审批走完整个流程。每启动一个服务就看一次Nacos控制台里的服务列表确认实例状态。不要在日志还没刷完的时候就去点页面很可能服务还没注册完成。7.2 评审老师最可能追问的点这个选题答辩时评委大概率会问这三类问题。为什么需要微服务可以回答系统包含用户权限、审批业务、流程引擎等多个模块拆分后便于独立升级和团队协作并通过演示说明网关和服务注册的作用。审批数据的一致性和事务怎么处理回答策略是跨服务场景不追求强一致业务表保存主数据流程实例通过业务表关联流程状态回写采用重试机制保证最终一致。不要硬说用了分布式事务。AI是谁生成的准确率多少回答时重点强调AI只提供辅助预检和意见草稿所有结果必须人工确认数据脱敏后再调用大模型评估指标以缺失项识别准确率为主。如果论文里有测试数据比空谈“效果很好”更有说服力。7.3 常见报错排查顺序建议把排查顺序固定下来越慌越要按顺序走看控制台日志找第一条异常不是只看最后一行。看注册中心
返回列表