感想

本次实习的主要工作围绕联影公司的各类文本解析任务展开。
公司部署了多种开源大模型,在公司内部提供网页版服务和API调用服务。在这里,大模型除了满足日常使用需求外,还被用于体系文档审核,能高效处理工业生产过程中产生的各种审核文档。通过大模型接近人类的理解能力,系统能够灵活应对文档中的各种非标准化情况,像人一样理解文档想要表达的本质含义。

对事后补救类型的工作必要性的反思

在参与这些工作的过程中,我对其必要性产生了深入思考。诚然,目前的硬编码方式确实无法很好地识别和处理非标准化文档,使用大模型能够有效解决这个问题。但深究其根源,许多文档的不规范本质上是由于数据收集方式的落后导致的。如果能够在源头上改进——比如提供标准化模板、使用专业的问卷收集软件——其实都能从根本上解决这些问题。
这让我联想到了数据处理的"事前规划"与"事后补救"现象。我们使用大模型处理的正是后处理过程,这类似于学术研究中的两种模式:一种是提前规划好实验设计,实验完全为特定目的服务,整个流程非常顺畅;另一种是基于已完成的实验去撰写论文,需要在既有数据中挖掘价值,这就相对困难。这种"事后补救"现象有其存在的必要性——善后工作本身也需要人力投入,通过自动化能够显著提升效率。从公司运营的角度看,这种效率提升带来的价值是实实在在的。

大模型在医学领域的应用思考

这次实习让我对大模型在医学领域的应用有了更深层的思考。在本次实习中,大模型的应用主要体现在一般工业场景。而在之前参与的一些学术会议中,我了解到大模型在智能问诊、病历管理等领域已有诸多应用。那么,对于更深层次的疾病诊断,大模型的作用又体现在哪里呢?
"事后补救"现象实际上揭示了一个也许更深层的问题:信息的原始形态与可计算形态之间的鸿沟。在联影的文档处理场景中,这个鸿沟表现为非结构化文本与结构化数据之间的转换;而在脑机接口领域,这个鸿沟则表现为神经信号与意图识别之间的映射。 脑机接口面临的挑战更为根本——我们无法像改进文档模板那样去"规范化"大脑的信号输出。每个人的神经活动模式都是独特的,这种个体差异性不是缺陷,而是生物系统的本质特征。这就要求我们的系统必须具备适应性理解能力,而不仅仅是模式匹配能力。
那么能否通过大模型来增强脑电信号识别的鲁棒性,使得不同人的信号都能够很好的识别呢?目前是比较困难的,毕竟二者相比,文档处理是人已经先验理解的,而脑电中的很多我们还不能直接读懂,Prompt自然也无从谈起…… 比较可行的思路是——将大模型的上下文理解能力与脑机接口的实时信号处理结合。当脑机接口捕获到模糊的神经信号时,大模型可以基于上下文推断最可能的意图,就像它现在处理不规范文档一样。这种也称的上是一种多模态融合。

对自身研究项目的新认识

这次实习也让我对自己研究项目的本质有了新的思考。我意识到,自动化评估本质上是一种数字孪生技术,个性化评估的核心就是将人体进行动态孪生——即在数字空间中构建物理实体的精确模型表示。按照这个思路,当我们想要实现自动化评估时,本质上是基于采集的运动数据构建行为模型,然后判断运动能力在该行为模型中的表现结果。
因此,如果能够基于采集的数据,完成对患者行为模型(数学方程)的精确构建,将会更加接近问题的本质。我们目前使用的机器学习方法正是在尝试线性地模拟这个过程,而深度学习则是尝试通过非线性方式构建更复杂的模型,以更好地捕捉人体运动的复杂性。
而运动评估是对人体物理行为的数字孪生,BCI则是在尝试构建认知过程的数字孪生。这涉及三个递进的层次:
  1. 信号层孪生:将神经电信号精确复制到数字空间(前端采样)
  1. 模式层孪生:识别和重建神经活动的时空模式(分类模型)
  1. 意图层孪生:理解并预测认知意图的形成过程(编码解码能够闭环的程度才算是数字孪生)
这里的关键洞察是:深度学习的非线性建模能力可能更接近大脑的实际工作方式。大脑本身就是一个高度非线性的动态系统,线性方法只能捕捉其局部特征(非线性的案例就比如transformer等架构的注意力机制,某种程度上模拟了大脑的选择性注意过程)

技术技能提升

在技术层面,这次实习让我精进了Docker、PyInstaller、OpenAI API等工具的使用,技术熟练度得到了显著提升。虽然这些看似都是工具层面的进步,但对未来的研究和开发工作都有重要意义。另外,我还学会了构建类MCP(Model Context Protocol)的框架。虽然其本质是API调用和Prompt工程的结合,但这种系统化的思维方式和架构设计能力,相信在未来的工作中会发挥重要作用。
 

