重复填写添加经历段数校正、文档规范hook、调整填写速度
This commit is contained in:
@@ -13,27 +13,44 @@ inclusion: always
|
||||
|
||||
```
|
||||
src/
|
||||
├── api/
|
||||
│ ├── aiApi.ts # AI后端接口(Python后端,简历优化/AI生成等)
|
||||
│ ├── dataApi.ts # 数据后端接口(Java后端,简历CRUD/岗位/会员等)
|
||||
│ └── request.ts # 请求封装(axios实例、拦截器、Token注入)
|
||||
├── background/
|
||||
│ └── index.ts # 插件后台脚本(Service Worker)
|
||||
│ └── index.ts # 插件后台脚本(Service Worker)
|
||||
├── components/
|
||||
│ ├── SidebarPanel.tsx # 侧边栏面板组件(主操作界面,自动填写入口)
|
||||
│ ├── SidebarPanel.tsx # 侧边栏面板组件(主操作界面,自动填写入口,字段进度展示)
|
||||
│ └── SidebarPanel.scss # 侧边栏样式
|
||||
├── contents/
|
||||
│ └── sidebar.tsx # Content Script 入口(注入侧边栏到页面)
|
||||
├── handlers/
|
||||
│ ├── handleAutoFillCommon.ts # 通用模式自动填写(不依赖任何CSS类名,纯DOM差异对比适配所有网站)
|
||||
│ └── handleAutoFillBeisen.ts # 北森模式自动填写(针对北森Phoenix UI的特殊处理,含级联选择器等)
|
||||
├── 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特殊标签修正)
|
||||
│ ├── types.ts # 所有共享类型定义(简历接口、表单标签、匹配字段、UI组件库配置、经历区块类型)
|
||||
│ ├── constants.ts # 常量数据(JOB_FORM_LABELS标签数组、EXPERIENCE_SECTION_CONFIGS经历配置、UI_LIB_PICKER_CONFIGS组件库配置)
|
||||
│ ├── dom.ts # DOM工具(extractDomStructure提取DOM树、detectPageLanguage语言检测、isJobApplicationForm表单页判断、buildSelector选择器生成、snapshotElementsInRange/diffSnapshots/findTopLevelNewElements DOM快照差异对比)
|
||||
│ ├── formMatcher.ts # 表单字段匹配(matchFormFields全页面匹配、matchFormFieldsInRange范围内匹配、matchMainFields非经历区域匹配、findNearestInput查找input)
|
||||
│ ├── labelFinder.ts # 标签定位(findLabelForInput通过form-item容器+DOM逆向遍历两遍策略识别input对应的标签文字)
|
||||
│ ├── pickerDetector.ts # 选择器识别(detectPickerField检测字段是否为选择器类型,通过UI组件库类名/提示文字/主动点击DOM差异对比三种方式)
|
||||
│ ├── pickerFill.ts # 选择器选项匹配与点击(fuzzyMatchScore模糊匹配、clickBestOptionInDropdown弹出层选项点击、findAndClickOptionInVisiblePopups全局弹出层搜索)
|
||||
│ ├── datePicker.ts # 日期选择器填写(fillDatePicker日期填写、tryClickMonth月份点击、tryClickDay日期点击)
|
||||
│ ├── autofill.ts # 自动填写核心(delay/forceSetValue工具函数、fillMatchedField字段填写入口、fillPickerField选择器填写含DOM差异对比、closePopup弹窗关闭、fillAllFields批量填写)
|
||||
│ ├── pickerFill.ts # 选择器选项匹配与点击(fuzzyMatchScore模糊匹配、clickBestOptionInDropdown弹出层内选项点击、findAndClickOptionInVisiblePopups弹出层搜索)
|
||||
│ ├── datePicker.ts # 日期选择器填写(fillDatePicker日期填写、detectNavButtons按钮探测、navigateToYearMonth导航、tryFillMonthPanel月份面板)
|
||||
│ ├── autofill.ts # 自动填写核心(forceSetValue强制写值、fillMatchedField统一填写入口、fillPickerField选择器填写含DOM差异对比、fillSearchPickerField搜索型选择器、fillTimePeriodField/fillTimeSingleField时间字段、fillYearMonthPicker年月选择器)
|
||||
│ ├── experienceSection.ts # 经历区块识别与段数管理(locateExperienceSections定位5大经历、expandExperienceSections补足段数、countExistingSegments段数校正、relocateSegmentContainer重定位、sortExperienceByTime时间排序)
|
||||
│ ├── fillStats.ts # 填写统计(scanPageFields按大标题分组扫描所有字段状态、extractNonResumeFields提取非简历格式字段、printFieldStats打印统计)
|
||||
│ ├── formStyle.ts # 表单样式(setFieldHighlight字段背景高亮、isRequiredField必填检测)
|
||||
│ ├── resumeDataHelper.ts # 简历数据工具(getResumeFieldValue根据section/index/field获取简历值)
|
||||
│ ├── resumeUpload.ts # 简历上传(detectAndUploadResume检测上传按钮并从OSS下载注入文件)
|
||||
│ └── api.ts # API接口模块
|
||||
│ └── channelBridge.ts # 跨域通信桥(panelBridge跨域读写数据,用于Content Script和网页端通信)
|
||||
├── utils/
|
||||
│ ├── auth.ts # 认证工具(getMemberStatus会员状态查询、getCustomizeResume定制简历获取)
|
||||
│ ├── cookie.ts # Cookie工具(getCookieValue从浏览器获取Cookie值)
|
||||
│ ├── delay.ts # 延时工具(delay统一延时函数,按等级管理:low/mid/high/max)
|
||||
│ └── storage.ts # 存储工具(chrome.storage的get/set/remove封装)
|
||||
└── assets/
|
||||
├── icon.png # 插件图标
|
||||
└── icon1.png # 备用图标
|
||||
└── logo-offerpai.png # OfferPai logo
|
||||
```
|
||||
|
||||
## 编码规范
|
||||
@@ -114,3 +131,11 @@ src/
|
||||
- `delay("max")` — 特殊超长延时(谨慎使用)
|
||||
- 具体毫秒数只在 `src/utils/delay.ts` 中统一设置,调用方只使用等级名称
|
||||
- 如需调整全局延时策略,只修改 `delay.ts` 中的 `DELAY_MS` 常量即可
|
||||
|
||||
## 代码组织与可维护性规范
|
||||
|
||||
- **修改或添加新逻辑时,必须完整查看逻辑相关的所有引用和引入**,理解上下游调用关系后再动手
|
||||
- **只要能实现,新逻辑优先单独抽出为独立方法**,通过返回值向调用方提供所需结果,保持项目的解耦性和高可维护性
|
||||
- 禁止将新增逻辑直接内联到已有的大方法中导致方法膨胀、职责混乱
|
||||
- 独立方法应有清晰的中文注释说明:用途、入参、返回值、安全退化行为
|
||||
- 调用独立方法的位置需加注释说明为什么调用、结果如何使用
|
||||
|
||||
Reference in New Issue
Block a user