Files
offerpai_browser_plug/.kiro/steering/project-guidelines.md
T
2026-05-09 14:55:30 +08:00

3.0 KiB
Raw Blame History

inclusion
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被误匹配到新东方自建网站)