Skip to content

毕业设计论文图表详解手册

字数
5678 字
阅读时间
23 分钟

本手册逐图解释论文《多源Web表格自动填写系统的设计与实现》中出现的所有图表,帮助你深入了解每张图的内容、作用及答辩要点。请对照论文原文阅读,确保对每张图“了如指掌”。


一、第三章 系统设计 中的图表

图3.1 架构设计图

位置:3.1节
描述:系统采用前后端分离的分层架构,从上到下分为表现层、业务层、服务层和数据层。

详细解释

  • 表现层:Vue.js 构建的前端单页应用,负责文件上传、URL输入、数据预览、映射推荐展示与修正、填充执行和结果导出。
  • 业务层:FastAPI 提供的 RESTful 服务,包含三个独立模块:数据接入与清洗、字段匹配、数据填充。
  • 服务层:封装核心操作,一是基于 LangChain 调用通义千问模型做语义匹配,二是用 Selenium 执行表单填写。
  • 数据层:提供具体能力,如读取 Excel、SQL 和网页,做数据清洗、选项匹配,以及浏览器驱动等。

答辩要点:能口述四层分别做什么,强调分层的好处(解耦、可扩展)。


图3.2 用户用例图

位置:3.1节
描述:参与者为用户,拥有全部操作权限。包含五类核心功能:上传源数据、上传目标表单URL、字段映射推荐、执行表单自动填充、导出填充结果。

详细解释

  • 用户是唯一直接与系统对话的角色。
  • “上传源数据”和“上传目标表单URL”分别扩展出“数据预览”功能,可以查看源数据部分内容及目标表单字段。
  • “字段映射推荐”功能扩展出“置信度展示”和“修正错误映射关系”功能。
  • 所有操作围绕“上传→解析→匹配→填充→导出”主线展开。

答辩要点:说明用户与系统的交互边界,强调用户可人工修正映射这一关键设计。


图3.3 系统流程活动图

位置:3.1节
描述:以活动图形式展示系统从开始到结束的完整流程。

详细解释

  • 开始 → 选择数据源类型(Excel/SQL/URL)→ 上传/输入 → 加载源数据 → 解析数据 → 显示预览。
  • 同时(或顺序)输入目标URL → 解析表单 → 显示字段。
  • 用户点击“获取推荐映射” → 调用大模型 → 生成映射 → 用户确认/修改 → 点击“确认填充”。
  • 浏览器自动填充 → 显示结果 → 用户导出 → 结束。

答辩要点:能按活动图顺序复述整个操作流程,注意并行分支(源数据和目标表单可先解析任意一个)。


图3.4 系统核心类图1

位置:3.2节
描述:展示数据接入与清洗相关的核心类。

详细解释

  • DataIngestionService:业务层入口,根据数据源类型调用不同工具,返回 DataFrame。
  • ExcelReadTool:读取 Excel 文件,支持 .xlsx.xls
  • SQLFileTool:解析 SQL 文件,提取 CREATE TABLE 和 INSERT 语句。
  • WebScraperTool:抓取网页表格(静态用 BeautifulSoup,动态用 Selenium)。
  • DataCleanerTool:清洗 DataFrame(列名清理、去空行、去重等)。

答辩要点:说明每个类的职责,以及 DataIngestionService 如何作为统一入口。


图3.5 系统核心类图2

位置:3.2节
描述:展示字段匹配与填充执行相关的核心类。

详细解释

  • FieldMatchingService:调用 MatchingAgent 获取映射推荐。
  • MatchingAgent:基于 LangChain 创建 Agent,调用大模型推理字段映射,包含 JSON 解析和降级逻辑。
  • FillAgent:按映射规则,调用 BrowserFillerTool 执行填充。
  • BrowserFillerTool:封装 Selenium 操作,支持定位元素、填充、选项匹配。
  • OptionMatchingTool:选项值匹配(大模型直接匹配 + 同义词降级)。

