【眼底辅助诊断开放平台】项目笔记
这是一个标题
- 任务一
- 前端页面开发:
- 后端接口配置:
- 任务二
- 自行部署
- 接入服务
- 日志
- 修改样式和解析MD文档
- 接入服务
- Note
- 前端登陆不进去/更改后端api接口
- 304 Not Modified
- login.cache.json
- ERR_CONNECTION_TIMED_OUT
- 跨域
- 一般提交格式
- proxy.ts
- src/coponents 目录下新增新文件 MarkdownRenderer.tsx
- 修改页面 src/pages/SelfDeployAI/index.tsx
任务一
前端页面开发:
所涉及知识点:《眼底视网膜解读》
- 页面位于 page 目录下的两个新文件中,查看 Git 提交记录可以找到具体文件。
- 需要适配手机端,支持弹性变化布局。
后端接口配置:
- 将 config.tsx 中的端口替换为 10.3.36.106,以便访问的后端服务。✅
- 修改
./proxy文件:确保target指向http://。✅
重启项目:确保配置生效。
http://7529
负责前端页面开发、后端接口配置和代码拉取。
任务二
自行部署
1、历史记录实现✅已实现
2、后台任务上传、假、真 列表展示✅已实现
3、excel导出 pdf打印
- 安装必要的依赖:
yarn add jspdf jspdf-autotable - 更改导出方式
最适合这种场景的库通常是jsPDF,它是一个轻量级的客户端PDF生成库,易于使用。
// 导出诊断报告const exportReport = () => {if (messages.length === 0) {message.info('暂无诊断结果可导出');return;}// 找最近的一次分析结果let reportContent = '';let hasAnalysis = false;for (let i = messages.length - 1; i >= 0; i--) {if (messages[i].aiAnalysis) {// 找到了分析结果const analysis = messages[i].aiAnalysis;const content = messages[i].content;reportContent = `
# 眼底诊断报告
生成时间:${moment().format('YYYY-MM-DD HH:mm:ss')}## 分析结果
主要诊断: ${analysis.main_class.label} (置信度: ${(analysis.main_class.confidence * 100).toFixed(2)}%)
分级: ${analysis.main_class.grade}级
左眼: ${analysis.left_eye.severity} (置信度: ${(analysis.left_eye.confidence * 100).toFixed(2)}%)
右眼: ${analysis.right_eye.severity} (置信度: ${(analysis.right_eye.confidence * 100).toFixed(2)}%)
预测年龄: ${analysis.age_prediction}
预测性别: ${analysis.gender_prediction}## 病灶测量
微血管瘤: ${analysis.measurements?.microaneurysm_count ?? '未测量'}个
出血点: ${analysis.measurements?.hemorrhage_count ?? '未测量'}处
硬性渗出: ${analysis.measurements?.exudate_count ?? '未测量'}处## 特征重要性
${analysis.feature_importance?.factors?.map(f =>`- ${f.name}: ${(f.value * 100).toFixed(1)}%`).join('\n') || '无特征重要性数据'}## 可视化分析
- 左眼分析图: ${analysis.visualizations?.left_eye ? '已生成' : '无'}
- 右眼分析图: ${analysis.visualizations?.right_eye ? '已生成' : '无'}
- 包含视图: ${analysis.visualizations?.left_eye?.filtered_views ?Object.keys(analysis.visualizations.left_eye.filtered_views).join(', ') : '无'}## 诊断解读
${analysis.explanation.text}
关键发现:${analysis.explanation.findings.join(',')}## 诊断建议
${content}`;hasAnalysis = true;break;}}if (!hasAnalysis) {message.info('暂无分析结果可导出');return;}// 创建下载链接const blob = new Blob([reportContent], {type: 'text/plain'});const url = URL.createObjectURL(blob);const a = document.createElement('a');a.href = url;a.download = `眼底诊断报告_${moment().format('YYYYMMDD_HHmmss')}.txt`;document.body.appendChild(a);a.click();document.body.removeChild(a);URL.revokeObjectURL(url);message.success('诊断报告已导出');};
- 创建导出工具函数
创建src/utils/exportUtils.ts文件:
exportUtils.ts文件的作用是提供可重用的导出功能,比如将数据导出为PDF或Excel等格式。这样可以避免在多个组件中重复编写相同的导出逻辑,使代码更加模块化和易于维护。
创建完成后,将我之前提供的PDF导出代码放入这个文件中,然后在主组件中导入使用。
或者直接靠浏览器自带的下载
接入服务
1、添加详细介绍
2、提示词预设
3、功能介绍如可以智能导诊、查看名医
- 创建更详细的提示词分类和数据结构
- 增加一个侧边栏或下拉菜单来展示提示词预设
- 添加功能让用户选择这些预设
- 将选择的预设直接填入输入框或直接发送
日志
修改样式和解析MD文档
- SelfDeployAI/index.tsx
- 修改 Layout 的样式




怎么感觉没变化啊靠

- 修改加载动画的样式

接入服务
- 导入缺失的Avatar组件。
- import { Card, message, Typography, Layout, Button, Switch, Space, Tooltip, Spin } from 'antd';
+ import { Card, message, Typography, Layout, Button, Switch, Space, Tooltip, Spin, Avatar } from 'antd';
- 新增消息元数据字段
// 原结构
setMessages([...prev, { sender, content, timestamp }])// 修改后应包含AI角色和消息类型
setMessages([...prev, {sender: '用户',role: 'patient', // 新增用户角色标识contentType: 'text', // 新增消息类型(text/image)attachments: [], // 新增附件字段diagnosticData: {}, // 新增诊断数据字段timestamp
}])
Note
前端登陆不进去/更改后端api接口
多半是因为后端没有部署,或者可以更改后端api
config -> config.ts
openAPI: [{requestLibPath: "import { request } from '@umijs/max'",schemaPath: 'http://localhost:7529/api/v3/api-docs', //更改后端apiprojectName: 'cai-api-backend',},],
304 Not Modified
浏览器缓存问题,但是刷新后仍然出现报错,我查看了其他报错原因
mf-dep____vendor.0983249d.js:343218POST http://127.0.0.1:7529/api/user/login?token%20=%20123 net::ERR_CONNECTION_REFUSED
我的端口并不是这个,所以肯定有哪些遗漏的
可以排查:后端服务未启动、端口配置错误、网络问题或跨域问题
login.cache.json
账号密码
"payload": {"username": "admin","password": "ant.design","autoLogin": true,"type": "account"},
ERR_CONNECTION_TIMED_OUT
浏览器在尝试连接到服务器时,等待响应的时间过长,超出了设置的超时时间
- 网络连接较慢
- 服务器无法响应
- 求目标地址不可访问
建议:查看端口号,我这里需要的端口号不是8080,所以需要更改
跨域
有的时候直接申请网址会出现失败的情况
这种就是跨域了

一般提交格式
feat: - 新功能
fix: - 修复问题
docs: - 文档相关
style: - 样式/格式变更
refactor: - 代码重构
perf: - 性能优化
test: - 测试相关
chore: - 日常维护任务
proxy.ts

- pre是生产环境
- dev配置是开发环境 改掉dev的target为10.3.36.106:7529
- openapi的是接口文档的地址 不需要快速开发不需要改
相关文章:
【眼底辅助诊断开放平台】项目笔记
这是一个标题 任务一前端页面开发:后端接口配置: 任务二自行部署接入服务 日志修改样式和解析MD文档接入服务 Note前端登陆不进去/更改后端api接口304 Not Modifiedlogin.cache.jsonERR_CONNECTION_TIMED_OUT跨域一般提交格式proxy.ts src/coponents 目录…...
Java笔记5——面向对象(下)
目录 一、抽象类和接口 1-1、抽象类(包含抽象方法的类) 1-2、接口 编辑编辑 二、多态 编辑 1. 自动类型转换(向上转型) 示例: 注意: 2. 强制类型转换(向下转型) 示…...
NI的LABVIEW工具安装及卸载步骤说明
一.介绍 最近接到个转交的项目,项目主要作为上位机工具开发,在对接下位机时,有用到NI的labview工具。labview软件是由美国国家仪器(NI)公司研制开发的一种程序开发环境,主要用于汽车测试、数据采集、芯片测…...
[reinforcement learning] 是什么 | 应用场景 | Andrew Barto and Richard Sutton
目录 什么是强化学习? 强化学习的应用场景 广告和推荐 对话系统 强化学习的主流算法 纽约时报:Turing Award Goes to 2 Pioneers of Artificial Intelligence wiki 资料混合:youtube, wiki, github 今天下午上课刷到了不少࿰…...
css一些注意事项
css一些注意事项 .bg_ {background-image: url(/static/photo/activity_bg.png);background-size: 100% auto;background-repeat: no-repeat;background: linear-gradient(to bottom, #CADCEA, #E8F3F6);min-height: 100vh; } 背景图片路径正确但是并没有显示 // 方案1&…...
[从零开始学数据库] 基本SQL
注意我们的主机就是我们的Mysql数据库服务器 这里我们可以用多个库 SQL分类(核心是字段的CRUD)  重点是我…...
react/vue中前端多图片展示页面优化图片加载速度的五种方案
需求背景 在多项目中 例如官网项目中 会出现很多大图片显示的情况 这个时候就会出现图片过大 公司带宽不够之类导致页面加载速度过慢及页面出现后图片仍然占位但并未加载出来 或者因为网络问题导致图片区域黑块等等场景 这个时候我们就要对图片和当前场景进行优化 方案定…...
qt中的正则表达式
问题: 1.在文本中把dog替换成cat,但可能会把dog1替换成cat1,如果原本不想替换dog1,就会出现问题 2文本中想获取某种以.txt为结尾的多有文本,普通的不能使用 3如果需要找到在不同的系统中寻找换行符,可以…...
AT_abc400_e [ABC400E] Ringo‘s Favorite Numbers 3 题解
题目传送门 题目大意 题目描述 对于正整数 N N N,当且仅当满足以下两个条件时, N N N 被称为 400 number: N N N 恰好有 2 2 2 种不同的素因数。对于 N N N 的每个素因数 p p p, N N N 被 p p p 整除的次数为偶数次。更严…...
git 提交标签
Git 提交标签 提交消息格式: <type>: <description> (示例:git commit -m "feat: add user login API") 标签适用场景feat新增功能(Feature)。fix修复 Bug(Bug fix&…...
关于 Spring Batch 的详细解析及其同类框架的对比分析,以及如何自己设计一个java批处理框架(类似spring batch)的步骤
以下是关于 Spring Batch 的详细解析及其同类框架的对比分析: 一、Spring Batch 核心详解 1. 核心概念 作业(Job):批处理任务的顶层容器,由多个步骤(Step)组成。 步骤(Step&#…...
【Java面试系列】Spring Cloud微服务架构中的分布式事务实现与性能优化详解 - 3-5年Java开发必备知识
【Java面试系列】Spring Cloud微服务架构中的分布式事务实现与性能优化详解 - 3-5年Java开发必备知识 引言 在微服务架构中,分布式事务是一个不可避免的挑战。随着业务复杂度的提升,如何保证跨服务的数据一致性成为面试中的高频问题。本文将从基础到进…...
【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【论文篇+改进】A题解题全流程(持续更新)
【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【论文篇改进】A题解题全流程(持续更新) 写在前面: 我是一个人,没有团队,所以出的比较慢,每年只做一次赛题,泰迪杯,我会认真对…...
Linux系统常见磁盘扩容操作(Common Disk Expansion Operations in Linux Systems)
Linux系统常见磁盘扩容操作 目录说明 一、准备工作:获取目标磁盘信息 (1)确认分区表格式和文件系统 二、扩容已有MBR分区 (1)分区后扩容 ext为例 xfs为例 三、扩容已有GPT分区 (1)分区…...
数据结构——哈希详解
数据结构——哈希详解 目录 一、哈希的定义 二、六种哈希函数的构造方法 2.1 除留取余法 2.2 平方取中法 2.3 随机数法 2.4 折叠法 2.5 数字分析法 2.6 直接定值法 三、四种解决哈希冲突的方法 3.1 开放地址法 3.1.1 线性探测法 3.1.2 二次探测法 3.2 链地址法 3…...
Spark-SQL核心编程
简介 Hadoop与Spark-SQL的对比 Hadoop在处理结构化数据方面存在局限性,无法有效处理某些类型的数据。 Spark应运而生,特别设计了处理结构化数据的模块,称为Spark SQL(原称Shark)。 SparkSQL的发展历程: Sp…...
pywebview 常用问题分享
文章目录 前言问题描述与方案(待补充)1、动态设置本地调试目录和打包目录2、构建后运行程序白屏 前言 最近做一个pywebview项目,遇到了一些问题,记录一下,分享给大家,希望能帮助有遇到相似问题的人事。 问题描述与方案(待补充) …...
系统设计模块之安全架构设计(身份认证与授权(OAuth2.0、JWT、RBAC/ABAC))
一、OAuth 2.0:开放授权框架 OAuth 2.0 是一种标准化的授权协议,允许第三方应用在用户授权下访问其资源,而无需直接暴露用户密码。其核心目标是 分离身份验证与授权,提升安全性与灵活性。 1. 核心概念与流程 角色划分ÿ…...
Docker 与 Podman常用知识汇总
一、常用命令的对比汇总 1、基础说明 Docker:传统的容器引擎,使用 dockerd 守护进程。 Podman:无守护进程、无root容器引擎,兼容 Docker CLI。 Podman 命令几乎完全兼容 Docker 命令,只需将 docker 替换为 podman。…...
如何通过自动化解决方案提升企业运营效率?
引言 在现代企业中,运营效率直接影响着企业的成本、速度与竞争力。尤其是随着科技的不断发展,传统手工操作和低效的流程逐渐无法满足企业的需求。自动化解决方案正成为企业提升运营效率、降低成本和提高生产力的关键。无论是大型跨国公司,还…...
unity100天学习计划
以下是一个为期100天的Unity学习大纲,涵盖从零基础到独立开发完整游戏的全流程,结合理论、实践和项目实战,每天学习2-3小时: 第一阶段:基础奠基(Day 1-20) 目标:掌握Unity引擎基础与C#编程 Day 1-5:引擎入门 安装Unity Hub和Unity Editor(LTS版本)熟悉Unity界面:S…...
多坐标系变换全解析:从相机到WGS-84的空间坐标系详解
多坐标系变换全解析:从相机到WGS-84的空间坐标系详解 一、常见坐标系简介二、各坐标系的功能和使用场景1. WGS-84 大地坐标系(经纬高)2. 地心直角坐标系(ECEF)3. 本地 ENU / NED 坐标系4. 平台坐标系(Body)5. 相机坐标系三、坐标变换流程图四、如何选用合适的坐标系?五…...
SpringCloud Alibaba 之分布式全局事务 Seata 原理分析
1. 什么是 Seata?为什么需要它? 想象一下,你去银行转账: 操作1:从你的账户扣款 1000 元操作2:向对方账户增加 1000 元 如果 操作1 成功,但 操作2 失败了,你的钱就凭空消失了&…...
作业帮前端面试题及参考答案 (100道面试题-上)
HTML5 的优势是什么? HTML5 作为 HTML 语言的新一代标准,具有众多显著优势,为现代网页开发带来了诸多便利与革新。 在语义化方面,HTML5 引入了大量具有明确语义的标签,如<header>、<nav>、<article>、<section>、<aside>、<footer>等…...
Large Language Model(LLM)的训练和微调
之前一个偏工程向的论文中了,但是当时对工程理论其实不算很了解,就来了解一下 工程流程 横轴叫智能追寻 竖轴上下文优化 Prompt不行的情况下加shot(提示),如果每次都要加提示,就可以试试知识库增强检索来给提示。 如果希望增强…...
统计销量前十的订单
传入参数: 传入begin和end两个时间 返回参数 返回nameList和numberList两个String类型的列表 controller层 GetMapping("/top10")public Result<SalesTop10ReportVO> top10(DateTimeFormat(pattern "yyyy-MM-dd") LocalDate begin,Dat…...
AI大模型原理可视化工具:深入浅出理解大语言模型的工作原理
AI大模型原理可视化工具:深入浅出理解大语言模型的工作原理 在人工智能快速发展的今天,大语言模型(如GPT、BERT等)已经成为改变世界的重要技术。但对于很多人来说,理解这些模型的工作原理仍然是一个挑战。为了帮助更多…...
MCP 认证考试常见技术难题实战分析与解决方案
MCP(Microsoft Certified Professional)认证考试在全球范围内被广泛认可,是衡量个人在微软技术领域专业能力的重要标准。然而,在备考和参加 MCP 认证考试过程中,考生常常会遇到各种技术难题。以下将对一些常见技术难题进行实战分析,并提供相应的解决方案。 一、网络配…...
qt designer 创建窗体选择哪种屏幕大小
1. 新建窗体时选择QVGA还是VGA 下面这个图展示了区别 这里我还是选择默认,因为没有特殊需求,只是在PC端使用...
Spark-SQL核心编程(一)
一、Spark-SQL 基础概念 1.定义与起源:Spark SQL 是 Spark 用于结构化数据处理的模块,前身是 Shark。Shark 基于 Hive 开发,提升了 SQL-on-Hadoop 的性能,但因对 Hive 依赖过多限制了 Spark 发展,后被 SparkSQL 取代&…...
