智能表单映射填充系统 - 3天学习指南
面向读者: 面试者、新入职工程师、技术评估人员 标准: 大厂HR技术面试标准 目标: 3天内掌握项目技术选型、系统架构、核心功能及实现原理
一、项目概览
1.1 项目定位
智能表单映射填充系统(WebFill)是一个基于大语言模型的自动化数据录入系统,核心价值在于:
- 解决的痛点: 企业日常存在大量跨系统数据录入场景,人工填写效率低、易出错
- 核心能力: 自动识别源数据与目标表单的语义对应关系,并自动完成数据填写
- 技术亮点: 结合了传统数据处理与新兴大模型技术,实现智能化字段映射
1.2 技术选型及选型理由
| 技术层级 | 技术栈 | 选型理由 |
|---|---|---|
| 后端框架 | FastAPI + Uvicorn | 异步高性能、自动API文档、现代Python特性支持 |
| 前端框架 | Vue 3 + Axios | 轻量、响应式、易于快速构建交互界面 |
| 大语言模型 | 阿里云百炼 (Qwen-turbo) | 中文语义理解能力强、API调用稳定、性价比高 |
| LLM框架 | LangChain 1.x | 支持Agent模式、工具调用链、多模型适配 |
| 数据处理 | Pandas | 成熟的数据处理能力、Excel/CSV读写便捷 |
| 浏览器自动化 | Selenium + Firefox | 开源免费、稳定性好、支持复杂网页交互 |
| 批量填充限制 | 100条记录 | 代码层面限制,防止资源消耗过大 |
| HTML解析 | BeautifulSoup4 + lxml | 强大的HTML解析能力、支持多种解析策略 |
| Excel处理 | openpyxl + xlrd | 覆盖.xlsx和.xls格式、性能稳定 |
关键技术决策分析:
为什么选择LangChain Agent而非直接调用LLM?
- Agent模式允许大模型"先思考再行动",通过调用工具获取信息后再做决策
- 支持工具调用链,可组合多个工具完成复杂任务
- 提供了结构化的输出控制和错误处理机制
为什么选择Firefox而非Chrome?
- Firefox完全开源,无商业授权限制
- Geckodriver跨平台兼容性更好
- 对自动化脚本的检测机制相对宽松
为什么选择Qwen-turbo?
- 阿里云百炼API调用延迟低、稳定性高
- Qwen系列模型在中文语义理解和JSON格式输出方面表现优秀
- 支持流式输出和结构化响应
二、系统架构
2.1 整体架构图
┌─────────────────────────────────────────────────────────────────┐
│ 前端层 (Vue 3) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌───────┐ │
│ │ 数据上传 │ │ 表单解析 │ │ 字段映射 │ │ 自动填充 │ │ 结果导出│ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └───┬───┘ │
└───────┼────────────┼────────────┼────────────┼─────────────┼─────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ API层 (FastAPI) │
│ /source/preview /target/preview /mapping/recommend │
│ /fill/execute /export │
└─────────────┬─────────────┬─────────────────────────────────────┘
│ │
▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 服务层 (Services) │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ DataIngestionService │ │ FieldMatchingService │ │
│ │ - 多源数据接入 │ │ - AI字段映射推荐 │ │
│ │ - 表单结构解析 │ │ - 映射置信度评估 │ │
│ └───────────┬──────────┘ └───────────┬──────────┘ │
│ ┌───────────┴──────────┐ │ │
│ │ DataFillingService │◄───────────┘ │
│ │ - 数据格式转换 │ │
│ │ - 批量填充执行 │ │
│ └───────────┬──────────┘ │
└──────────────┼──────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 智能体层 (Agents) │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ MatchingAgent │ │ FillAgent │ │
│ │ - LangChain Agent │ │ - 批量填充调度 │ │
│ │ - 语义映射推理 │ │ - 错误处理与重试 │ │
│ └───────────┬──────────┘ └───────────┬──────────┘ │
└──────────────┼──────────────────────────┼───────────────────────┘
│ │
▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 工具层 (Tools) │
│ ┌───────┐ ┌───────┐ ┌───────────┐ ┌─────────────┐ ┌─────────┐ │
│ │Excel │ │ SQL │ │ WebScraper│ │BrowserFiller│ │Option │ │
│ │ Tool │ │ Tool │ │ Tool │ │ Tool │ │Matching │ │
│ └───────┘ └───────┘ └───────────┘ └─────────────┘ └─────────┘ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │DataCleaner │ │FieldMatch- │ │
│ │ Tool │ │ ingTools │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ 数据源 │ │ 目标网页 │
│(Excel/SQL/│ │ (表单页面)│
│ URL) │ │ │
└──────────┘ └──────────┘2.2 数据流分析
完整数据流程:
- 源数据上传: 用户上传Excel/SQL文件或输入URL →
DataIngestionService.load_source()→ 调用对应工具读取 →DataCleanerTool.clean_dataframe()清洗 → 缓存到内存 - 目标表单解析: 用户输入目标URL →
DataIngestionService.parse_target_form()→WebScraperTool.extract_form_structure()→ 返回字段信息 - 智能映射推荐: 用户点击推荐 →
FieldMatchingService.get_recommendation()→MatchingAgent.get_mapping_recommendation()→ LangChain Agent调用工具分析 → 返回JSON映射结果 - 数据填充执行: 用户确认映射 →
DataFillingService.fill_target_form()→ 数据转换 →FillAgent.fill()→BrowserFillerTool.fill_single_record()→ Selenium控制浏览器填写 - 结果导出: 用户点击导出 →
DataFillingService.get_result_dataframe()→ Pandas生成文件 → 返回文件下载
2.3 模块职责划分
| 模块 | 文件路径 | 核心职责 |
|---|---|---|
| 主入口 | backend/main.py | FastAPI应用初始化、CORS配置、路由挂载 |
| API路由 | backend/api/endpoints.py | HTTP接口定义、请求参数校验、响应处理 |
| 数据接入服务 | backend/services/data_ingestion.py | 多源数据加载、表单解析、数据缓存 |
| 字段匹配服务 | backend/services/field_matching.py | AI映射推荐调度 |
| 数据填充服务 | backend/services/data_filling.py | 数据转换、填充执行、结果保存 |
| 映射智能体 | backend/agents/matching_agent.py | LangChain Agent配置、系统提示词、映射推理 |
| 填充智能体 | backend/agents/fill_agent.py | 批量填充调度、错误处理 |
| Excel工具 | backend/tools/excel_tool.py | Excel文件读取(.xlsx/.xls) |
| SQL工具 | backend/tools/sql_file_tool.py | SQL文件解析(CREATE TABLE/INSERT) |
| 网页抓取工具 | backend/tools/web_scraper_tool.py | 表格提取、表单结构解析 |
| 浏览器填充工具 | backend/tools/browser_filler_tool.py | Selenium浏览器控制、字段定位与填充 |
| 选项匹配工具 | backend/tools/option_matching_tool.py | 大模型选项匹配、同义词降级策略 |
| 数据清洗工具 | backend/tools/data_cleaner_tool.py | DataFrame标准化清洗 |
| 字段匹配工具集 | backend/tools/field_matching_tools.py | LangChain @tool装饰器定义 |
| 数据模型 | backend/models/schemas.py | Pydantic数据结构定义 |
| 前端应用 | fronted/index.html | Vue 3单页面应用 |
| 前端逻辑 | fronted/main.js | API调用、状态管理、用户交互 |
三、核心功能实现深度分析
3.1 功能一:多源数据接入
支持数据源类型:
- Excel文件(.xlsx/.xls)
- SQL文件(CREATE TABLE + INSERT)
- 网页表格URL
实现原理:
# 核心流程:data_ingestion.py 第42-71行
async def load_source(self, source_input) -> pd.DataFrame:
# 1. 识别数据源类型
if source_input.type == "excel":
df = self.excel_tool.read_from_bytes(source_input.content)
elif source_input.type == "sql":
df = self.sql_tool.parse_sql_file(sql_content)
elif source_input.type == "url":
df = await self._read_web_table(source_input.url)
# 2. 统一清洗流程
df = self.cleaner.clean_dataframe(df)
return df技术要点:
- Excel读取: 双引擎策略(openpyxl为主,xlrd降级),支持从字节流直接读取
- SQL解析: 正则表达式提取CREATE TABLE和INSERT语句,支持反引号包裹的标识符
- 网页抓取: 静态解析优先(pandas.read_html),失败后降级为Selenium动态渲染
- 数据清洗: 标准化流程(列名清理→表头检测→字符串清理→空行删除→重复行删除)
3.2 功能二:目标表单结构解析
提取内容:
- 字段显示标签(label)
- 字段名称(name属性)
- 字段类型(input/select/textarea/radio/checkbox)
- 选项列表(对于select/radio/checkbox)
实现原理:
# web_scraper_tool.py 第152-300行
def _sync_extract_form_structure(self, url: str) -> Dict[str, Any]:
# 1. Selenium打开页面,等待form元素加载
# 2. 遍历所有input/select/textarea元素
# 3. 6优先级标签获取策略
# 4. 特殊处理radio/checkbox组和select选项
# 5. 返回结构化字段信息6优先级标签获取策略(关键技术点):
| 优先级 | 策略 | 适用场景 |
|---|---|---|
| 1 | 通过id查找for=该id的label | 标准HTML表单 |
| 2 | 查找父级label包裹 | 内联label结构 |
| 3 | aria-label属性 | 无障碍设计页面 |
| 4 | placeholder属性 | 简洁表单 |
| 5 | title属性 | 带提示的表单 |
| 6 | name/id属性 | 兜底方案 |
3.3 功能三:AI智能字段映射
核心机制: LangChain Agent模式
# matching_agent.py 第20-53行
class MatchingAgent:
def __init__(self):
# 1. 初始化LLM(Qwen-turbo,通过DashScope调用)
self.llm = ChatOpenAI(model="qwen-turbo", ...)
# 2. 创建Agent,绑定两个工具
self.agent = create_agent(
model=self.llm,
tools=[analyze_source_columns, analyze_target_fields]
)
# 3. 系统提示词,定义Agent行为
self.system_prompt = """你是一个专业的数据映射专家..."""工具定义:
# field_matching_tools.py
@tool
def analyze_source_columns(source_columns, source_sample, source_types) -> str:
"""分析源数据表的列结构"""
...
@tool
def analyze_target_fields(target_columns, target_labels, target_types, target_sample) -> str:
"""分析目标表单的字段结构"""
...映射流程:
- 用户请求 → Agent接收上下文
- Agent调用
analyze_source_columns获取源数据详情 - Agent调用
analyze_target_fields获取目标字段详情 - Agent综合分析,输出JSON格式映射结果
- 异常时降级为规则匹配(字符串包含关系)
3.4 功能四:智能选项匹配
应用场景: 单选框、复选框、下拉框的选项值匹配
双策略匹配机制:
# option_matching_tool.py 第89-140行
def match_value_to_options(self, value, field_label, options, multi=False):
# 策略1:大模型直接匹配(首选)
if dashscope.api_key:
try:
resp = Generation.call(model=self.model, prompt=prompt, ...)
return result.get("matched_values", [])
except:
pass
# 策略2:同义词降级匹配(备选)
return self._fallback_match(value, field_label, options, multi)同义词扩展机制:
# option_matching_tool.py 第25-58行
def _expand_synonyms_sync(self, value, field_label="") -> List[str]:
# 调用大模型生成同义词
prompt = f"请为'{value}'生成{self.max_synonyms}个同义词..."
resp = Generation.call(model=self.model, prompt=prompt, ...)
# 返回原值+同义词列表
return [value] + synonyms3.5 功能五:浏览器自动化填充
支持字段类型:
- 文本输入框(input/textarea)
- 下拉选择框(select)
- 单选按钮(radio)
- 复选框(checkbox)
实现原理:
# browser_filler_tool.py 第64-146行
async def fill_single_record(self, target_url, data, fields_info):
# 1. 创建Firefox浏览器实例(非headless模式,便于用户查看)
driver = create_firefox_driver(headless=self.headless)
# 2. 遍历每个字段,定位并填充
for field_name, value in data.items():
element = self._locate_element(driver, field_name)
# 根据字段类型执行不同填充逻辑
# 3. 保持浏览器打开,等待用户确认
if self.keep_open:
while True:
time.sleep(1)字段定位策略:
| 优先级 | 定位方式 | 示例 |
|---|---|---|
| 1 | By.NAME | driver.find_element(By.NAME, "username") |
| 2 | By.ID | driver.find_element(By.ID, "user_id") |
| 3 | XPath(placeholder) | //input[contains(@placeholder, '用户名')] |
| 4 | 通过label查找 | //label[contains(text(), '用户名')] → 获取for属性 |
3.6 功能六:结果导出
支持格式: Excel(.xlsx)、CSV
实现原理:
# endpoints.py 第76-95行
@router.get("/export")
async def export_result(format: str = "excel"):
# 1. 获取缓存的结果DataFrame
result_df = filling_service.get_result_dataframe()
# 2. 使用Pandas生成文件
with tempfile.NamedTemporaryFile(delete=False, suffix=suffix) as tmp:
if format == "excel":
result_df.to_excel(tmp.name, index=False)
else:
result_df.to_csv(tmp.name, index=False)
# 3. 返回FileResponse,自动触发下载
return FileResponse(
path=tmp_path,
media_type=media_type,
filename=f"filled_result{suffix}",
background=BackgroundTasks().add_task(os.unlink, tmp_path)
)四、关键技术亮点与设计模式
4.1 Agent模式的应用
设计理念: 将复杂决策交给大模型,通过工具调用获取信息,实现"思考-行动"循环
优势:
- 语义理解能力强,能处理同义词、多语言等复杂场景
- 可扩展性好,新增工具只需添加@tool装饰器
- 容错性高,Agent失败时有规则匹配降级
4.2 双层降级策略
第一层: Agent映射 → 规则匹配
# matching_agent.py 第110-123行
def _fallback_matching(self, source_columns, target_columns, target_labels):
# 简单字符串包含匹配
recommended = {}
for tgt in target_columns:
tgt_lower = target_labels.get(tgt, tgt).lower()
for src in source_columns:
if src.lower() in tgt_lower or tgt_lower in src.lower():
recommended[tgt] = src
break
return recommended第二层: 大模型选项匹配 → 同义词匹配
# option_matching_tool.py 第142-148行
def _fallback_match(self, value, field_label, options, multi):
# 基于同义词的精确匹配
if multi:
return self.match_options_multi_sync(value, field_label, options)
else:
single = self.match_option_sync(value, field_label, options)
return [single] if single else []4.3 内存缓存机制
应用场景: 跨请求共享源数据
# data_ingestion.py 第14-20行
class DataIngestionService:
def __init__(self):
# 进程内缓存,保存已加载的源数据DataFrame
self._cache = {}
def cache_dataframe(self, key: str, df: pd.DataFrame):
self._cache[key] = df
def get_cached_dataframe(self, key: str) -> Optional[pd.DataFrame]:
return self._cache.get(key)使用流程:
/source/preview→ 加载数据 →cache_dataframe("current_source", df)/fill/execute→get_cached_dataframe("current_source")→ 获取数据
4.4 重试机制
应用场景: 浏览器操作失败重试
# browser_filler_tool.py 第66-75行
async def fill_single_record(self, target_url, data, fields_info):
last_error = ""
for attempt in range(self.max_retries): # 默认2次重试
try:
return await asyncio.to_thread(self._sync_fill, ...)
except Exception as e:
last_error = str(e)
await asyncio.sleep(2)
return False, f"填充失败,已重试 {self.max_retries} 次: {last_error}"4.5 批量填充限制
代码实现:
# fill_agent.py 第10-12行
async def fill(self, target_url: str, data_records: list, field_mapping: dict, fields_info: list = None) -> tuple:
if len(data_records) > 100:
return False, "当前版本暂不支持超过100条记录的批量填充", 0设计理由:
- 每条记录填充需要启动新浏览器实例,资源消耗大
- 防止长时间运行导致系统不稳定
- 生产环境可通过优化浏览器复用机制提升限制
五、大厂HR面试题库
5.1 技术选型类
Q1: 为什么选择FastAPI而非Flask/Django?
A: FastAPI支持异步编程,性能更高;自动生成OpenAPI文档,便于前后端协作;类型提示支持好,开发体验佳;轻量级,适合快速构建API服务。
Q2: 为什么使用LangChain Agent而非直接调用LLM API?
A: Agent模式允许大模型通过工具调用获取信息后再做决策,避免了一次性prompt过长的问题;支持工具调用链,可组合多个工具完成复杂任务;提供了结构化的输出控制和错误处理机制。
Q3: 为什么选择Firefox作为自动化浏览器?
A: Firefox完全开源,无商业授权限制;Geckodriver跨平台兼容性更好;对自动化脚本的检测机制相对宽松,稳定性更高。
5.2 架构设计类
Q4: 系统的分层架构是怎样的?各层职责是什么?
A: 分为5层:前端层(Vue3,UI交互)→ API层(FastAPI,HTTP接口)→ 服务层(业务逻辑)→ 智能体层(Agent决策)→ 工具层(具体操作)。每层职责单一,便于维护和扩展。
Q5: 数据缓存机制是如何设计的?为什么不使用Redis?
A: 当前使用进程内存缓存,适合单机部署场景;避免引入额外依赖,降低部署复杂度;后续可扩展为Redis实现分布式缓存。
Q6: 系统的容错机制有哪些?
A: 双层降级策略(Agent→规则匹配,LLM→同义词匹配);浏览器操作重试机制;静态解析失败后降级为动态渲染;异常捕获和友好错误提示。
5.3 功能实现类
Q7: 表单字段标签提取的6个优先级策略是什么?为什么这样设计?
A: 优先级从高到低:for/id关联→父级label包裹→aria-label→placeholder→title→name/id。这样设计是因为不同网站的表单结构差异很大,需要多种策略覆盖各种场景,优先选择语义最明确的标签来源。
Q8: 智能选项匹配的双策略机制是如何工作的?
A: 首选大模型直接匹配,通过prompt让模型分析值与选项的语义对应关系;若大模型调用失败,则降级为同义词匹配,先调用大模型生成同义词,再进行精确匹配。
Q9: 浏览器自动化填充支持哪些字段类型?各类型的填充方式是什么?
A: 支持文本输入(send_keys)、下拉选择(Select.select_by_value/text/index)、单选按钮(click)、复选框(click)。
Q10: 多源数据接入是如何实现统一处理的?
A: 通过DataIngestionService统一入口,根据数据源类型调用不同工具读取数据,然后统一经过DataCleanerTool清洗,最终返回标准化的DataFrame。
5.4 性能优化类
Q11: 网页抓取为什么采用静态解析优先、动态渲染降级的策略?
A: 静态解析(pandas.read_html)速度快、资源消耗低;动态渲染(Selenium)速度慢、资源消耗高。因此优先尝试静态解析,仅在必要时使用动态渲染。
Q12: 数据清洗流程包含哪些步骤?为什么需要这些步骤?
A: 列名清理→表头检测→字符串清理→空行删除→重复行删除。这些步骤确保数据质量,避免后续处理出现异常。
5.5 扩展性与改进类
Q13: 当前系统的局限性有哪些?如何改进?
A:
- 内存缓存不支持分布式部署 → 引入Redis
- 批量填充效率低(每条记录启动新浏览器)→ 复用浏览器会话
- 仅支持3种数据源 → 增加JSON、API等数据源
- 前端功能简单 → 增加数据预览、映射编辑等功能
Q14: 如何提升字段映射的准确性?
A: 增加更多特征(数据分布、字段描述);引入微调模型;使用向量数据库做语义相似度匹配;增加人工反馈机制。
Q15: 如何优化批量填充的性能?
A: 复用浏览器会话;并行填充(多个浏览器实例);增加填充速度控制;优化页面加载策略。
5.6 安全性与生产部署类
Q16: 当前系统的CORS配置存在什么安全风险?如何修复?
A: 当前配置
allow_origins=["*"]允许所有域名访问,存在CSRF攻击风险。生产环境应指定具体域名,如allow_origins=["https://yourdomain.com"]。
Q17: 生产环境部署需要考虑哪些因素?
A:
- CORS安全配置,限制允许的域名
- 使用Redis替代内存缓存,支持分布式部署
- 添加用户认证和授权机制
- 实现请求频率限制,防止API滥用
- 添加日志记录和监控告警
- 配置HTTPS,加密数据传输
- 考虑使用容器化部署(Docker/Kubernetes)
六、3天学习计划
第1天:基础认知与环境搭建
上午(3小时):
- [ ] 阅读项目整体架构,理解各模块职责
- [ ] 安装Python 3.10+和项目依赖
- [ ] 配置阿里云百炼API Key
- [ ] 安装Firefox浏览器和geckodriver
- [ ] 启动后端服务,访问API文档(http://localhost:8000/docs)
下午(3小时):
- [ ] 运行前端页面,完成一次完整的端到端测试
- [ ] 使用
test_main.http测试API端点,理解接口调用方式 - [ ] 使用
dataform_test2.html和test2.html测试表单解析功能 - [ ] 深入学习技术选型理由,理解为什么选择这些技术
- [ ] 分析API层代码,理解各接口的功能和参数
- [ ] 学习数据模型定义(schemas.py)
晚上(2小时):
- [ ] 总结第一天学习内容
- [ ] 准备第二天学习计划
- [ ] 复习面试题库中的技术选型类问题
第2天:核心功能深度剖析
上午(3小时):
- [ ] 深入学习多源数据接入实现(Excel/SQL/URL)
- [ ] 分析数据清洗流程(DataCleanerTool)
- [ ] 理解表单结构解析的6优先级标签策略
- [ ] 学习WebScraperTool的静态和动态抓取机制
下午(3小时):
- [ ] 深入学习AI字段映射机制(MatchingAgent)
- [ ] 理解LangChain Agent模式和@tool装饰器
- [ ] 分析智能选项匹配的双策略机制(OptionMatchingTool)
- [ ] 学习浏览器自动化填充实现(BrowserFillerTool)
晚上(2小时):
- [ ] 总结第二天学习内容
- [ ] 复习面试题库中的功能实现类问题
- [ ] 尝试修改一个工具类,理解代码结构
第3天:架构设计与面试准备
上午(3小时):
- [ ] 深入分析系统架构设计和数据流
- [ ] 学习双层降级策略和容错机制
- [ ] 理解内存缓存机制和重试机制
- [ ] 分析性能优化策略
下午(3小时):
- [ ] 完成端到端测试,验证所有功能
- [ ] 模拟面试场景,准备技术问答
- [ ] 分析系统局限性和改进方向
- [ ] 编写学习总结
晚上(2小时):
- [ ] 完整复习所有核心知识点
- [ ] 准备面试演示(系统功能演示+技术讲解)
- [ ] 调整状态,准备面试
七、快速上手指南
7.1 环境准备
# 1. 安装Python 3.10+
# 2. 安装依赖
cd backend
pip install -r requirements.txt
# 3. 配置.env文件
cat > .env << EOF
DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
QWEN_MODEL_NAME=qwen-turbo
QWEN_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
EOF
# 4. 安装Firefox浏览器
# 5. 下载geckodriver.exe,放置于项目根目录7.2 启动服务
# 启动后端服务
cd backend
uvicorn main:app --reload --port 8000
# 打开前端页面
# 直接用浏览器打开 fronted/index.html7.3 使用流程
- 上传源数据: 选择Excel/SQL文件或输入URL,点击"加载源数据"
- 解析目标表单: 输入目标网页URL,点击"解析目标表单"
- 智能映射推荐: 点击"获取智能推荐映射",查看自动匹配结果
- 确认填充: 调整映射关系(可选),点击"确认填充到目标网页"
- 导出结果: 填充完成后,选择Excel或CSV格式导出
八、项目文件清单
WebFill/
├── backend/ # 后端代码
│ ├── main.py # FastAPI应用入口
│ ├── requirements.txt # 依赖列表
│ ├── .env # 环境变量配置
│ ├── test_main.http # API接口测试文件
│ ├── api/
│ │ └── endpoints.py # API路由定义
│ ├── agents/
│ │ ├── matching_agent.py # 字段映射智能体
│ │ └── fill_agent.py # 数据填充智能体
│ ├── services/
│ │ ├── data_ingestion.py # 数据接入服务
│ │ ├── field_matching.py # 字段匹配服务
│ │ └── data_filling.py # 数据填充服务
│ ├── tools/
│ │ ├── excel_tool.py # Excel读取工具
│ │ ├── sql_file_tool.py # SQL解析工具
│ │ ├── web_scraper_tool.py # 网页抓取工具
│ │ ├── browser_filler_tool.py # 浏览器填充工具
│ │ ├── option_matching_tool.py # 选项匹配工具
│ │ ├── data_cleaner_tool.py # 数据清洗工具
│ │ └── field_matching_tools.py # 字段匹配工具集
│ ├── models/
│ │ └── schemas.py # 数据模型定义
│ └── utils/
│ └── helpers.py # 辅助函数
├── fronted/ # 前端代码(注意:目录名为fronted,非frontend)
│ ├── index.html # 主页面
│ ├── main.js # 业务逻辑
│ ├── styles.css # 样式文件
│ ├── dataform_test2.html # 表单解析测试页面1
│ └── test2.html # 表单解析测试页面2
├── geckodriver.exe # Firefox浏览器驱动
├── readme.txt # 原始项目运行指南
└── README.md # 项目学习指南文档九、总结
本项目是一个典型的"传统技术+AI"结合的应用,核心价值在于利用大语言模型的语义理解能力解决传统规则难以处理的字段映射问题。通过3天的系统学习,你应该能够:
- 熟练讲解技术选型:理解为什么选择这些技术,各技术的优势和适用场景
- 清晰描述系统架构:理解分层设计、数据流和模块职责
- 深入分析核心功能:掌握每个功能的实现原理和关键技术点
- 应对面试问答:能够回答HR和技术面试官的各类问题
- 独立操作演示:能够完整演示系统的所有功能
关键成功因素:
- 实践:一定要动手运行项目,完成端到端测试
- 理解:不仅要看代码,还要理解设计思路和决策理由
- 记忆:重点记忆技术选型理由、架构设计、核心算法和面试题库
- 表达:练习用清晰、专业的语言描述技术方案
祝你学习顺利,面试成功!