实习工作总结

实习背景

在本次实习期间,我参与了一个技术驱动的项目,涉及容器化技术、文本处理、人工智能模型集成以及前端仪表盘开发等多个领域。我的主要职责是优化现有系统功能、开发新模块以及解决技术实现中的实际问题。通过完成多项任务,我深入学习并实践了Docker、Python、LLM(大语言模型)以及前端开发相关技术,提升了解决复杂问题的能力。

主要任务与成果

1. Docker封装(Pandoc Server)

任务描述:负责将pandoc_server的代码及运行环境打包为Docker容器(pandoc_server_container),确保环境一致性和可移植性。
工作内容:
  • 配置Dockerfile,定义了Pandoc服务所需的依赖和运行环境。
  • 优化容器构建流程,确保镜像轻量化并符合生产环境要求。
  • 测试容器在不同环境下的兼容性,确保服务稳定运行。成果:成功生成了高效的pandoc_server_container,简化了部署流程,提升了系统的可维护性。

2. 多文本服务Docker集成

任务描述:将5个子功能的文本服务集成到一个统一端口,解决Python环境和相关库版本冲突的问题。
工作内容:
  • 分析各子功能依赖的Python版本和库需求,制定版本兼容方案。
  • 采用“clone再删除”的策略精简库依赖,减少镜像体积。
  • 解决部分库因无白名单无法联网安装的问题,通过本地调用文件配置环境。
  • 测试并上传集成后的环境,确保服务稳定运行。成果:成功实现5个子功能在单一端口的集成运行,优化了资源使用并提升了系统的可扩展性。

3. 基于LLM的鲁棒性文档预处理方案

任务描述:搭建类MCP(Model Context Protocol)框架,定义统一的文档处理交互规则,设计并实现3个Agent协同工作。
工作内容:
  • Agent1:开发文档读取模块,支持docx和pdf格式,提取三部分内容:
    • 默认字段(key)
    • 处理函数名称(method)
    • 各字段对应的内容(content)
  • Agent2:实现method和key的错误检测与修正功能,确保输出结果的准确性。
  • Agent3(可选):集成LLM,优化content内容,修正开头和结尾的无效部分,提升文档处理的鲁棒性。
  • 定义统一的交互协议,规范Agent间的协作流程。成果:成功搭建了一个高效的文档预处理框架,显著提高了文档处理的自动化程度和准确性,为后续LLM应用奠定了基础。

4. Python Streamlit打包

任务描述:将前端仪表盘的Python代码(基于Streamlit)打包为可执行的exe文件,并实现自动化环境配置。
工作内容:
  • 使用PyInstaller将Streamlit应用及其依赖打包为exe文件,确保跨平台运行。
  • 开发自动化脚本(bat文件),实现虚拟环境的自动配置和打包流程。
  • 测试打包后的仪表盘在不同操作系统中的稳定性。成果:生成了可独立运行的仪表盘程序,简化了部署流程,降低了用户的技术门槛。

5. 仪表盘白名单功能添加

任务描述:修改前端仪表盘代码,添加白名单配置状态显示功能。
工作内容:
  • 分析现有仪表盘代码,定位白名单相关的逻辑。
  • 修改前端界面,添加白名单启用状态及列表展示功能。
  • 测试功能在不同场景下的显示效果,确保用户体验流畅。成果:仪表盘新增白名单状态显示功能,提升了系统的透明性和用户交互体验。

技能收获

通过本次实习,我在以下方面取得了显著提升:
  • 容器化技术:深入掌握了Docker的配置、优化与部署,理解了容器化技术在生产环境中的应用。
  • Python开发:熟练使用Python进行环境管理、自动化脚本开发和前端应用(Streamlit)开发。
  • 人工智能与LLM:通过搭建类MCP框架,积累了基于大语言模型的文档处理经验,掌握了Agent设计和协作逻辑。
  • 问题解决能力:在解决版本冲突、库依赖和白名单限制等复杂问题时,锻炼了分析和调试能力。
  • 团队协作:通过与团队沟通需求、测试和部署,增强了跨部门协作和项目管理能力。

个人反思

本次实习让我从理论走向实践,深刻体会到技术开发中细节和整体优化的重要性。在面对版本冲突和环境限制等挑战时,我学会了通过系统化的分析和创新方法解决问题。同时,我也意识到持续学习和适应新技术的重要性,未来我将进一步深入学习容器化、AI框架和前端开发技术,以应对更复杂的项目需求。

Task 1 DBL PDF 解析服务开发

1.1 任务概述

开发基于 PaddleOCR v3 的 PDF 解析服务,实现对 DBL 格式 PDF 文件的自动化文本识别与结构化数据提取。

1.2 项目时间规划

项目周期: 2025年7月1日 - 2025年7月15日
工期: 15个工作日