答辩要点:说明 MatchingAgentFillAgent 的分工,以及 OptionMatchingTool 的作用。


图3.5 系统总体模块图(注意论文中图号重复,实际为图3.5)

位置:3.3节
描述:将系统分为四个主要模块:数据接入与清洗模块、字段智能匹配模块、表格自动填充模块、前端交互模块。

详细解释

  • 数据接入与清洗模块:读取 Excel/SQL/网页表格,清洗后输出 DataFrame。
  • 字段智能匹配模块:提取列特征,调用 LLM 推荐映射,输出带置信度的映射关系。
  • 表格自动填充模块:根据映射转换数据,驱动 Selenium 填充表单,支持批量记录。
  • 前端交互模块:Vue 界面,提供数据预览、映射调整、填充执行、结果导出。

答辩要点:能说出四个模块及其输入输出关系。


二、第四章 系统实现 中的图表

图4.1 数据接入伪代码

位置:4.1.1节
描述DataIngestionService 的核心调度过程伪代码。

详细解释

  • 根据 type 字段判断数据源类型:excelsqlurl
  • 分别调用 ExcelReadTool.read_from_bytesSQLFileTool.parse_sql_fileWebScraperTool.extract_tables
  • 得到原始 DataFrame 后,调用 DataCleanerTool.clean_dataframe 清洗,最后返回。

答辩要点:能解释伪代码中每个分支的作用,说明清洗步骤的必要性。


图4.2 数据清洗伪代码

位置:4.1.2节
描述DataCleanerTool 的清洗流程伪代码。

详细解释

  • 清理列名:去除首尾空格、替换连续空格、移除控制字符。
  • 找出并跳过备注行:检测第一行是否包含“备注”“note”等关键词。
  • 处理字符串列:移除特殊字符、标准化空白。
  • 删除全空行和重复行。
  • 返回清洗后的 DataFrame。

答辩要点:能说出清洗的五步操作,强调“跳过备注行”是为了应对用户上传的表格可能带有说明文字。


图4.3 智能字段匹配伪代码

位置:4.2节
描述MatchingAgent 调用大模型的伪代码。

详细解释

  • 提取源数据列信息(列名、类型、示例值)和目标表单字段信息(字段名、标签、类型、示例值)。
  • 构造系统提示词,要求模型返回 JSON 格式的映射结果(包含 recommended_mapping、confidence_scores 等)。
  • 调用 LangChain Agent,执行 agent.invoke()
  • 解析返回内容,提取 JSON;若失败则降级为子串匹配。

答辩要点:说明为什么用 Agent 而不是直接调 API(Agent 可先调用工具获取数据再推理),以及降级策略。


图4.4 目标网页表单自动填充伪代码

位置:4.3节
描述BrowserFillerTool.fill_single_record 的核心流程。

详细解释

  • 启动 Firefox 浏览器(可配置有头/无头)。
  • 访问目标 URL,等待表单加载。
  • 对每个要填充的字段:
    • 四级定位:name → id → placeholder → label 关联。
    • 判断控件类型:
      • 文本框/文本域:clear + send_keys
      • 下拉框:Select 按 visible_text/value/index 尝试
      • 单选/复选框:若有选项列表,调用 OptionMatchingTool 匹配,然后点击。
  • 填充完成后若 keep_open=True 则保持浏览器打开,用户手动关闭后继续下一条。

答辩要点:能解释四级定位策略和不同控件的处理差异,说明为什么保留浏览器打开(便于用户检查)。


图4.5 结果导出伪代码

位置:4.4节
描述/export 接口的实现伪代码。

详细解释

  • 获取已填充的 DataFrame(filling_service.get_result_dataframe())。
  • 将列名替换为目标字段的显示标签。
  • 根据 format 参数(excel/csv)调用 to_excelto_csv 写入临时文件。
  • 返回 FileResponse 触发浏览器下载,后台删除临时文件。

