FlexDock
供应商对接接口 · 参考
Supplier Integration API · Reference
API de integración de proveedores · Referencia

供应商对接接口

Supplier Integration API

API de integración de proveedores

WMS 与劳务商系统之间的人员、叉车证、考勤数据通道。本文为提议版接口契约,字段与规则可按你们实际调整。

The data channel between WMS and supplier systems for workers, forklift certification, and attendance. This is a proposed contract — fields and rules are adjustable to your operation.

El canal de datos entre el WMS y los sistemas de los proveedores para trabajadores, certificación de montacargas y asistencia. Este es un contrato propuesto: los campos y las reglas son ajustables a tu operación.

1 · 总览

1 · Overview

1 · Resumen

基础地址 https://api.flexdock.example/v1 · 全程 HTTPS · 请求/响应均为 JSON · 版本通过路径前缀(/v1)管理。

Base URL https://api.flexdock.example/v1 · HTTPS only · JSON request/response · versioned by path prefix (/v1).

URL base https://api.flexdock.example/v1 · solo HTTPS · solicitud/respuesta en JSON · versionado por prefijo de ruta (/v1).

两种对接模式

Two integration modes

Dos modos de integración

①需求 WMS ──────────────▶ 供应商 ②拉取人员 WMS ◀────────────── 供应商系统 (人员 + 叉车证) ③试工结果 WMS ──────────────▶ 供应商 (留用 / 退回) ④考勤回传 WMS ──────────────▶ 供应商 (到岗 / no-show / 改动留痕) ▲ └── 同一通道,按 vendor_id 隔离
1. Request WMS ──────────────▶ Vendor 2. Pull WMS ◀────────────── Vendor system (workers + forklift cert) 3. Tryout WMS ──────────────▶ Vendor (retained / released) 4. Attendance WMS ──────────────▶ Vendor (present / no-show / audit) ▲ └── one channel, isolated by vendor_id
1. Solicitud WMS ──────────────▶ Proveedor 2. Extracción WMS ◀────────────── Sistema proveedor (trabajadores + cert. montacargas) 3. Prueba WMS ──────────────▶ Proveedor (retenido / devuelto) 4. Asistencia WMS ──────────────▶ Proveedor (presente / ausencia / auditoría) ▲ └── un canal, aislado por vendor_id

2 · 认证与数据隔离

2 · Authentication & Data Isolation

2 · Autenticación y aislamiento de datos

每个供应商分配一把 API Key,绑定唯一 vendor_id。请求头携带:

Each vendor gets an API key bound to a unique vendor_id. Send it in the header:

Cada proveedor recibe una API key vinculada a un vendor_id único. Envíala en la cabecera:

Authorization: Bearer vk_live_3a9f...e21
Content-Type: application/json
Idempotency-Key: 8f14e45f   # POST 去重,可选
🔒
核心保证:隔离在接口层强制,不靠前端。 Core guarantee: isolation is enforced at the API layer, not the frontend. Garantía clave: el aislamiento se aplica en la capa de API, no en el frontend. 服务端从 API Key 解析出 vendor_id,并在每一次查询中强制注入该过滤条件。任何访问到非本供应商资源的请求一律返回 403。供应商看不到别家的人员、rate 或考勤。 The server resolves vendor_id from the key and injects it as a filter into every query. Any attempt to touch another vendor's resource returns 403. Vendors never see other vendors' workers, rates, or attendance. El servidor resuelve el vendor_id a partir de la key y lo inyecta como filtro en cada consulta. Cualquier intento de acceder al recurso de otro proveedor devuelve 403. Los proveedores nunca ven los trabajadores, tarifas ni asistencia de otros.
💲
薪资/成本字段不出现在供应商可见的响应里。 供应商只提交自己的报价,读不到任何跨供应商的成本对比;薪资真值留在 RMS 宽表,经服务层裁剪后才出接口。 Payroll/cost fields are excluded from vendor-visible responses. A vendor submits only its own bill rate and can never read cross-vendor cost; true payroll stays in the RMS table and is trimmed by the service layer before it reaches the API. Los campos de nómina/costo se excluyen de las respuestas visibles para el proveedor. Cada proveedor envía solo su propia tarifa y nunca puede leer el costo de otros; la nómina real permanece en la tabla RMS y la capa de servicio la recorta antes de que llegue a la API.