1.3 部署环境配置

  • 服务器地址: 10.6.12.221
  • 部署路径: /mnt/iso/tyj_workspace/OCR
  • 环境管理: 使用 Conda 进行环境管理
  • 重要提醒: 环境变更时必须使用 conda create 命令复制环境后再进行修改,严禁直接修改现有环境

1.4 技术实现要求

核心功能规范

  1. OCR 解析引擎
      • 使用 PaddleOCR v3 作为核心解析引擎
      • 支持 PDF 文件的批量处理
      • 保证文本识别的准确性和完整性
  1. 数据处理流程
      • PDF 文档转换为图像格式
      • 使用 PaddleOCR 进行文本识别
      • 在每个解析文本块后添加标识符 [IMAGE_MASK]
      • 生成对应的 JPG 图像文件并保存至服务器
  1. 图像管理
      • 每个 [IMAGE_MASK] 标签对应一个 JPG 图像文件
      • 图像文件按解析顺序存储,确保序列不乱序
      • 图像存储路径记录在返回数据中

1.5 API 接口规范

返回数据结构

json
{ "img_list": ["图像文件服务器路径列表"], "title_name": ["文件实际名称"] * len(text_content), "text_content": ["完整解析数据列表"] }

字段说明

  • img_list (Array): 存储解析生成的 JPG 图像在服务器上的完整路径,按顺序排列
  • title_name (Array): 原始 PDF 文件名称,数组长度与 text_content 保持一致
  • text_content (Array): 完整的文本解析结果,包含 [IMAGE_MASK] 标识符

1.6 质量保证

  • 服务端开发:实现稳定的 HTTP 服务接口
  • 客户端测试:开发配套的测试客户端,确保服务功能完整性
  • 部署验证:在目标服务器上完成部署并通过全面测试

Task 2 Pandoc 服务 Docker 容器化

2.1 任务概述

将现有的 Pandoc 服务进行 Docker 容器化,提高服务的可移植性和部署效率。

2.2 项目时间规划

项目周期: 2025年7月1日 - 2025年7月8日
工期: 8个工作日

2.3 技术环境配置

基础环境

  • Conda 环境: qw_vl_mil2
  • 服务文件路径: /mnt/iso/cri_dtl_workspace/rag_update/pandoc_server.py
  • Docker 构建目录: /mnt/iso/cri_dtl_workspace/rag_update/pandoc_docker_make

2.4 Docker 化实施要求

容器化步骤

  1. 环境迁移
      • 基于 qw_vl_mil2 Conda 环境创建 Docker 镜像
      • 确保所有依赖包正确安装和配置
  1. 服务配置
      • 将 pandoc_server.py 集成到 Docker 容器中
      • 配置容器内的服务启动脚本
  1. 端口管理
      • 重要提醒: 由于原服务正在运行中,Docker 容器需要使用不同的端口号
      • 需要修改 pandoc_server.py 中的端口配置
      • 建议端口映射策略,避免与现有服务冲突

构建要求

  • 生成轻量化的 Docker 镜像
  • 确保容器启动的稳定性和可靠性
  • 提供完整的容器运行文档和命令示例

2.5 交付成果

  • 完整的 Dockerfile 和相关配置文件
  • Docker 镜像构建脚本
  • 容器部署和运行说明文档
  • 端口配置变更记录

Task 3 子功能的文本服务集成

任务描述:将5个子功能的文本服务集成到一个统一端口(9035),解决Python环境和相关库版本冲突的问题,并优化镜像体积。
工作内容:

集成方法

  • 服务封装:将每个子功能封装为独立函数,统一集成到main_server.py中,通过传入函数名称作为参数实现动态调用。
    • 对于除mineru外的服务,直接通过脚本封装为函数。
    • 对于mineru,尝试直接调用容器内脚本,但因缺失magic_pdf库导致报错。最终通过调用服务端口的方式,在已有客户端基础上封装为函数,成功实现集成。
  • 端口统一:将5个子功能的服务统一映射到端口9035,确保接口一致性和调用效率。

问题解决

  • 版本冲突:
    • 各子功能使用的Python版本和库版本不一致(例如,paddlex依赖Python 3.8,fitz依赖Python 3.10),导致兼容性问题,如初始化异常、函数调用失败等。
    • 尝试以Pandoc的Python 3.10环境(qw_vl_mli2)为基础兼容其他库,但paddlex在初始化OCR时因字体下载被服务器拦截而失败,且存在numpy等基础库的兼容问题。
    • 尝试使用OCR的Python 3.8环境(OCR2),但fitz(PyMuPDF)因同名库冲突导致文件读取异常。
    • 解决方案:放弃使用fitz,改用PyPDF2和pdf2image组合实现PDF转JPG功能,经测试与原始结果一致。
  • Mineru问题:
    • mineru服务因容器内缺少magic_pdf库无法直接调用脚本。
    • 最终通过调用服务端口的方式解决,避免直接依赖容器内脚本。
  • 库精简:
    • 采用“clone再删除”策略精简不必要库,减少镜像体积。
    • 通过逐一排查依赖关系,删除未使用的库(如torch),但保留关键依赖(如paddle、nvidia、faiss等)。
    • 解决paddlex初始化OCR时因字体下载被拦截的问题,通过本地配置文件和模型文件上传绕过限制。
    • 精简后环境从12GB减至9GB,主要占用空间的库包括:
      • paddle(4.22GB)
      • nvidia(3.00GB)
      • faiss(109.83MB)
      • opencv_contrib_python.libs(89.34MB)
      • opencv_python.libs(88.97MB)