答辩要点:说明导出前列名替换的作用(让导出的文件列名是中文标签,而非内部字段名)。


图4.6 前端界面步骤化引导功能实现伪代码

位置:4.5.1节
描述:Vue 前端实现步骤化引导的核心逻辑伪代码。

详细解释

  • 定义响应式状态:sourcePreview.columnstargetFieldsInfomappingPairsfillResult
  • 使用 v-if 条件渲染:
    • 映射卡片仅在 sourcePreview.columns.length && targetFieldsInfo.length 时显示。
    • “获取推荐”按钮仅在 mappingPairs.length === 0 时显示。
    • 映射表格和填充按钮仅在 mappingPairs.length > 0 时显示。
    • 导出区域仅在 fillResult && fillResult.success 时显示。

答辩要点:说明这种设计的好处(自然引导、防止错误操作、降低用户学习成本)。


图4.7、4.8、4.9、4.10 前端界面主要代码

位置:4.5.2节
描述:Vue 前端的主要代码片段,包括 HTML 模板和 JavaScript 逻辑。

详细解释

  • 图4.7:index.html 中数据源配置区域的模板代码,包含文件上传和 URL 输入。
  • 图4.8:目标表单配置区域的模板代码。
  • 图4.9:字段映射表格的模板代码,包含下拉框和置信度颜色类绑定。
  • 图4.10:导出按钮区域的模板代码。

答辩要点:不需要逐行解释,但能说明这些代码共同构成了前端的步骤化界面,关键是用 v-ifv-model 实现了动态交互。


图4.11 前端初始展示

位置:4.5.2节
描述:系统刚打开时的界面截图。

详细解释

  • 页面分为“上传源数据”和“目标网页表单”两个卡片。
  • 源数据区域默认显示 Excel 文件选择,可下拉切换类型。
  • 目标表单区域只有 URL 输入框。
  • 下方字段映射卡片尚未显示(因为源数据和目标表单都未加载)。

答辩要点:能指出此时映射卡片不可见,符合步骤化引导设计。


图4.12 上传源数据与目标URL后

位置:4.5.2节
描述:用户上传 Excel 文件并输入目标 URL 后的界面截图。

详细解释

  • 源数据区域显示了数据预览(列名、前几行数据)。
  • 目标表单区域显示了解析出的字段列表(标签、类型)。
  • 此时字段映射卡片自动出现,并显示“获取智能推荐映射”按钮。

答辩要点:强调只有两者都加载完成后,映射区才会出现,体现步骤化引导。


图4.13 智能字段匹配映射后

位置:4.5.2节
描述:点击“获取智能推荐映射”后,映射表格展示推荐结果。

详细解释

  • 表格列:目标字段(显示标签)、选择源字段(下拉框)、置信度。
  • 置信度用颜色背景区分:绿色高置信度、黄色中、红色低。
  • 用户可通过下拉框手动修改源字段映射。

答辩要点:能说明为什么用颜色(直观展示可靠性),以及用户可修改的设计目的(人机协同)。


图4.14 智能字段匹配结果(部分源字段无映射匹配)

位置:4.5.2节
描述:当源数据只有3个匹配列时,未匹配的字段置信度为0、底色标红。

详细解释

  • 某些目标字段(如“补充说明”)没有推荐映射,置信度为0,行背景红色。
  • 用户可手动为这些字段选择源列或保持“不映射”。

答辩要点:说明这种情况在实际中常见(源表可能缺少某些字段),系统允许跳过不填充。


图4.15 确认填充后

位置:4.5.2节
描述:点击“确认填充到目标网页”后,填充完成的前端提示。

详细解释

  • 蓝色提示框显示“全部成功”及填充统计信息。
  • 此时导出按钮出现(因为 fillResult.success 为 true)。
  • 用户可点击“导出为Excel/CSV”保存结果。

答辩要点:说明导出按钮的出现是条件渲染的结果,确保只有填充成功后才能导出。


三、第五章 系统测试 中的图表