3 · 端点

3 · Endpoints

3 · Endpoints

3.1 获取派给本公司的需求

3.1 List requests assigned to you

3.1 Listar las solicitudes asignadas a ti

GET/dispatch-requests

查询参数:statusopen / filling / tryout / closed)、shiftdate。仅返回本 vendor_id 的需求。

Query params: status (open / filling / tryout / closed), shift, date. Returns only your vendor_id's requests.

Parámetros: status (open / filling / tryout / closed), shift, date. Devuelve solo las solicitudes de tu vendor_id.

{
  "data": [{
    "request_id": "REQ-2402",
    "role": "forklift",
    "shift": "night",
    "headcount_needed": 4,
    "tryout_buffer": 6,          # 多要人来试工:需 4 报 6
    "forklift_required": true,
    "report_time": "2026-06-22T19:00:00-04:00",
    "location": "Ontario DC-3",
    "urgent": false,
    "status": "open"
  }]
}

3.2 提交回填人员(含叉车证)

3.2 Submit candidates (with forklift cert)

3.2 Enviar candidatos (con cert. de montacargas)

POST/dispatch-requests/{id}/candidates

模式 B 下,等价于 WMS 调用供应商的 GET /candidates?request_id= 拉取同样结构。

In Mode B this maps to WMS calling the vendor's GET /candidates?request_id= returning the same shape.

En el Modo B, esto equivale a que el WMS llame al GET /candidates?request_id= del proveedor, que devuelve la misma estructura.

{
  "candidates": [{
    "external_worker_id": "V-B-10293",   # 供应商侧唯一ID,用于去重
    "full_name": "Diego R.",
    "role": "forklift",
    "source": "indeed",
    "report_time": "2026-06-22T19:00:00-04:00",
    "location": "Ontario",
    "bill_rate": 27.0,                    # 仅本供应商可见
    "forklift_cert": {
      "status": "valid",                  # valid | pending | none
      "cert_no": "ON-FLT-88421",
      "expires_on": "2027-03-01"
    }
  }]
}
🦺
叉车证由服务端二次校验。 即使供应商填 valid,若 expires_on 已过期或缺 cert_no,WMS 自动将该人置为 pending,不进试工名单。 Cert is re-validated server-side. Even if the vendor sends valid, an expired expires_on or missing cert_no flips the worker to pending and keeps them out of the tryout roster. El certificado se revalida en el servidor. Aunque el proveedor envíe valid, un expires_on vencido o un cert_no faltante cambia al trabajador a pending y lo deja fuera de la lista de prueba.

3.3 填不满时提交卡点原因

3.3 Report a shortfall reason

3.3 Reportar el motivo de un faltante

POST/dispatch-requests/{id}/shortfall
{
  "filled_count": 2,
  "reason": "Local pool thin this week; contacted 3 channels, still short."
}

reason 服务端强制 ≥ 40 字符,过短返回 422。原因留档,供供应商内部反思与我方评估。

reason must be ≥ 40 chars (server-enforced); shorter returns 422. Stored for the vendor's review and our evaluation.

reason debe tener ≥ 40 caracteres (forzado por el servidor); si es más corto devuelve 422. Se archiva para la revisión del proveedor y nuestra evaluación.

3.4 读取试工结果

3.4 Read tryout outcomes

3.4 Leer los resultados de la prueba

GET/dispatch-requests/{id}/tryout-results
{
  "results": [
    { "external_worker_id": "V-B-10293", "outcome": "retained" },
    { "external_worker_id": "V-B-10311", "outcome": "released" }   # 试工不计费
  ]
}

3.5 考勤同步(只读 + 改动留痕)

3.5 Attendance sync (read-only + audit)

3.5 Sincronización de asistencia (solo lectura + auditoría)

GET/attendance?date=2026-06-22

考勤以现场签到为准,供应商只读。任何修改都带留痕,用于 HRBP 的考勤修改率监控。

Site check-in is the source of truth; vendors read only. Every change carries an audit trail feeding HRBP's attendance-modification-rate monitoring.