Docker打包

  • 尝试方案:
    • 方案一:导出requirements.txt并重新安装,但paddlex初始化OCR时因字体下载被拦截失败。
    • 方案二:从本地打包环境后上传,包含OCR配置文件、本地模型文件等,确保完整性。
  • 系统依赖:
    • 安装必要的系统依赖(如libcuda.so.1以支持GPU、libjpeg-dev、libpng-dev等),避免运行时库缺失问题。
    • 具体依赖包括:
    • 成果:
      • 成功生成镜像unified_service:latest(IMAGE ID: cb8e5f4b347d,大小:28.3GB)。
      • 通过命令docker run --gpus all -d -p 9035:9035 --name unified_service_container unified_service启动容器,进程名为unified_service_container,端口号为9035。
      • 镜像经测试稳定运行,支持所有子功能的集成调用。
    成果:成功实现5个子功能在单一端口的集成运行,解决了版本冲突和库依赖问题,优化了镜像体积,提升了系统的可扩展性和稳定性。

    Task 4 基于LLM的鲁棒性文档预处理方案

    任务描述

    开发一个基于大语言模型(LLM)的文档预处理方案,用于从docx和pdf等格式文档中提取目标信息(如测试用例的ID、Title、Description),并以JSON格式输出。目标是通过LLM提升预处理的鲁棒性,解决传统规则依赖方式在字段名称变化、格式变异(如换行、表格转纵向列表)时的失效问题,确保输出高准确率、完整且格式正确,同时避免模型幻觉导致的错误。

    问题分析

    当前examples目录下的脚本(如test_cds_uts_check.py、test_cos_uts_check.py)依赖固定规则(如字段名、格式、表格结构)进行信息提取,存在以下问题:
    • 字段变化:字段名称或格式变化(如换行符、表格转列表)导致提取失败。
    • 部分case遗漏:固定字段提取忽略文中其他case内容。
    • 缺乏鲁棒性:无法适应复杂或非标准格式的文档。
    改进目标:
    • 利用LLM自动适应字段名、格式和结构变化。
    • 确保技术文档的高准确率(原文一致、提取完整、格式正确)。
    • 通过对比验证和兜底机制,严防LLM幻觉导致的错误。

    工作内容

    1. Case内容查找优化

    • 问题:现有代码依赖固定字段提取文本范围,易因字段变化导致匹配失败或遗漏部分case。
    • 改进:依据文末需求列表查找并拼接case内容,使用库如python-docx和mammoth+html2text以支持复杂格式解析。

    2. 类MCP框架设计

    • 目标:定义统一的交互规则(Model Context Protocol),规范代码与LLM的信息传递逻辑,确保流程可控。
    • 实现:
      • 设计标准化的字段格式和方法调用方式。
      • 预设多场景处理函数(如horizontal_table、vertical_table),应对格式变体(如字段名同义词、表格/清单差异)。
      • 定义默认字段库(key,如ID、Title、Description),作为LLM提取的基准,确保输出一致性。

    3. LLM处理逻辑

    • 字段处理:
      • LLM自主判断字段是否需变更,若文档字段与默认key差异,识别语义关联。
      • 变更时强制返回新字段名,并记录映射关系。
    • 方法选择:
      • LLM基于文档格式分析,从预设函数中选择匹配方法,禁止生成新方法以避免流程失控。
    • 特殊情形:
      • 若文档格式超出预设方法覆盖范围(如混合表格和清单),LLM识别不适用原因,代码端记录警告日志。
      • LLM将原文本转换为可处理格式,替代原始输入后调用对应函数。
    • 错误处理:
      • 若LLM返回结果无法执行,采集错误信息并反馈,重新获取LLM建议。
    • 验证与兜底:
      • 对比硬编码结果与LLM输出,验证效果。
      • 使用LLM二次验证结果。
      • 不确定内容标记为“需进一步处理”。

    4. Agent搭建

    构建了一个类MCP框架,包含三个Agent,协同完成文档预处理:
    • Agent1:读取docx和pdf文档,返回三部分内容:
      • key:提取字段(如ID、Title、Description),支持多case,识别语义关联并记录映射。
      • method:选择预设处理函数(如horizontal_table)。
      • content:以字典存储各key对应内容。
      • 实现:
        • 使用OpenAI API,设计Prompt(包含任务、要求、案例模块),实现格式化输出key、method、content。
        • 修改Prompt以支持错误修正,解决格式化失败或函数无法处理的问题。
        • 整合处理函数,完成key提取与方法选择。
    • Agent2:修正method和key错误。
      • 输入:Agent1的LLM结果(fields)和硬编码结果(result),均为字典格式(如{"ID": "DS936035", "Title": "DS_PSS_EXAM_PA_Modify"})。
      • 处理:
        • 按字段分批次输入LLM(字符限制10000,至少包含一个对象),分析差异并修正硬编码结果。
        • 输出processed_result(修正结果)和verification(修改说明)。
        • 解决文件过大问题:更换模型(QwenLong-L1-32B),分批次输入。
      • 诊断:对比前3个对象,检查method错误(如horizontal_table应为vertical_table)或key不全导致的空结果,反馈错误给LLM重新识别。
      • 代码示例:
      • Agent3(可选):修正content部分,移除无效内容(如页头、页尾、图片标题)。
        • 输入:Agent1的fields["content"]和硬编码result,分批并行输入(162批次,字符限制10000)。
        • 处理:LLM理解key-content关系,甄别无效内容,保留有意义部分,尤其关注过长内容。
        • 输出:修正后的result_assist3,保存为JSON至./outputs。

      5. 测试与结果

      • 测试案例:处理CDS文档(88002023-CDS-AII-01.docx):
        • Agent1输出:
          • key:["ID", "Title", "Description", "UT", "Rearranged", "PRA", "Status", "Rearranged Reason"]
          • method:horizontal_table
          • content:3个case(ID:DS910907、DS1460318、DS1406362)详细信息。
        • Agent2诊断:发现method错误(应为vertical_table),修正后输出JSON。
        • 最终提取8个ID,保存至./outputs/agent_test/88002023-CDS-AII-01.json。
      • 问题与解决:
        • 初始method错误导致部分结果为空,通过Agent2反馈LLM重新识别。
        • 文件内容过大,采用分批次输入和更换模型(Qwen3-235B-2507)解决。
      • 待完成:
        • 完善case提取逻辑,确保完整提取所有case。
        • 测试更多文档,验证JSON输出与硬编码结果一致性。
        • 进一步验证流程稳定性(无报错、结果正确)。

      6. To Do List

      理解任务需求及代码仓
      完善case提取逻辑(使用python-docx、mammoth+html2text)
      集成OpenAI API
      设计Prompt,支持格式化输出
      提取LLM输出的key、method、content并替换代码内容
      测试JSON输出与硬编码结果匹配
      在Prompt中增加错误修正机制
      进一步验证流程和结果准确性

      成果

      成功搭建基于LLM的类MCP框架,包含3个Agent协同工作,实现文档预处理的鲁棒性提升。测试中成功提取8个测试用例ID,纠正method错误,输出JSON格式结果,显著提高处理复杂格式文档的能力,减少规则依赖,增强系统适应性。

      技术收获

      • LLM应用:掌握Prompt设计、语义关联识别、错误修正机制。
      • 文档处理:熟练使用python-docx、mammoth等库处理复杂文档。
      • 问题解决:通过分批处理和模型优化解决大文件问题,提升系统稳定性。

      Task 5 Python Streamlit打包

      任务描述

      将基于Streamlit的Python应用(task_dashboard.py)及其运行环境打包为可独立运行的exe文件,确保用户无需配置环境即可运行。同时,开发自动化脚本(bat文件)实现虚拟环境配置和打包流程的自动化。核心挑战在于Streamlit应用的运行方式(通过streamlit run而非直接python执行)以及依赖库的兼容性问题。

      工作内容

      1. 打包尝试与问题分析

      • 目标:将task_dashboard.py及其依赖打包为exe,支持Windows环境运行,隐藏控制台窗口。
      • 难点:
        • Streamlit应用通过streamlit run task_dashboard.py运行,常规打包工具(如PyInstaller)无法直接识别Streamlit依赖。
        • Conda虚拟环境与PyInstaller的兼容性问题,导致DLL处理异常。
        • 部分依赖(如streamlit)未被自动检测,需手动配置。

      2. 打包方案探索

      思路一:使用PyInstaller

      • 步骤:
          1. 确保task_dashboard.py位于项目根目录,所有依赖已安装。
          1. 执行命令:
              • -onefile:打包为单一exe文件。
              • -windowed:隐藏控制台窗口,适合GUI应用。
          1. 解决Streamlit依赖未被检测问题:
              • 创建hooks/hook-streamlit.py:
                • 修改task_dashboard.spec,在Analysis部分添加:
                  • 使用命令重新打包:
            • 问题:
              • 打包失败,报错:
                • 原因:PyInstaller无法正确识别Streamlit的元数据和依赖。

              思路二:使用cx_Freeze

              • 步骤:
                • 安装cx_Freeze:
                • 问题:未提供具体测试结果,尝试未成功。

                思路三:使用auto-py-to-exe

                • 步骤:
                  • 安装auto-py-to-exe:
                  • 问题:生成exe后运行闪退,未能解决。

                  思路四:使用Nuitka

                  • 步骤:
                    • 执行命令:
                      • Nuitka尝试下载编译工具链(如MinGW),但因网络问题失败:
                      • 问题:网络限制导致工具链下载失败,Nuitka编译未完成。

                      3. 最终方案

                      • 核心问题:
                        • Streamlit库未被主流打包工具正确识别,需手动添加依赖。
                        • Conda虚拟环境与PyInstaller的DLL处理不兼容。
                      • 解决方案:
                        • 切换环境:放弃Conda环境,改用原生Python的venv虚拟环境,确保DLL处理一致。
                        • 手动配置依赖:在task_dashboard.spec中添加Streamlit相关依赖,确保打包完整。
                        • 打包命令:使用PyInstaller重新打包,生成可运行exe。
                      • 成果:
                        • 生成的exe文件可直接运行Streamlit仪表盘,无需额外环境配置。
                        • 后续代码更新只需替换task_dashboard.py,无需重新安装依赖。

                      4. 新需求:自动化虚拟环境配置与打包

                      • 目标:通过bat脚本实现虚拟环境创建、依赖安装和exe打包的自动化。
                      • 实现:
                        • 开发bat脚本,包含以下步骤:
                            1. 创建venv虚拟环境。
                            1. 安装Streamlit及相关依赖(numpy, pandas, matplotlib, etc.)。
                            1. 执行PyInstaller打包,包含Streamlit依赖配置。
                        • 上传脚本及说明文档至:
                        • 成果:自动化脚本成功实现一键配置与打包,简化开发与部署流程。

                        成果

                        • 成功将Streamlit应用打包为独立exe文件,支持无环境运行。
                        • 开发自动化bat脚本,实现虚拟环境配置和打包流程的自动化,上传至指定仓库并附说明文档。

                        技术收获

                        • 打包技术:掌握PyInstaller配置,学会处理Streamlit等复杂依赖的打包问题。
                        • 环境管理:理解Conda与原生Python环境的差异,熟练使用venv解决兼容性问题。
                        • 自动化脚本:通过bat脚本实现环境配置和打包自动化,提升开发效率。

                        Task 6 Streamlit仪表盘中添加白名单

                        任务描述

                        在现有Streamlit仪表盘中添加白名单管理功能,支持显示和修改当前系统的白名单配置,包括用户白名单和部门白名单。目标是提升系统的透明性和用户交互体验,确保管理员能够直观地查看和动态调整白名单设置。

                        工作内容

                        1. 显示白名单配置

                        • 功能目标:
                          • 在仪表盘界面中展示当前系统中白名单功能的启用状态(开启/关闭)以及对应的白名单列表(用户和部门)。
                        • 实现:
                          • 修改前端代码,添加白名单状态显示区域,展示以下内容:
                            • 用户白名单启用状态(usr_whitelist_enable)及用户列表(usr_whitelist)。
                            • 部门白名单启用状态(dept_whitelist_enable)及部门列表(department_whitelist)。
                          • 使用Streamlit组件(如st.write或st.table)渲染白名单数据,确保界面清晰、直观。
                          • 测试不同场景(白名单启用/禁用、空列表、非空列表)下的显示效果,确保用户体验流畅。

                        2. API设计

                        • 后端API:
                          • 设计并实现两个GET请求接口,用于获取用户和部门白名单配置。
                          • API 1: 获取用户白名单配置
                            • URL: /admin/config/usr
                            • 请求类型: GET
                            • 功能: 返回用户白名单的启用状态和用户列表。
                            • 返回数据格式示例:
                            • API 2: 获取部门白名单配置
                              • URL: /admin/config/dept
                              • 请求类型: GET
                              • 功能: 返回部门白名单的启用状态和部门列表。
                              • 返回数据格式示例:
                            • 实现:
                              • 集成后端API到仪表盘前端,通过HTTP请求(使用requests库)获取白名单数据。
                              • 确保API返回数据格式规范,处理异常情况(如空数据或请求失败)。

                            3. 修改白名单配置

                            • 功能目标:
                              • 支持在仪表盘中动态修改用户白名单和部门白名单(添加/删除用户或部门,切换启用状态)。
                            • 实现:
                              • 在仪表盘界面添加交互组件(如st.text_input、st.multiselect或st.checkbox),允许管理员编辑白名单列表和启用状态。
                              • 开发后端API(未提供具体接口,推测为POST请求)支持更新白名单配置。
                              • 实现前端与后端的联动:
                                • 用户通过界面提交修改,触发POST请求更新后端配置。
                                • 更新后重新调用GET接口刷新界面显示。
                              • 测试修改功能,确保数据一致性(前端显示与后端存储同步)及操作稳定性。

                            成果

                            • 成功在仪表盘中添加白名单管理功能,支持显示用户和部门白名单的启用状态及列表内容。
                            • 实现两个后端API(/admin/config/usr和/admin/config/dept),提供白名单配置的查询功能。
                            • 支持动态修改白名单配置,提升了仪表盘的交互性和系统管理效率。

                            技术收获

                            • 前端开发:
                              • 熟练使用Streamlit组件实现动态界面展示和交互功能。
                              • 掌握前端与后端API的集成流程,优化用户体验。
                            • 后端接口:
                              • 学习API设计规范,确保数据格式清晰、请求稳定。
                            • 问题解决:
                              • 调试界面显示和交互逻辑,确保不同场景下功能稳定。
                              • 处理API异常情况,提升系统鲁棒性。

                            自动化仪表盘说明文档

                            📋 工具概述

                            自动化任务监控仪表盘生成工具是一套完整的解决方案,帮助开发者快速将 Python 编写的仪表盘应用程序打包为独立可执行文件。用户无需安装 Python 环境即可运行生成的应用程序,极大地简化了部署和分发过程。

                            🎯 核心价值

                            • 零依赖部署:生成的应用可在任何 Windows 系统上直接运行
                            • 一键自动化:全程自动化打包,无需复杂配置
                            • 灵活维护:支持快速功能更新,无需重新打包
                            • 环境隔离:使用虚拟环境确保依赖管理的安全性

                            📁 核心文件架构

                            文件名
                            功能描述
                            作用域
                            run_dashboard.spec
                            PyInstaller 打包配置文件
                            定义应用程序打包参数、资源文件和执行设置
                            run_dashboard.py
                            应用程序启动入口
                            负责初始化和启动仪表盘主程序
                            auto_dashboard_exe.bat
                            自动化打包脚本
                            完整的环境配置、依赖安装和应用打包流程
                            requirements.txt
                            Python 依赖清单
                            定义项目所需的所有第三方库及版本
                            dashboard.py
                            仪表盘核心实现
                            包含用户界面逻辑和业务功能实现

                            📂 推荐项目结构


                            ⭐ 主要特性

                            🚀 自动化程度高

                            • 智能环境检测:自动检查 Python 环境完整性
                            • 依赖管理:自动创建虚拟环境并安装依赖
                            • 一键打包:无需手动配置 PyInstaller 参数

                            🔧 维护友好

                            • 热更新支持:修改功能无需重新打包
                            • 模块化设计:核心逻辑与界面分离
                            • 版本控制友好:清晰的文件结构便于团队协作

                            📦 部署便捷

                            • 独立可执行:生成的 .exe 文件包含所有依赖
                            • 跨机器运行:无需目标机器安装 Python 环境
                            • 绿色软件:无需安装,双击即用

                            💻 系统要求

                            基础环境

                            • 操作系统:Windows 7/8/10/11(推荐 Windows 10 及以上)
                            • Python 版本:3.6 - 3.11(推荐 3.8+)
                            • 内存要求:至少 2GB RAM
                            • 磁盘空间:至少 500MB 可用空间

                            网络要求

                            • 首次运行:需要互联网连接下载依赖包
                            • 后续使用:可离线运行

                            Python 环境验证


                            🚀 快速开始指南

                            第一步:环境准备

                            Python 安装验证

                            1. 检查现有安装
                              1. 如果显示版本号,说明 Python 已正确安装
                            1. 全新安装 Python(如果需要)
                                • 下载适合您系统的 Python 安装包
                                • 重要:安装时必须勾选 "Add Python to PATH"
                                • 验证安装:重新打开命令提示符,输入 python --version

                            项目文件准备

                            确保所有核心文件位于同一文件夹中:

                            第二步:生成应用程序

                            1. 启动自动化打包
                                • 右键点击 auto_dashboard_exe.bat
                                • 选择"以管理员身份运行"(推荐)
                            1. 监控打包进程 打包过程将显示以下阶段:
                              1. 验证生成结果
                                  • 在项目文件夹中找到 run_dashboard/ 目录
                                  • 确认 run_dashboard.exe 文件存在

                              第三步:运行应用程序

                              1. 启动应用
                                  • 进入 run_dashboard/ 文件夹
                                  • 双击 run_dashboard.exe
                              1. 验证功能
                                  • 确认仪表盘界面正常加载
                                  • 测试各项功能是否工作正常

                              🔧 维护与更新

                              场景一:仅修改功能逻辑

                              适用情况:修改界面布局、业务逻辑,但不引入新的第三方库
                              操作步骤:
                              1. 直接编辑 run_dashboard/dashboard.py 文件
                              1. 保存修改
                              1. 重新运行 run_dashboard.exe 查看效果
                              优势:
                              • ⚡ 立即生效,无需重新打包
                              • 🔄 支持快速迭代开发
                              • 💾 节省时间和磁盘空间

                              场景二:添加新依赖库

                              适用情况:需要引入新的 Python 库来实现新功能
                              操作步骤:
                              1. 更新依赖清单 编辑项目根目录的 requirements.txt:
                                1. 修改核心功能 编辑项目根目录的 dashboard.py:
                                  1. 重新打包 运行 auto_dashboard_exe.bat
                                  1. 测试新功能 运行新生成的 run_dashboard.exe

                                  🛠️ 高级配置

                                  自定义打包参数

                                  编辑 run_dashboard.spec 文件以自定义打包行为:

                                  🚨 故障排除

                                  常见错误及解决方案

                                  1. Python 环境问题

                                  错误信息:"Python environment not found"
                                  解决方案:

                                  2. 依赖安装失败

                                  错误信息:"Could not install packages due to an EnvironmentError"
                                  解决方案:

                                  3. 打包过程错误

                                  错误信息:"PyInstaller failed to execute script"
                                  解决方案:
                                  1. 检查代码语法
                                    1. 检查隐式依赖 在 run_dashboard.spec 中添加缺失的库:
                                      1. 启用调试模式

                                        4. 应用运行时错误

                                        错误信息:应用启动后立即关闭
                                        调试步骤:
                                        1. 通过命令行启动
                                          1. 检查日志文件 查看是否生成了错误日志文件
                                          1. 验证文件完整性 确认 dashboard.py 文件在应用文件夹中

                                          🔍 批处理脚本深度解析

                                          脚本执行流程

                                          关键技术点

                                          1. 虚拟环境隔离
                                              • 避免全局 Python 环境污染
                                              • 确保依赖版本一致性
                                              • 便于项目间依赖管理
                                          1. PyInstaller 优化
                                              • 使用 spec 文件进行精确控制
                                              • 合理配置隐式依赖
                                              • 平衡文件大小与功能完整性
                                          1. 错误处理机制
                                              • 每个关键步骤都有错误检查
                                              • 提供详细的错误信息
                                              • 支持快速定位问题

                                          📚 最佳实践

                                          开发阶段建议

                                          1. 依赖管理
                                              • 使用版本范围而非固定版本
                                              • 定期更新依赖到最新稳定版
                                              • 记录依赖选择的原因
                                          1. 代码组织
                                            1. 性能优化
                                                • 使用 Streamlit 的缓存机制
                                                • 避免在循环中进行重复计算
                                                • 合理使用数据加载策略

                                            部署阶段建议

                                            1. 文件管理
                                                • 保持项目根目录的整洁
                                                • 使用 .gitignore 排除临时文件
                                                • 定期清理旧的打包输出
                                            1. 版本控制
                                                • 为每次重要更新创建标签
                                                • 维护更新日志
                                                • 保留关键版本的打包文件
                                            1. 用户体验
                                                • 提供详细的使用说明
                                                • 考虑添加应用图标和版本信息
                                                • 处理常见的用户操作错误

                                            📖 扩展资源

                                            相关文档

                                            进阶功能

                                            • 添加应用程序图标和版本信息
                                            • 集成自动更新机制
                                            • 支持配置文件外部化
                                            • 添加日志记录功能

                                            社区支持

                                            如遇到问题,可咨询:
                                            • 内部支持:联影大模型
                                            • 社区论坛:Python 开发者社区
                                            • 技术文档:查看相关库的官方文档

                                            📋 总结

                                            这套自动化仪表盘生成工具为 Python 应用的打包和分发提供了完整的解决方案。通过标准化的流程和丰富的配置选项,开发者可以快速将复杂的数据分析应用转换为用户友好的独立程序。
                                            核心优势:
                                            • 🚀 一键自动化打包流程
                                            • 🛡️ 虚拟环境确保依赖安全
                                            • 🔄 支持快速功能迭代
                                            • 📦 生成独立可执行文件
                                            • 🔧 灵活的配置和扩展能力
                                            遵循本指南的建议和最佳实践,您可以高效地开发、打包和维护专业级的仪表盘应用程序。
                                            云朵为什么边缘锐利笔记:模式识别知识点总结
                                            Loading...
                                            目录
                                            0%
                                            松菌君
                                            松菌君
                                            生物医学工程,脑机接口与智能康复研究
                                            公告
                                            2024.8.19 00:13
                                            部署完毕,锐意开拓中
                                            2025.8.23 12:04
                                            域名更新,正式迈入com域名
                                            学术主页见下
                                            2026.3.26
                                            潜修中,很快归来
                                            目录
                                            0%