图5.1 Excel测试数据

位置:5.3.1节
描述:用于性能测试的 Excel 文件内容截图,包含7列(姓名、手机号、邮箱、公司名称、职务、咨询类型、补充说明)和1条记录。

详细解释

  • 数据为中文列名,与目标表单字段语义对应。
  • 用于测试数据接入功能的性能(平均耗时 0.27 秒)。

答辩要点:说明选择这种小数据集是为了测试功能正确性,性能数据仅代表演示规模。


图5.2 SQL测试数据

位置:5.3.1节
描述:SQL 文件中的 INSERT 语句截图,包含7列英文列名(name、phone、email、company、title、type、remark)和1条记录。

详细解释

  • 列名为英文,用于测试跨语言字段匹配能力(大模型仍能正确匹配到中文目标字段)。
  • 展示了系统对 SQL 文件的解析能力。

答辩要点:强调测试了中英文不同语言列名的匹配,证明大模型语义理解的优势。


图5.3 本地网页

位置:5.3.1节
描述:本地搭建的静态表格测试页面(dataform_test2.html)截图。

详细解释

  • 页面包含7列中文表头(姓名、手机号、邮箱、公司名称、职务、咨询类型、补充说明)和1条示例数据。
  • 用于测试网页表格 URL 数据源的接入性能(平均耗时 0.27 秒)。

图5.4 在线网页

位置:5.3.1节
描述:在线网页表格(datatables.net 示例)截图,同样包含7列和1条记录。

详细解释

  • 用于测试从互联网抓取表格数据的性能(平均耗时 1.55 秒,因需要网络请求)。

答辩要点:说明在线网页耗时较长是正常现象,但仍在可接受范围。


图5.5 本地目标网页

位置:5.3.2节
描述:测试用的本地目标表单页面(test2.html)截图。

详细解释

  • 这是一个美观的联系表单,包含姓名、手机号、邮箱、公司名称、职务、咨询类型、补充说明等字段。
  • 表单控件包含文本框、下拉框、文本域等。
  • 用于目标表单解析功能测试(平均解析耗时 14.6 秒,主要时间花在 Selenium 启动浏览器上)。

答辩要点:能解释解析时间长的原因(Selenium 启动浏览器 + 加载页面),并说明每个填充任务只解析一次,可接受。


图5.6 三条数据的SQL文件

位置:5.3.4节
描述:包含3条记录的 SQL 文件截图,用于批量填充性能测试。

详细解释

  • 测试3条记录填充平均耗时 36.46 秒(接近单条时间的3倍,线性增长)。

答辩要点:说明当前版本每个记录新建浏览器,导致时间线性增长,后续可优化为复用浏览器会话。


表5.1 数据接入性能测试表

内容:Excel 0.27s、SQL 0.24s、本地网页 0.27s、在线网页 1.55s。

答辩要点:解释在线网页耗时差异原因,说明本地解析很快,符合预期。


表5.2 表单解析测试结构表

内容:目标表单解析平均 14.59 秒。

答辩要点:解释时间主要耗费在 Selenium 启动和等待页面渲染,HTML 解析本身很快。


表5.3 字段匹配推荐测试结果表

内容:3对7 平均 6.36s、5对7 平均 5.88s、7对7 平均 7.81s。

答辩要点:说明耗时主要取决于 API 延迟,与字段数量关联不大。


表5.4 表单填充测试结果表

内容:1条 9.64s、3条 36.46s。

答辩要点:解释原因(每个记录新建浏览器),承认不足并提出改进方向(复用浏览器实例)。


表5.5 结果导出测试结果表

内容:Excel 0.52s、CSV 0.49s。

答辩要点:说明导出很快,因为只是内存中的 DataFrame 写入临时文件。


四、其他重要图表(附录/外文资料中的图)

论文附录中外文资料原文中包含大量技术架构图,但与系统实现直接相关的主要是前文所述。答辩时只需关注论文正文中的图即可。


