ingest-jobs 接口文档
用于将外部岗位数据写入最新岗位模型:
job_postsjob_post_contentsjob_post_contacts(电话/邮箱,独立私有存储)job_post_compensationsjob_post_requirementsjob_post_locationsjob_post_work_types/job_post_visas/job_post_benefits/job_post_tags
1. 接口信息
- 方法:
POST - 地址:
/functions/v1/ingest-jobs - 鉴权: HMAC 签名(
verify_jwt = false) - 时间容忍: 5 分钟(
x-timestamp与服务端当前时间差)
2. 请求头
| Header | 必填 | 说明 |
|---|---|---|
content-type | 是 | 固定 application/json |
x-timestamp | 是 | Unix 毫秒时间戳(字符串) |
x-signature | 是 | base64url(HMAC_SHA256(secret, "${x-timestamp}.${rawBody}")) |
3. 请求体格式
支持以下 3 种:
{ "jobs": [ ... ] }[ ... ]- 单个 job 对象
{ ... }
4. Job 字段说明
先看 6 条关键规则:
-
幂等键是
source_channel + external_ref。
同一组合重复推送会更新同一条岗位;如果不传external_ref,系统自动生成,可能导致重复岗位。 -
title、description、region_code、salary_min、salary_type_code、work_type_codes、occupation_codes、contact_phone/contact_email(二选一)是核心字段。
这些不满足会被判为invalid。 -
所有
*_code都必须能在 taxonomy 中查到。
比如region_code必须存在于region分类。 -
不再兼容旧字段。
传入visa_types/benefits/tags/korean_req/salary_display/salary_type/work_type会直接返回错误。 -
description与duties不会被接口自动拆分、合并或去重。
description原样写入job_post_contents.description_i18n,duties原样写入job_post_contents.duties_i18n;若两者都传且内容重复,系统也会按两个字段分别保存。 -
联系方式会独立私有存储。
contact_phone/contact_email会写入job_post_contacts(不在job_post_contents持久化);前端“立即联系”应按需调用get_job_post_contact获取。
字段中 i18n object 示例建议包含 4 国语言:{ "zh": "中文", "ko": "한국어", "vi": "Tiếng Việt", "ru": "Русский" }。
所有 string / i18n object 字段传 string 时,都会先按 zh 文本处理,也就是转成 { "zh": "..." }。
注意:文档里说的“补齐”不是自动翻译。当前只有 title 会在缺少 zh/ko/vi/ru 任一键时,用已有文本原样回填到这 4 个必填语言键中以通过校验;summary、description、duties 等其他 i18n 字段不会自动补齐,也不会自动翻译。
| 字段 | 类型 | 必填 | 示例 | 备注(更清晰) |
|---|---|---|---|---|
external_ref | string | 否(可不传) | api-ansan-assembly-20260308-day-001 | 可不传,接口会自动生成。若你希望“同一岗位更新而不是新增”,建议传稳定值。 |
source_channel | string | 否 | api | 来源渠道。manual=后台人工录入,crawler=爬虫采集,api=第三方推送,seed=初始化/测试数据。默认 crawler。 |
status | string | 否 | active | 岗位状态。draft=草稿未发布,active=招聘中,paused=暂停招聘,closed=招聘结束,archived=归档留存。默认 active。 |
visibility | string | 否 | public | 可见性。public=公开可见,private=私有不可公开访问,unlisted=不公开曝光(仅特定场景可见)。默认 public。 |
publisher_type | string | 否 | organization | 发布者类型。organization=企业/机构发布,individual=个人发布。默认 organization。 |
poster_user_id | UUID string | 条件必填 | 550e8400-e29b-41d4-a716-446655440000 | 当 publisher_type=individual 且 source_channel 不为 seed/crawler 时必填;必须是合法 UUID。 |
company_name | string / i18n object | 条件必填 | { "zh": "安山汽车电子厂(直招)", "ko": "안산 자동차 전자공장(직영)", "vi": "Nha may dien tu o to Ansan (tuyen truc tiep)", "ru": "Завод автоэлектроники в Ансане (прямой набор)" } | 当 publisher_type=organization 时必填。 |
organization_slug | string | 否 | ansan-auto-electronics-direct | 组织唯一 slug;不传会根据公司名自动生成。 |
brand_name | string | 否 | Ansan E-Mobility Plant | 品牌名。 |
country_code | string | 否 | KR | 国家代码,默认 KR。 |
title | string / i18n object | 是 | { "zh": "电子零件装配/质检作业员(可当天面试)", "ko": "전자부품 조립·검사 사원(당일 면접 가능)", "vi": "Nhan vien lap rap/kiem tra linh kien dien tu (phong van trong ngay)", "ru": "Сборщик/контролер электронных компонентов (собеседование в день обращения)" } | 职位标题。传 string 时仅视为 zh 文本;系统会把同一段文本原样回填到 zh/ko/vi/ru 这 4 个键中以满足校验,不会自动翻译。若你需要真实多语言内容,请显式传完整 i18n object。 |
summary | string / i18n object | 否 | { "zh": "韩企直招,提供宿舍与通勤车,可当天安排面试和试岗", "ko": "한국 기업 직영 채용, 기숙사/통근버스 제공, 당일 면접 및 시범근무 가능", "vi": "Tuyen truc tiep, co ky tuc xa va xe dua don, phong van va thu viec trong ngay", "ru": "Прямой набор, общежитие и шаттл, собеседование и пробная смена в тот же день" } | 摘要文本。 |
description | string / i18n object | 是 | { "zh": "安山汽车电子工厂装配线岗位,主要负责连接器与线束预装。恒温车间站立作业,实行两班倒(白班/夜班),入职前提供半天安全培训与岗位示教。", "ko": "안산 자동차 전자공장 조립라인 포지션으로 커넥터/와이어 하네스 사전 조립을 담당합니다. 항온 작업장 입식 근무, 주야 2교대이며 입사 전 안전교육을 제공합니다.", "vi": "Vi tri day chuyen lap rap tai nha may dien tu o to Ansan, phu trach lap rap truoc bo noi va day dien. Lam dung trong xuong dieu hoa, xoay ca ngay-dem, duoc dao tao an toan truoc khi nhan viec.", "ru": "Позиция на линии сборки автоэлектроники в Ансане: предварительная сборка разъемов и жгутов. Работа стоя в климатизированном цехе, дневные/ночные смены, вводный инструктаж перед выходом." } | 岗位整体描述(背景/目标/工作环境/班次等),必填。 |
duties | string / i18n object | 否 | { "zh": "1) 按SOP完成零件装配与外观初检;2) 记录不良并与线长交接;3) 按节拍完成工位5S、物料点收和交班。", "ko": "1) SOP에 따라 부품 조립 및 외관 1차 검사 수행; 2) 불량 내역 기록 후 라인장 인계; 3) 공정 속도에 맞춰 5S/자재 확인/교대 인수인계 진행.", "vi": "1) Lap rap va kiem tra ngoai quan theo SOP; 2) Ghi nhan loi va ban giao cho truong chuyen; 3) Thuc hien 5S, kiem dem vat tu va ban giao ca theo nhip san xuat.", "ru": "1) Сборка и первичный визуальный контроль по SOP; 2) фиксация дефектов и передача мастеру линии; 3) выполнение 5S, прием материалов и передача смены по такту." } | 岗位职责清单(负责/执行/协同等动作)。建议条目化,便于检索与摘要。 |
working_hours | string / i18n object | 否 | { "zh": "白班 08:30-17:30 / 夜班 20:30-05:30(通常加班2小时,休息共90分钟)", "ko": "주간 08:30-17:30 / 야간 20:30-05:30 (통상 연장 2시간, 총 휴게 90분)", "vi": "Ca ngay 08:30-17:30 / ca dem 20:30-05:30 (thuong tang ca 2 gio, nghi tong 90 phut)", "ru": "Дневная 08:30-17:30 / ночная 20:30-05:30 (обычно +2 часа переработки, перерывы 90 минут)" } | 工作时间说明。 |
location_note | string / i18n object | 否 | { "zh": "安山站2号口有班车10分钟直达,园区内配食堂、更衣室、休息区", "ko": "안산역 2번 출구 셔틀버스 10분, 단지 내 식당/탈의실/휴게공간 제공", "vi": "Tu cong so 2 ga Ansan co xe dua don 10 phut, trong khu co canteen, phong thay do va khu nghi", "ru": "От выхода 2 станции Ансан есть шаттл (10 минут), на территории столовая, раздевалки и зона отдыха" } | 地点补充说明。 |
contact_phone | string | 条件必填 | 010-1234-5678 | 联系电话。contact_phone 与 contact_email 至少传一个。 |
contact_email | string | 条件必填 | hr@example.com | 联系邮箱。contact_phone 与 contact_email 至少传一个。 |
contact_note | string / i18n object | 否 | { "zh": "工作日 09:00-18:00 电话/微信同号;报名请备注签证类型、韩语等级和可到岗日期", "ko": "평일 09:00-18:00 전화 문의 가능; 지원 시 비자 유형/한국어 수준/출근 가능일 기재", "vi": "Lien he ngay thuong 09:00-18:00; khi dang ky vui long ghi loai visa, trinh do tieng Han va ngay co the di lam", "ru": "Связь по будням 09:00-18:00; при отклике укажите тип визы, уровень корейского и дату выхода" } | 联系补充说明(联系时段/备注模板),不是联系方式主体字段。 |
salary_type_code | string | 条件必填 | daily | 薪资周期 code;值必须存在于 taxonomy salary_type。 |
salary_min | number | 是 | 120000 | 最低薪资,必须 >= 0。 |
salary_max | number | 否 | 180000 | 最高薪资。传了就必须 >=0 且 >= salary_min。 |
salary_currency | string | 否 | KRW | 币种,默认 KRW。 |
salary_display_text | string | 否 | 日结 12万~18万韩元(夜班/加班津贴另算) | 仅展示文案,不参与数值计算。 |
salary_is_negotiable | boolean | 否 | false | 是否面议。未传时按 salary_type_code == negotiable 推断。 |
region_code | string | 是 | gyeonggi | 地区 code,必须存在于 taxonomy region。 |
address_line | string | 否 | 경기도 안산시 단원구 원시동 774-3 (안산스마트허브 5공단) | 详细地址。不传会尝试用 location_note 兜底。 |
latitude | number | 否 | 37.3215 | 纬度,范围 -90 ~ 90。 |
longitude | number | 否 | 126.8302 | 经度,范围 -180 ~ 180。 |
work_type_codes | string[] | 条件必填 | ["long_term","daily"] | 用工方式 code 列表。至少 1 个且全部要在 taxonomy work_type 存在。 |
visa_codes | string[] | 否 | ["h2","f4","f2"] | 签证 code 列表;每个值都要在 taxonomy visa 存在。 |
benefit_codes | string[] | 否 | ["food_stay","shuttle","overtime_pay","night_pay","insurance"] | 福利 code 列表;每个值都要在 taxonomy benefit 存在。 |
tag_codes | string[] | 否 | ["factory","daily_pay","immediate_start","no_experience"] | 标签 code 列表;每个值都要在 taxonomy tag 存在。 |
occupation_codes | string[] | 是 | ["factory_assembly","svc_cleaning"] | 岗位分类 code 列表;至少 1 个且必须在 taxonomy occupation 存在。 |
korean_level_min | integer | 否 | 1 | 韩语等级下限,范围 0~6。 |
education_code | string | 否 | high_school | 学历要求 code;传了就必须在 taxonomy education 存在。 |
experience_code | string | 否 | none | 经验要求 code;传了就必须在 taxonomy experience 存在。 |
requirement_notes | string / i18n object | 否 | { "zh": "可接受站班与重复性作业;需提供在韩合法居留证明;无色弱色盲。", "ko": "입식/반복 작업 가능자, 한국 내 합법 체류 증빙 필요, 색약/색맹 불가.", "vi": "Chap nhan lam dung va cong viec lap lai, can chung minh cu tru hop phap, khong mu mau.", "ru": "Готовность к работе стоя и повторяющимся операциям; требуется легальный статус пребывания; без нарушений цветоощущения." } | 其他要求备注。 |
description 与 duties 推荐写法:
description:写岗位上下文与范围,例如“韩企电子厂两班倒,主要在 SMT 产线作业,需要可长期站立。”duties:写动作型职责,例如“按 SOP 装配、完成首件自检、与线长交接异常。”description必填;duties选填。若来源数据无法区分,建议先保证description充分,再补充duties的动作项。
联系方式安全模型:
- 入参侧:
contact_phone与contact_email二选一必填(可同时传)。 - 存储侧:电话/邮箱写入
job_post_contacts,与job_posts一对一;不在job_post_contents中持久化。 - 读取侧:用户端点击“立即联系”时,调用 RPC
get_job_post_contact(p_job_post_id)按需获取。 contact_note仅用于补充说明(如联系时间、注意事项),不替代电话/邮箱字段。
Taxonomy 依赖字段(字段名 + 备注):
| 字段名 | 对应 taxonomy 分类(code) | 备注 |
|---|---|---|
region_code | region | 必填,单值。用于职位主地点区域。 |
salary_type_code | salary_type | 必填,单值。用于薪资结算周期(如 daily/weekly/monthly)。 |
work_type_codes | work_type | 必填,多值数组,至少 1 个。用于工作类型(如 daily/part_time)。 |
visa_codes | visa | 选填,多值数组。用于可接受签证类型。 |
benefit_codes | benefit | 选填,多值数组。用于福利标签。 |
tag_codes | tag | 选填,多值数组。用于业务标签。 |
occupation_codes | occupation | 必填,多值数组,至少 1 个。用于岗位分类。 |
education_code | education | 选填,单值。用于学历要求。 |
experience_code | experience | 选填,单值。用于经验要求。 |
补充规则:
- 上述 code 来自
public.taxonomy_items.code,并按所属public.taxonomies.code分类校验。 - 仅
is_active = true的 taxonomy item 可用。 - 传入不存在/已停用 code 会返回
invalid(例如region_code invalid: xxx)。
9 类 taxonomy 可用 code 与注释(当前):
- 覆盖字段:
region_code、salary_type_code、work_type_codes、visa_codes、benefit_codes、tag_codes、occupation_codes、education_code、experience_code。 - 数据来源:
supabase/migrations/02_seed_taxonomies.sql(初始化种子)+supabase/migrations/17_job_occupations_and_bundle_update.sql、supabase/migrations/21_expand_occupation_taxonomy.sql(岗位分类扩充);运行时仍以数据库中is_active = true的taxonomy_items为准。
region(地区,字段:region_code)
| code | 中文注释 | 韩文注释 | 越南文注释 | 俄文注释 |
|---|---|---|---|---|
seoul | 首尔 | 서울 | Seoul | Сеул |
busan | 釜山 | 부산 | Busan | Пусан |
daegu | 大邱 | 대구 | Daegu | Тэгу |
incheon | 仁川 | 인천 | Incheon | Инчхон |
gwangju | 光州 | 광주 | Gwangju | Кванджу |
daejeon | 大田 | 대전 | Daejeon | Тэджон |
ulsan | 蔚山 | 울산 | Ulsan | Ульсан |
sejong | 世宗 | 세종 | Sejong | Сечжон |
gyeonggi | 京畿 | 경기 | Gyeonggi | Кёнги |
gangwon | 江原 | 강원 | Gangwon | Канвон |
chungbuk | 忠北 | 충북 | Chungbuk | Чхунбук |
chungnam | 忠南 | 충남 | Chungnam | Чхуннам |
jeonbuk | 全北 | 전북 | Jeonbuk | Чонбук |
jeonnam | 全南 | 전남 | Jeonnam | Чоннам |
gyeongbuk | 庆北 | 경북 | Gyeongbuk | Кёнбук |
gyeongnam | 庆南 | 경남 | Gyeongnam | Кённам |
jeju | 济州 | 제주 | Jeju | Чеджу |
salary_type(薪资类型,字段:salary_type_code)
| code | 中文注释 | 韩文注释 | 越南文注释 | 俄文注释 |
|---|---|---|---|---|
hourly | 时薪 | 시급 | Luong gio | Почасовая |
daily | 日薪 | 일급 | Luong ngay | Ежедневная |
weekly | 周薪 | 주급 | Luong tuan | Еженедельная |
monthly | 月薪 | 월급 | Luong thang | Ежемесячная |
yearly | 年薪 | 연봉 | Luong nam | Годовая |
negotiable | 面议 | 협의 | Thuong luong | Договорная |
work_type(工作类型,字段:work_type_codes)
| code | 中文注释 | 韩文注释 | 越南文注释 | 俄文注释 |
|---|---|---|---|---|
long_term | 长期 | 장기 | Dai han | Долгосрочная |
short_term | 短期 | 단기 | Ngan han | Краткосрочная |
daily | 日结 | 일당 | Luong ngay | Ежедневная |
part_time | 兼职 | 아르바이트 | Ban thoi gian | Подработка |
visa(签证类型,字段:visa_codes)
| code | 中文注释 | 韩文注释 | 越南文注释 | 俄文注释 |
|---|---|---|---|---|
f2 | F2 | F2 | F2 | F2 |
f4 | F4 | F4 | F4 | F4 |
f5 | F5 | F5 | F5 | F5 |
f6 | F6 | F6 | F6 | F6 |
h2 | H2 | H2 | H2 | H2 |
d2 | D2 | D2 | D2 | D2 |
d4 | D4 | D4 | D4 | D4 |
benefit(福利待遇,字段:benefit_codes)
| code | 中文注释 | 韩文注释 | 越南文注释 | 俄文注释 |
|---|---|---|---|---|
food_stay | 包吃住 | 숙식 제공 | Bao an o | Жилье и питание |
food | 包吃 | 식사 제공 | Bao an | Питание |
insurance | 四大保险 | 4대 보험 | 4 bao hiem | 4 страховки |
bonus | 奖金提成 | 보너스 | Thuong | Бонус |
annual_leave | 年假 | 연차/휴가 | Nghi phep nam | Отпуск |
shuttle | 通勤车 | 통근버스 | Xe dua don | Шаттл |
severance | 退职金 | 퇴직금 | Tro cap thoi viec | Выходное пособие |
overtime_pay | 加班费 | 연장수당 | Luong tang ca | Сверхурочные |
night_pay | 夜班津贴 | 야간수당 | Phu cap ca dem | Ночная надбавка |
uniform | 制服 | 유니폼 | Dong phuc | Униформа |
housing | 包住 | 기숙사 제공 | Bao o | Жилье |
meal_allowance | 餐补 | 식대 지원 | Phu cap an | Компенсация питания |
transport_allowance | 交通补贴 | 교통비 지원 | Phu cap di lai | Транспортная компенсация |
tag(职位标签,字段:tag_codes)
| code | 中文注释 | 韩文注释 | 越南文注释 | 俄文注释 |
|---|---|---|---|---|
office_job | 办公室 | 사무직 | Van phong | Офис |
professional | 专业职位 | 전문직 | Chuyen nghiep | Профессионал |
career_growth | 晋升空间 | 커리어 성장 | Tang tien | Карьерный рост |
visa_support | 签证支持 | 비자 지원 | Ho tro visa | Визовая поддержка |
no_experience | 无需经验 | 경력 무관 | Khong kinh nghiem | Без опыта |
daily_pay | 日结 | 당일 지급 | Tra ngay | Оплата ежедневно |
factory | 工厂 | 공장 | Nha may | Завод |
night_shift | 夜班 | 야간 | Ca dem | Ночная смена |
student_friendly | 留学生友好 | 유학생 | Than thien sinh vien | Для студентов |
service | 服务业 | 서비스 | Dich vu | Сервис |
physical_labor | 体力劳动 | 육체노동 | Lao dong tay chan | Физический труд |
high_salary | 高薪 | 고액 | Luong cao | Высокая зарплата |
bilingual | 双语 | 이중언어 | Song ngu | Двуязычный |
remote | 远程可 | 재택 가능 | Lam tu xa | Удаленно |
flexible | 时间灵活 | 유연근무 | Linh hoat | Гибкий график |
immediate_start | 可立即上岗 | 즉시출근 | Di lam ngay | Срочный выход |
occupation(岗位分类,字段:occupation_codes)
| code | 中文注释 | 韩文注释 | 越南文注释 | 俄文注释 |
|---|---|---|---|---|
factory_assembly | 组装与包装 | 조립/포장 | Lap rap/Dong goi | Сборка/Упаковка |
factory_machine | 机器操作/技工 | 기계조작/기술 | Van hanh may | Оператор машины |
factory_qa | 质检与验货 | 검사/검수 | Kiem hang | Инспекция качества |
factory_food | 食品加工 | 식품가공 | Che bien thuc pham | Пищевое производство |
factory_molding | 注塑/成型 | 사출/성형 | Ep/tao hinh | Литье/формовка |
factory_clean | 无尘室/洁净 | 클린룸 | Phong sach | Чистая комната |
const_labor | 现场杂工 | 현장잡부 | Phu ho | Разнорабочий |
const_skilled | 焊工/专业技工 | 용접/전문기공 | Tho han | Сварщик |
const_interior | 室内装修 | 인테리어 | Noi that | Интерьер |
const_scaffold | 脚手架 | 비계 | Gian giao | Леса |
const_paint | 油漆/涂装 | 도장 | Son | Покраска |
const_electric | 电工 | 전기 | Dien | Электрик |
const_plumber | 水暖 | 배관 | Ong nuoc | Сантехник |
svc_kitchen | 后厨/洗碗 | 주방/설거지 | Phu bep/Rua bat | Кухня/Посудомойщик |
svc_serving | 餐厅厅面 | 홀서빙 | Phuc vu | Официант |
svc_cleaning | 清扫/客房 | 청소/룸메이드 | Don dep | Уборка |
svc_cafe | 咖啡/饮品 | 카페/음료 | Ca phe/do uong | Кафе/Напитки |
svc_retail | 便利店/零售 | 편의점/소매 | Cua hang | Магазин/Ритейл |
svc_hotel | 酒店/前台/客房 | 호텔/프론트/룸 | Khach san | Отель |
svc_security | 保安/巡逻 | 보안/경비 | Bao ve | Охрана |
svc_childcare | 育儿/保姆 | 육아/베이비시터 | Trong tre | Няня |
logi_sorting | 分拣/搬运(二炮) | 상하차/분류 | Phan loai | Сортировка |
logi_warehouse | 仓库管理 | 창고관리/전산 | Kho | Склад |
logi_rider | 外卖骑手/代驾 | 배달라이더/대리 | Giao hang | Курьер |
logi_driver | 货车/司机 | 화물/운전 | Tai xe | Водитель |
logi_forklift | 叉车/吊装 | 지게차 | Xe nang | Погрузчик |
logi_last_mile | 快递/末端配送 | 택배/라스트마일 | Giao nhanh | Доставка |
logi_inventory | 盘点/库存 | 재고/피킹 | Kiem ke | Инвентарь |
lang_trans | 翻译与口译 | 번역/통역 | Bien phien dich | Перевод |
lang_ecommerce | 中韩电商/采购 | 이커머스/구매 | Thuong mai dien tu | Электронная коммерция |
lang_support | 中韩客服/支持 | 중한 고객지원 | Ho tro CN-KR | Поддержка CN-KR |
lang_guide | 导游/同声 | 가이드/통역 | Huong dan | Гид/Переводчик |
lang_trade | 跨境电商/贸易 | 무역/이커머스 | Thuong mai | Торговля |
prof_admin | 行政/财务/文秘 | 사무/회계/경리 | Hanh chinh | Админ |
prof_it | IT/软件开发/设计 | 개발/디자인 | IT/Thiet ke | IT/Дизайн |
prof_hr | 人事/招聘 | 인사/채용 | Nhan su | HR/Подбор |
prof_sales | 销售/BD | 영업/BD | Ban hang | Продажи |
prof_marketing | 市场/运营 | 마케팅/운영 | Marketing | Маркетинг |
prof_design | 设计/美术 | 디자인 | Thiet ke | Дизайн |
prof_customer | 客服/呼叫中心 | 콜센터/CS | Cham soc KH | Колл-центр |
prof_pm | 产品/项目管理 | PM/기획 | Quan ly du an | PM/Проект |
prof_data | 数据/分析 | 데이터/분석 | Du lieu | Аналитика |
med_care | 看护与护工 | 간병인 | Cham soc nguoi gia | Сиделка |
med_nurse | 护士/护理 | 간호 | Y ta | Медсестра |
med_clinic | 诊所助理 | 의원 보조 | Tro ly phong kham | Ассистент клиники |
agri_farm | 农场/大棚 | 농장/비닐하우스 | Nong trang | Ферма |
agri_fishery | 渔业/水产 | 수산/양식 | Thuy san | Рыболовство |
agri_livestock | 畜牧/养殖 | 축산/사육 | Chan nuoi | Животноводство |
flex_day_worker | 日结/临时工 | 일용직/단기 | Viec ngay | Подработка/дневная |
flex_event | 活动/会展 | 행사/이벤트 | Su kien | Ивенты |
flex_promo | 促销/路演 | 프로모션 | Khuyen mai | Промо |
flex_dispatch | 派遣/替班 | 파견/대체 | Phai cu | Замена/аутстафф |
若需要最新列表,可通过接口拉取:
/rest/v1/taxonomy_items?select=code,label_i18n&taxonomies.code=eq.occupation&is_active=eq.true。
education(学历要求,字段:education_code)
| code | 中文注释 | 韩文注释 | 越南文注释 | 俄文注释 |
|---|---|---|---|---|
none | 学历不限 | 학력무관 | Khong yeu cau bang cap | Образование не важно |
high_school | 高中及以上 | 고졸 이상 | Tren cap 3 | Среднее+ |
college | 大专及以上 | 전문대 이상 | Cao dang+ | Среднее спец.+ |
bachelor | 本科及以上 | 학사 이상 | Cu nhan+ | Бакалавр+ |
master | 硕士及以上 | 석사 이상 | Thac si+ | Магистр+ |
phd | 博士 | 박사 | Tien si | Доктор наук |
experience(经验要求,字段:experience_code)
| code | 中文注释 | 韩文注释 | 越南文注释 | 俄文注释 |
|---|---|---|---|---|
none | 经验不限 | 경력무관 | Khong can kinh nghiem | Без опыта |
newbie | 欢迎新手 | 신입 환영 | Chao don nguoi moi | Для новичков |
1-3y | 1-3年 | 1-3년 | 1-3 nam | 1-3 года |
3-5y | 3-5年 | 3-5년 | 3-5 nam | 3-5 лет |
5y_plus | 5年以上 | 5년 이상 | Tren 5 nam | 5+ лет |
10y_plus | 10年以上 | 10년 이상 | Tren 10 nam | 10+ лет |
最小可用 payload(建议):
- 至少包含:
title+description+ (contact_phone或contact_email) +region_code+salary_min+salary_type_code+work_type_codes+occupation_codes。
{
"jobs": [
{
"source_channel": "crawler",
"publisher_type": "organization",
"company_name": { "zh": "安山电子厂", "ko": "안산 전자공장", "vi": "Nha may dien tu Ansan", "ru": "Завод электроники Ансан" },
"title": { "zh": "电子厂装配工", "ko": "전자공장 조립원", "vi": "Cong nhan lap rap nha may dien tu", "ru": "Сборщик на электронном заводе" },
"description": { "zh": "负责电子部件装配与基础质检,白夜两班制。", "ko": "전자 부품 조립 및 기초 검사, 주야 2교대." },
"contact_phone": "010-1234-5678",
"region_code": "gyeonggi",
"salary_min": 120000,
"salary_type_code": "daily",
"work_type_codes": ["daily"],
"occupation_codes": ["factory_assembly"]
}
]
}
全字段详细 payload(示例):
{
"jobs": [
{
"external_ref": "api-ansan-assembly-20260308-day-001",
"source_channel": "api",
"status": "active",
"visibility": "public",
"publisher_type": "organization",
"company_name": {
"zh": "安山汽车电子厂(直招)",
"ko": "안산 자동차 전자공장(직영)",
"vi": "Nha may dien tu o to Ansan (tuyen truc tiep)",
"ru": "Завод автоэлектроники в Ансане (прямой набор)"
},
"organization_slug": "ansan-auto-electronics-direct",
"brand_name": "Ansan E-Mobility Plant",
"country_code": "KR",
"title": {
"zh": "电子零件装配/质检作业员(可当天面试)",
"ko": "전자부품 조립·검사 사원(당일 면접 가능)",
"vi": "Nhan vien lap rap/kiem tra linh kien dien tu (phong van trong ngay)",
"ru": "Сборщик/контролер электронных компонентов (собеседование в день обращения)"
},
"summary": {
"zh": "韩企直招,提供宿舍与通勤车,可当天安排面试和试岗",
"ko": "한국 기업 직영 채용, 기숙사/통근버스 제공, 당일 면접 및 시범근무 가능",
"vi": "Tuyen truc tiep, co ky tuc xa va xe dua don, phong van va thu viec trong ngay",
"ru": "Прямой набор, общежитие и шаттл, собеседование и пробная смена в тот же день"
},
"description": {
"zh": "安山汽车电子工厂装配线岗位,主要负责连接器与线束预装。恒温车间站立作业,实行两班倒(白班/夜班),入职前提供半天安全培训与岗位示教。",
"ko": "안산 자동차 전자공장 조립라인 포지션으로 커넥터/와이어 하네스 사전 조립을 담당합니다. 항온 작업장 입식 근무, 주야 2교대이며 입사 전 안전교육을 제공합니다.",
"vi": "Vi tri day chuyen lap rap tai nha may dien tu o to Ansan, phu trach lap rap truoc bo noi va day dien. Lam dung trong xuong dieu hoa, xoay ca ngay-dem, duoc dao tao an toan truoc khi nhan viec.",
"ru": "Позиция на линии сборки автоэлектроники в Ансане: предварительная сборка разъемов и жгутов. Работа стоя в климатизированном цехе, дневные/ночные смены, вводный инструктаж перед выходом."
},
"duties": {
"zh": "1) 按SOP完成零件装配与外观初检;2) 记录不良并与线长交接;3) 按节拍完成工位5S、物料点收和交班。",
"ko": "1) SOP에 따라 부품 조립 및 외관 1차 검사 수행; 2) 불량 내역 기록 후 라인장 인계; 3) 공정 속도에 맞춰 5S/자재 확인/교대 인수인계 진행.",
"vi": "1) Lap rap va kiem tra ngoai quan theo SOP; 2) Ghi nhan loi va ban giao cho truong chuyen; 3) Thuc hien 5S, kiem dem vat tu va ban giao ca theo nhip san xuat.",
"ru": "1) Сборка и первичный визуальный контроль по SOP; 2) фиксация дефектов и передача мастеру линии; 3) выполнение 5S, прием материалов и передача смены по такту."
},
"working_hours": {
"zh": "白班 08:30-17:30 / 夜班 20:30-05:30(通常加班2小时,休息共90分钟)",
"ko": "주간 08:30-17:30 / 야간 20:30-05:30 (통상 연장 2시간, 총 휴게 90분)",
"vi": "Ca ngay 08:30-17:30 / ca dem 20:30-05:30 (thuong tang ca 2 gio, nghi tong 90 phut)",
"ru": "Дневная 08:30-17:30 / ночная 20:30-05:30 (обычно +2 часа переработки, перерывы 90 минут)"
},
"location_note": {
"zh": "安山站2号口有班车10分钟直达,园区内配食堂、更衣室、休息区",
"ko": "안산역 2번 출구 셔틀버스 10분, 단지 내 식당/탈의실/휴게공간 제공",
"vi": "Tu cong so 2 ga Ansan co xe dua don 10 phut, trong khu co canteen, phong thay do va khu nghi",
"ru": "От выхода 2 станции Ансан есть шаттл (10 минут), на территории столовая, раздевалки и зона отдыха"
},
"contact_phone": "010-1234-5678",
"contact_email": "demo.hr.contact+001@gmail.com",
"contact_note": {
"zh": "工作日 09:00-18:00 电话/微信同号;报名请备注签证类型、韩语等级和可到岗日期",
"ko": "평일 09:00-18:00 전화 문의 가능; 지원 시 비자 유형/한국어 수준/출근 가능일 기재",
"vi": "Lien he ngay thuong 09:00-18:00; khi dang ky vui long ghi loai visa, trinh do tieng Han va ngay co the di lam",
"ru": "Связь по будням 09:00-18:00; при отклике укажите тип визы, уровень корейского и дату выхода"
},
"salary_type_code": "daily",
"salary_min": 120000,
"salary_max": 180000,
"salary_currency": "KRW",
"salary_display_text": "日结 12万~18万韩元(夜班/加班津贴另算)",
"salary_is_negotiable": false,
"region_code": "gyeonggi",
"address_line": "경기도 안산시 단원구 원시동 774-3 (안산스마트허브 5공단)",
"latitude": 37.3215,
"longitude": 126.8302,
"work_type_codes": ["long_term", "daily"],
"visa_codes": ["h2", "f4", "f2"],
"benefit_codes": ["food_stay", "shuttle", "overtime_pay", "night_pay", "insurance"],
"tag_codes": ["factory", "daily_pay", "immediate_start", "no_experience"],
"occupation_codes": ["factory_assembly"],
"korean_level_min": 1,
"education_code": "high_school",
"experience_code": "none",
"requirement_notes": {
"zh": "可接受站班与重复性作业;需提供在韩合法居留证明;无色弱色盲。",
"ko": "입식/반복 작업 가능자, 한국 내 합법 체류 증빙 필요, 색약/색맹 불가.",
"vi": "Chap nhan lam dung va cong viec lap lai, can chung minh cu tru hop phap, khong mu mau.",
"ru": "Готовность к работе стоя и повторяющимся операциям; требуется легальный статус пребывания; без нарушений цветоощущения."
}
}
]
}
5. 成功响应
{
"ok": true,
"received": 1,
"accepted": 1,
"invalidCount": 0,
"invalid": [],
"processed": [
{
"job_post_id": 8,
"external_ref": "demo-001",
"source_channel": "seed",
"publisher_type": "organization",
"status": "active"
}
]
}
| 字段 | 类型 | 说明 |
|---|---|---|
ok | boolean | 是否全部成功(invalidCount == 0) |
received | number | 接收到的 job 数量 |
accepted | number | 成功入库数量 |
invalidCount | number | 失败数量 |
invalid | string[] | 每条失败原因(含下标) |
processed | object[] | 成功条目摘要 |
6. 错误码
| HTTP 状态码 | 场景 |
|---|---|
400 | JSON 非法 / 没有可用 jobs payload |
401 | 缺少签名头 / 时间戳过期 / 签名错误 |
405 | 非 POST 请求 |
500 | 服务端异常(环境变量缺失或数据库错误) |
7. 请求示例(Node.js)
import crypto from 'node:crypto'
const url = 'https://<project-ref>.supabase.co/functions/v1/ingest-jobs'
const secret = process.env.INGEST_JOBS_SECRET!
const timestamp = Date.now().toString()
const body = JSON.stringify({
jobs: [
{
external_ref: 'api-ansan-assembly-20260308-day-001',
source_channel: 'api',
publisher_type: 'organization',
company_name: { zh: '安山汽车电子厂(直招)', ko: '안산 자동차 전자공장(직영)', vi: 'Nha may dien tu o to Ansan (tuyen truc tiep)', ru: 'Завод автоэлектроники в Ансане (прямой набор)' },
title: { zh: '电子零件装配/质检作业员(可当天面试)', ko: '전자부품 조립·검사 사원(당일 면접 가능)', vi: 'Nhan vien lap rap/kiem tra linh kien dien tu (phong van trong ngay)', ru: 'Сборщик/контролер электронных компонентов (собеседование в день обращения)' },
summary: { zh: '韩企直招,提供宿舍与通勤车,可当天安排面试和试岗', ko: '한국 기업 직영 채용, 기숙사/통근버스 제공, 당일 면접 및 시범근무 가능', vi: 'Tuyen truc tiep, co ky tuc xa va xe dua don, phong van va thu viec trong ngay', ru: 'Прямой набор, общежитие и шаттл, собеседование и пробная смена в тот же день' },
description: { zh: '安山汽车电子工厂装配线岗位,主要负责连接器与线束预装。恒温车间站立作业,实行两班倒,入职前提供安全培训。', ko: '안산 자동차 전자공장 조립라인 포지션, 항온 작업장 입식 근무, 주야 2교대, 입사 전 안전교육 제공.', vi: 'Vi tri day chuyen lap rap tai nha may dien tu o to Ansan, lam dung trong xuong dieu hoa, xoay ca ngay-dem.', ru: 'Позиция на линии сборки автоэлектроники в Ансане, работа стоя в климатизированном цехе, дневные/ночные смены.' },
duties: { zh: '按SOP完成装配与初检,记录不良并交接,完成工位5S。', ko: 'SOP 기반 조립/1차 검사, 불량 기록 및 인계, 작업장 5S 수행.', vi: 'Lap rap va kiem tra theo SOP, ghi nhan loi va ban giao, thuc hien 5S.', ru: 'Сборка и первичный контроль по SOP, фиксация дефектов и передача, выполнение 5S.' },
working_hours: { zh: '白班 08:30-17:30 / 夜班 20:30-05:30(含加班)', ko: '주간 08:30-17:30 / 야간 20:30-05:30', vi: 'Ca ngay 08:30-17:30 / ca dem 20:30-05:30', ru: 'Дневная 08:30-17:30 / ночная 20:30-05:30' },
region_code: 'gyeonggi',
address_line: '경기도 안산시 단원구 원시동 774-3',
latitude: 37.3215,
longitude: 126.8302,
salary_min: 120000,
salary_max: 180000,
salary_type_code: 'daily',
salary_currency: 'KRW',
salary_display_text: '日结 12万~18万韩元(夜班/加班津贴另算)',
salary_is_negotiable: false,
work_type_codes: ['long_term', 'daily'],
visa_codes: ['h2', 'f4', 'f2'],
benefit_codes: ['food_stay', 'shuttle', 'overtime_pay', 'night_pay', 'insurance'],
tag_codes: ['factory', 'daily_pay', 'immediate_start', 'no_experience'],
occupation_codes: ['factory_assembly'],
korean_level_min: 1,
education_code: 'high_school',
experience_code: 'none',
requirement_notes: { zh: '可接受站班与重复性作业;需提供在韩合法居留证明。', ko: '입식/반복 작업 가능자, 합법 체류 증빙 필요.', vi: 'Chap nhan lam dung va cong viec lap lai, can chung minh cu tru hop phap.', ru: 'Готовность к работе стоя и повторяющимся операциям; требуется легальный статус пребывания.' },
status: 'active',
visibility: 'public'
}
]
})
const signature = crypto
.createHmac('sha256', secret)
.update(`${timestamp}.${body}`)
.digest('base64url')
const res = await fetch(url, {
method: 'POST',
headers: {
'content-type': 'application/json',
'x-timestamp': timestamp,
'x-signature': signature
},
body
})
console.log(await res.json())
8. 请求示例(Python)
import base64
import hashlib
import hmac
import json
import os
import time
import requests
url = "https://<project-ref>.supabase.co/functions/v1/ingest-jobs"
secret = os.environ["INGEST_JOBS_SECRET"]
timestamp = str(int(time.time() * 1000))
payload = {
"jobs": [
{
"external_ref": "api-ansan-assembly-20260308-day-001",
"source_channel": "api",
"publisher_type": "organization",
"company_name": {
"zh": "安山汽车电子厂(直招)",
"ko": "안산 자동차 전자공장(직영)",
"vi": "Nha may dien tu o to Ansan (tuyen truc tiep)",
"ru": "Завод автоэлектроники в Ансане (прямой набор)",
},
"title": {
"zh": "电子零件装配/质检作业员(可当天面试)",
"ko": "전자부품 조립·검사 사원(당일 면접 가능)",
"vi": "Nhan vien lap rap/kiem tra linh kien dien tu (phong van trong ngay)",
"ru": "Сборщик/контролер электронных компонентов (собеседование в день обращения)",
},
"description": {
"zh": "安山汽车电子工厂装配线岗位,主要负责连接器与线束预装。",
"ko": "안산 자동차 전자공장 조립라인 포지션, 커넥터/와이어 하네스 조립 담당.",
"vi": "Vi tri day chuyen lap rap tai nha may dien tu o to Ansan.",
"ru": "Позиция на линии сборки автоэлектроники в Ансане.",
},
"duties": {
"zh": "按SOP完成装配与初检,记录不良并交接。",
"ko": "SOP 기반 조립/1차 검사, 불량 기록 및 인계.",
"vi": "Lap rap va kiem tra theo SOP, ghi nhan loi va ban giao.",
"ru": "Сборка и первичный контроль по SOP, фиксация дефектов и передача.",
},
"contact_phone": "010-1234-5678",
"region_code": "gyeonggi",
"salary_min": 120000,
"salary_max": 180000,
"salary_type_code": "daily",
"work_type_codes": ["long_term", "daily"],
"occupation_codes": ["factory_assembly"],
"status": "active",
"visibility": "public",
}
]
}
body = json.dumps(payload, ensure_ascii=False, separators=(",", ":"))
raw = f"{timestamp}.{body}".encode("utf-8")
digest = hmac.new(secret.encode("utf-8"), raw, hashlib.sha256).digest()
signature = base64.urlsafe_b64encode(digest).decode("utf-8").rstrip("=")
resp = requests.post(
url,
headers={
"content-type": "application/json",
"x-timestamp": timestamp,
"x-signature": signature,
},
data=body.encode("utf-8"),
timeout=30,
)
print(resp.status_code)
print(resp.json())