50 lines
3.0 KiB
Markdown
50 lines
3.0 KiB
Markdown
---
|
||
inclusion: always
|
||
---
|
||
|
||
# 项目开发规范与注意事项
|
||
|
||
## 技术栈
|
||
|
||
- Plasmo + React + TypeScript
|
||
- 样式:SCSS
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
src/
|
||
├── background/
|
||
│ └── index.ts # 插件后台脚本(Service Worker)
|
||
├── components/
|
||
│ ├── SidebarPanel.tsx # 侧边栏面板组件(主操作界面,自动填写入口)
|
||
│ └── SidebarPanel.scss # 侧边栏样式
|
||
├── contents/
|
||
│ └── sidebar.tsx # Content Script 入口(注入侧边栏到页面)
|
||
├── lib/
|
||
│ ├── types.ts # 所有共享类型定义(简历接口、表单标签、匹配字段、UI组件库配置)
|
||
│ ├── constants.ts # 常量数据(JOB_FORM_LABELS标签数组、TEST_FILL_DATA测试数据、UI_LIB_PICKER_CONFIGS组件库配置、SPECIAL_LABEL_PLACEHOLDERS特殊标签修正配置)
|
||
│ ├── dom.ts # DOM工具(extractDomStructure提取DOM树、detectPageLanguage语言检测、isJobApplicationForm表单页判断、buildSelector选择器生成)
|
||
│ ├── formMatcher.ts # 表单字段匹配(matchFormFields在DOM中匹配标签对应的input、findNearestInput查找input、fixSpecialLabelInput特殊标签修正)
|
||
│ ├── pickerDetector.ts # 选择器识别(detectPickerField检测字段是否为选择器类型,通过UI组件库类名/提示文字/主动点击DOM差异对比三种方式)
|
||
│ ├── pickerFill.ts # 选择器选项匹配与点击(fuzzyMatchScore模糊匹配、clickBestOptionInDropdown弹出层选项点击、findAndClickOptionInVisiblePopups全局弹出层搜索)
|
||
│ ├── datePicker.ts # 日期选择器填写(fillDatePicker日期填写、tryClickMonth月份点击、tryClickDay日期点击)
|
||
│ ├── autofill.ts # 自动填写核心(delay/forceSetValue工具函数、fillMatchedField字段填写入口、fillPickerField选择器填写含DOM差异对比、closePopup弹窗关闭、fillAllFields批量填写)
|
||
│ ├── resumeUpload.ts # 简历上传(detectAndUploadResume检测上传按钮并从OSS下载注入文件)
|
||
│ └── api.ts # API接口模块
|
||
└── assets/
|
||
├── icon.png # 插件图标
|
||
└── icon1.png # 备用图标
|
||
```
|
||
|
||
## 编码规范
|
||
|
||
- 页面结构和ts的常量变量和方法都要加中文注释
|
||
- 重要逻辑加【注意】标记防止误删(如fillPickerField的DOM差异对比逻辑)
|
||
|
||
## 注意事项
|
||
|
||
- 项目接口有Java后端和Python AI后端两种,如果是联调加入新接口,一定要确认有没有说是哪个后端的
|
||
- fillPickerField中的DOM差异对比弹出层检测是核心机制,不要简化或删除
|
||
- detectPickerField的方式3(主动点击检测DOM变化)是自建组件选择器识别的关键,不要删除
|
||
- UI_LIB_PICKER_CONFIGS里不要加容易误匹配的配置(如之前Beisen Phoenix被误匹配到新东方自建网站)
|