答辩前自检清单

  • [ ] 能口述图3.1架构图的四层结构及每一层包含的组件。
  • [ ] 能说明图3.2用例图中用户有哪些操作权限。
  • [ ] 能按图3.3活动图顺序复现系统完整流程。
  • [ ] 能解释图3.4、3.5核心类图中每个类的大致职责。
  • [ ] 能说明图4.1-4.6伪代码对应的功能模块。
  • [ ] 能指出图4.11-4.15前端界面每一步的状态变化。
  • [ ] 能解释各性能测试图表中的数据含义及背后的原因(如为什么目标表单解析慢、为什么3条记录填充时间接近3倍等)。

论文中的架构设计图与实际系统运行逻辑的一致性分析

答辩回答(建议):

是的,论文中的架构设计图(图3.1)与系统的实际运行逻辑完全一致,各层职责划分清晰,模块调用关系准确。 下面我逐一对应说明:


一、架构图的四层结构与实际代码的对应关系

架构层设计图内容实际代码实现一致性
表现层Vue.js 单页应用,负责文件上传、映射修正、填充执行、结果导出frontend/index.html + main.js + styles.css,使用 Vue 3 组合式 API,通过 axios 调用后端接口✅ 完全一致
业务层FastAPI RESTful 服务,包含数据接入、字段匹配、数据填充三个独立模块backend/api/endpoints.py 中定义了 /source/preview/mapping/recommend/fill/execute 等路由,分别调用对应的 Service✅ 完全一致
服务层封装 LangChain 语义匹配和 Selenium 表单填写MatchingAgent 调用通义千问模型,BrowserFillerTool 驱动 Firefox 浏览器✅ 完全一致
数据层Excel、SQL、网页读取,数据清洗,选项匹配,浏览器驱动ExcelReadToolSQLFileToolWebScraperToolDataCleanerToolOptionMatchingTool 以及 geckodriver✅ 完全一致

二、核心调用链验证

实际运行流程

  1. 用户在前端上传 Excel → 前端 POST /api/source/previewDataIngestionService.load_source()ExcelReadTool.read_from_bytes() → 返回 DataFrame 预览。
  2. 用户输入目标 URL → 前端 GET /api/target/previewWebScraperTool.extract_form_structure() → 返回字段列表。
  3. 用户点击“获取推荐” → 前端 POST /api/mapping/recommendFieldMatchingService.get_recommendation()MatchingAgent 调用 LangChain Agent → 通义千问返回映射 JSON。
  4. 用户确认后点击“填充” → 前端 POST /api/fill/executeDataFillingService.fill_target_form()FillAgent.fill()BrowserFillerTool.fill_single_record() → Selenium 执行填充。
  5. 用户点击“导出” → 前端 GET /api/export → 返回临时文件。

每一层间的调用关系与架构图中的箭头方向完全吻合


三、可能存在的细微差异(答辩时可说明)

  1. 架构图中服务层直接画了 LangChain 和 Selenium 两个模块,实际代码中 MatchingAgentFillAgent 分别调用它们,但逻辑上仍然归属于服务层,没有矛盾。
  2. 架构图中未画出“选项匹配工具”,但实际实现中有独立的 OptionMatchingTool,它在填充过程中被 BrowserFillerTool 调用。这属于服务层内部的细化,不影响架构图的总体正确性。
  3. 架构图中的数据层将“浏览器驱动”单独列出,实际代码中浏览器驱动由 BrowserFillerTool 内部管理,但可以认为归属于数据层的“基础设施”。

四、结论

架构设计图准确反映了系统的分层结构和模块划分,每一层在实际代码中都有对应的实现类或服务,模块间的数据流向与设计一致。 因此,该架构图可以作为系统设计的可靠依据,也证明了系统设计阶段的前瞻性和实现阶段的忠实度。

贡献者

The avatar of contributor named as freeway348 freeway348

文件历史

撰写