[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"ad-slot-floating-promo":3,"$fxY8ZVCItB18TDELP9pX3Ziak1TyzV-GBnSdPr0aEr4c":6,"ad-slot-course-detail-side":31},{"data":4,"_fetchedAt":5},[],1789889051788,{"id":7,"name":8,"icon":9,"description":10,"category":11,"price":12,"originalPrice":13,"creditCost":14,"content":15,"resources":16,"status":22,"tags":23,"type":29,"url":30,"orders":14},120,"AI Agent 智慧医院智能导诊就诊系统","hospital","项目简介：基于医学知识库 RAG、向量检索、数据库驱动工具中心、Spring Boot + LangChain4j、Function Calling，实现文档切分与 Embedding 向量化、按库收窄的内存余弦 topK 检索、SSE 真流式多轮预问诊、数据库驱动 ReAct 分诊 Agent 多轮自主取证、工具注册表真开关与调用日志、科室医生查库核验、挂号乐观锁扣减、Agent 执行时间线与 AI 调用观测、就诊运营，覆盖从预问诊、智能分诊、在线挂号到接诊写病历与运营复盘的完整就诊闭环。","AI_PROJECT",18900,39900,0,"\u003Ch2>一、项目技术栈\u003C\u002Fh2>\n\u003Cp>前后端分离\u003C\u002Fp>\n\u003Cp>\u003Cstrong>后端\u003C\u002Fstrong>：SpringBoot + LangChain4j + MyBatis + PageHelper + Hutool + Java JWT（Java 21 \u002F Maven）\u003Cbr>\u003Cstrong>前端\u003C\u002Fstrong>：Vue3 + Vite + Element-Plus + Vue-Router + Axios（SSE 流式对话、Agent 执行时间线、运营看板）\u003Cbr>\u003Cstrong>AI 技术\u003C\u002Fstrong>：医学知识库 RAG（切分 + Embedding 向量检索）+ MySQL 向量表 + 数据库驱动工具中心（mcp_tool）+ 多步 ReAct 分诊 Agent + 预问诊多轮 SSE 对话 + AI 调用观测\u003Cbr>\u003Cstrong>数据库\u003C\u002Fstrong>：MySQL 8\u003C\u002Fp>\n\u003Cp>版本要求：JDK 21、MySQL 8、Node.js 18+、Maven 3.8+。模型调用走 OpenAI 兼容接口，需要对话与向量两类模型的 API Key，配置存在数据库、后台改完即生效。\u003C\u002Fp>\n\u003Ch2>二、项目功能描述\u003C\u002Fh2>\n\u003Ch3>1. 管理员\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>用户管理、科室管理、医生管理与账号开通、排班与号源管理、患者档案、症状标签库维护。\u003C\u002Fli>\n\u003Cli>AI 模型配置（聊天 + 向量模型，支持连通性测试）与 Prompt 模板管理。\u003C\u002Fli>\n\u003Cli>医学知识库：库分组、文档上传解析、切片查看、向量化与相似度检索。\u003C\u002Fli>\n\u003Cli>工具中心：\u003Ccode>mcp_tool\u003C\u002Fcode> 工具注册、真启用开关、工具调用日志。\u003C\u002Fli>\n\u003Cli>就诊运营看板：挂号量、号源使用率、分诊推荐命中率，按科室 \u002F 医生 \u002F 推荐科室三个维度汇总。\u003C\u002Fli>\n\u003Cli>观测：Agent 执行时间线（运行 + 步骤）、AI 调用观测（ai_usage_log 统计与明细）。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>2. 医生\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>门诊接诊：查看挂到自己名下的患者，开始接诊、完成就诊的就诊状态流转。\u003C\u002Fli>\n\u003Cli>病历记录与书写：七个段落结构化录入，草稿可继续编辑，提交后正文锁定。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>3. 患者\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>维护个人档案（性别、年龄、慢病史、过敏史）。\u003C\u002Fli>\n\u003Cli>智能预问诊：与 AI 多轮对话描述症状，查看与删除历史会话。\u003C\u002Fli>\n\u003Cli>智能分诊：发起分诊后由 Agent 多步取证，结果页展示推荐科室、医生、置信度、危急等级与推荐理由；命中危急征象直接提示前往急诊科。\u003C\u002Fli>\n\u003Cli>预约挂号：按推荐科室\u002F医生一键挂号，余号乐观锁扣减。\u003C\u002Fli>\n\u003Cli>我的就诊：挂号单状态流转、查看医生提交的电子病历。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>三、项目创新点\u003C\u002Fh2>\n\u003Col>\n\u003Cli>\u003Cstrong>数据库驱动的 ReAct 分诊 Agent\u003C\u002Fstrong>：模型不是被写死的流程串起来的，后端只把工具清单交给它并给一个循环上限，先调哪个工具、调几轮、何时收尾全由模型根据已返回的工具结果逐轮决定。一次分诊要调几次工具、调哪几个，每次跑出来都可能不同，全过程落 \u003Ccode>agent_run\u003C\u002Fcode> \u002F \u003Ccode>agent_step\u003C\u002Fcode>，黑盒推理可解释、可复盘。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>工具中心真实开关和数据\u003C\u002Fstrong>：工具编码、说明、入参全部在 \u003Ccode>mcp_tool\u003C\u002Fcode> 表里，运行时按 \u003Ccode>status = &#39;启用&#39;\u003C\u002Fcode> 现查现建工具池；管理员停用一个工具，模型下一次执行真的调不到它，而不是界面上有个开关、代码里不生效。工具调用成功失败都写 \u003Ccode>mcp_tool_call_log\u003C\u002Fcode>，配合运行与步骤表可以完整回放一次执行。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AI 输出先由代码核验再落库\u003C\u002Fstrong>：模型只负责「选科室 + 写依据」。推荐的科室必须在 \u003Ccode>department\u003C\u002Fcode> 表里真实存在，推荐的医生必须当天真的有可挂号排班，两项都由代码查库重算，页面上显示的每一个都不采信模型原话；危急征象拦截写死在代码里，只要症状标签工具返回 \u003Ccode>is_red_flag = 是\u003C\u002Fcode>，结果直接转急诊科，不再走推荐普通门诊。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>统一 AI 出口与调用观测\u003C\u002Fstrong>：同步对话、SSE 流式、带工具 ReAct、向量化四类模型调用全部收敛到 \u003Ccode>HospitalAiService\u003C\u002Fcode>，每次调用写 \u003Ccode>ai_usage_log\u003C\u002Fcode>（用途、Token、耗时、成败、错误翻译），观测页能按用途统计成功率与 Token 消耗，失败原因被统一翻译成可操作的中文提示。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AI 配置全部数据库化\u003C\u002Fstrong>：模型连接参数与 Prompt 模板都存在库里，管理员后台改完立即生效不需要重启；为此引的是 \u003Ccode>langchain4j-open-ai\u003C\u002Fcode> 普通依赖而不是 spring-boot-starter，模型对象全部由工厂按库中配置用 builder 构建并按配置内容缓存，配置文件里不出现任何模型参数。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>流式预问诊\u003C\u002Fstrong>：预问诊对话走 SSE，模型每吐出一段增量文本后端就推一段、前端就渲染一段，第一个字在模型开口时就出现在屏幕上，而不是等整段生成完再逐字播放；业务校验在进入流式之前完成，失败时返回普通 JSON 而不是发一个空的事件流。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>分诊推荐命中率闭环\u003C\u002Fstrong>：分诊结果被患者拿去挂号后会置为「已挂号」，就诊运营看板按推荐科室统计「推荐了多少次、其中多少次真的转成挂号」。这个比例把「模型推荐得准不准」变成了一个可以看的数字，也是回头调 Prompt 与症状标签权重的依据。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>排班日期一键顺延\u003C\u002Fstrong>：排班是配置类基础数据，放一段时间日期整体落到过去，患者端按「今天起一周」查号源就会查不到。排班管理页提供「排班日期顺延」，按「今天 − 最早一条日期」整批平移，保住排班之间原有的先后间隔，余号一并复位成号源总数。已产生的挂号不受影响：就诊日期在挂号那一刻已快照进 \u003Ccode>registration.visit_date\u003C\u002Fcode>，排班只是配置，历史记在挂号单上。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2>四、关键页面截图\u003C\u002Fh2>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887598754-9ac59b00-236b-48ce-a7b0-65273de93d37.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887590043-251ef1a5-3c8e-41d1-886b-44edf8f5cf9e.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887546890-25a4c9bc-a400-4b8c-99c1-4f20e159514d.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887553762-cb7b38aa-15c3-4570-80f3-c733a058e59f.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887566238-4b645e8d-fd85-47e3-b190-b3ae848f21d3.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887617327-2402739d-3b06-4e27-91b1-f424dcef5eec.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887622354-f5747e49-3fde-4ac5-a017-e951646b9959.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887635432-1cfa1834-0b0f-45c4-8226-3de0a8959661.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887648616-1cc74d67-25ff-4fbf-8b16-f7133f0df099.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887657609-01369d8b-4a52-4d5d-98d2-a318d14c0f35.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F38425080\u002F1789887667654-43a11d8c-9237-457a-9ef5-1f0d18987c81.png\" alt=\"课程内容图片\" referrerpolicy=\"no-referrer\">\u003C\u002Fp>\n",[17,18,19,20,21],"源码+SQL","喂饭学习教程","配套面试文档","环境安装文档","项目运行文档","上架",[24,25,26,27,28],"Springboot3","LangChain4J","Agent","MCP","RAG","地狱锤炼",null,{"data":32,"_fetchedAt":33},[],1789889051796]