El registro de entrada en sitio es la fuente de verdad; los proveedores solo leen. Cada cambio lleva una traza de auditoría que alimenta el monitoreo de la tasa de cambios de asistencia del HRBP.

{
  "records": [{
    "external_worker_id": "V-C-77210",
    "request_id": "REQ-2403",
    "status": "no_show",            # present | no_show | scheduled
    "check_in": null,
    "modification": {               # 有改动时出现
      "modified_by": "hrbp.ontario",
      "modified_at": "2026-06-22T16:40:00-04:00",
      "from": "present", "to": "no_show",
      "reason": "Left after 1h, corrected by floor lead"
    }
  }]
}
👁
改动对供应商透明。 供应商能看到自己的人被改了什么、为什么改——减少扯皮,也呼应 HRBP 对考勤修改率担责这条线。 Modifications are transparent to vendors. A vendor sees what changed on its workers and why — reducing disputes and reinforcing HRBP's accountability for the modification rate. Los cambios son transparentes para el proveedor. El proveedor ve qué se cambió en sus trabajadores y por qué — reduce disputas y refuerza la responsabilidad del HRBP sobre la tasa de cambios.

4 · 错误码

4 · Error Codes

4 · Códigos de error

HTTP含义MeaningSignificado
401API Key 无效或缺失Invalid or missing API keyAPI key inválida o ausente
403访问了非本供应商的资源(隔离拦截)Accessing another vendor's resource (isolation block)Acceso al recurso de otro proveedor (bloqueo de aislamiento)
404需求 / 人员不存在Request or worker not foundSolicitud o trabajador no encontrado
409重复提交(同 external_worker_id / Idempotency-Key)Duplicate submission (same external_worker_id / Idempotency-Key)Envío duplicado (mismo external_worker_id / Idempotency-Key)
422校验失败(卡点原因过短、叉车证过期等)Validation failed (reason too short, cert expired, etc.)Validación fallida (motivo demasiado corto, cert. vencido, etc.)
429超出频率限制Rate limit exceededLímite de frecuencia superado

5 · 关键字段

5 · Key Fields

5 · Campos clave

字段FieldCampo说明DescriptionDescripción
external_worker_id必填reqobl.供应商侧人员唯一ID,去重与跨班次追踪的主键Vendor-side unique worker ID; the key for dedup and cross-shift trackingID único del trabajador del lado del proveedor; clave para deduplicación y seguimiento entre turnos
tryout_buffersys超额试工人数(需 N 报 M)Over-supply headcount for tryout (need N, send M)Sobrecupo para la prueba (requiere N, envía M)
forklift_cert.status必填reqobl.valid / pending / none,服务端按有效期复核valid / pending / none; re-checked against expiry server-sidevalid / pending / none; reverificado contra la vigencia en el servidor
bill_rate仅自见own-onlysolo propio本供应商报价,跨供应商不可见Vendor's own rate; never visible cross-vendorTarifa propia del proveedor; nunca visible entre proveedores
modificationaudit考勤改动留痕,喂 HRBP 修改率Attendance change audit; feeds HRBP modification rateAuditoría de cambios de asistencia; alimenta la tasa de cambios del HRBP
📝
这是提议版,不是定稿。 频率限制、卡点原因字符数、叉车证以外的证照(如 reach truck)、是否加 webhook 推送,都可以按你们实际再定。需要我把它做成可导入的 OpenAPI(Swagger) 规范文件给开发,告诉我。 This is a proposal, not final. Rate limits, the shortfall character minimum, certs beyond forklift (e.g. reach truck), and whether to add webhook pushes are all adjustable. I can turn this into an importable OpenAPI (Swagger) spec for your developers — just ask. Esto es una propuesta, no la versión final. Los límites de frecuencia, el mínimo de caracteres del faltante, certificados más allá del montacargas (p. ej. reach truck) y si se agregan envíos por webhook son todos ajustables. Puedo convertir esto en una especificación OpenAPI (Swagger) importable para tus desarrolladores — solo pídelo.
FlexDock 供应商对接接口 · 提议版 v1 · 演示文档
FlexDock Supplier Integration API · Proposal v1 · Reference doc
API de integración de proveedores de FlexDock · Propuesta v1 · Documento de referencia