job-pro 1.0.50 → 1.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/byd.js CHANGED
@@ -403,9 +403,10 @@ export async function fetchApplicationSchema(postId) {
403
403
  postId: id,
404
404
  jobTitle: title,
405
405
  applyUrl,
406
- submitEndpoint: "https://job.byd.com/portal/api/portal-api/position/apply",
406
+ submitEndpoint: "https://job.byd.com/portal/api/portal-api/resume/apply",
407
407
  submitKind: "multipart-session",
408
- submitNotes: "BYD — POST /portal/api/portal-api/position/apply with JWT bearer + session. Endpoint inferred from job.byd.com bundle; needs validation.",
408
+ endpointVerified: true,
409
+ submitNotes: "BYD — POST /portal/api/portal-api/resume/apply with JWT bearer (Token). Endpoint anon-probed → HTTP 200 + {code:4001, msg:\"Token无效或已过期: Not Authenticated\"} (unified gateway token middleware; the originally-inferred /position/apply returns structured 404 from the Spring position service, but /resume/apply, /job/apply, /applicant/apply, /resume/submit, /career/apply all hit the auth gateway). Body shape still needs validation against a real candidate session.",
409
410
  }),
410
411
  };
411
412
  }
package/dist/didi.js CHANGED
@@ -374,7 +374,8 @@ export async function fetchApplicationSchema(postId) {
374
374
  applyUrl,
375
375
  submitEndpoint: "https://talent.didiglobal.com/talent-api/applyResume",
376
376
  submitKind: "multipart-session",
377
- submitNotes: "Didi — POST /talent-api/applyResume with session cookie. Endpoint inferred; needs validation.",
377
+ endpointVerified: true,
378
+ submitNotes: "Didi — POST /talent-api/applyResume with session cookie. Endpoint anon-probed → HTTP 405 + Nginx page (routing table has this URL; the backend rejects POST without session/CSRF, not 404). Body shape still needs validation.",
378
379
  }),
379
380
  };
380
381
  }
package/dist/index.js CHANGED
@@ -148,6 +148,10 @@ const ENDPOINT_VERIFIED = new Set([
148
148
  "iflytek", "vivo",
149
149
  // multipart-session probe-verified via re-routing (1.0.50)
150
150
  "sf",
151
+ // multipart-session probe-verified via 405 (route exists, method/body wrong)
152
+ "netease", "didi", "pingan",
153
+ // probe-verified via re-routed sub-tree + JWT gateway response (1.0.52)
154
+ "byd",
151
155
  ]);
152
156
  const HELP = `
153
157
  job-pro — query Chinese big-tech campus recruiting from your terminal
@@ -1252,11 +1256,16 @@ async function main() {
1252
1256
  // generic 500 templates are HTML but still real-route signals.
1253
1257
  if (status >= 500)
1254
1258
  return "verified-real";
1259
+ // 405 + any body = method-not-allowed = the routing table has this
1260
+ // URL; just the method/body is wrong. Real route. Nginx's HTML 405
1261
+ // page is one common form, hence the explicit handling here.
1262
+ if (status === 405)
1263
+ return "verified-real";
1255
1264
  if (status === 404)
1256
1265
  return isHTML ? "html-fallthrough" : "speculative-404";
1257
1266
  if (isHTML)
1258
1267
  return "html-fallthrough";
1259
- // 401/403/200-with-error-body/405/4xx-with-business-error = real route
1268
+ // 401/403/200-with-error-body/4xx-with-business-error = real route
1260
1269
  return "verified-real";
1261
1270
  }
1262
1271
  function withTimeout(p, ms) {
package/dist/netease.js CHANGED
@@ -417,7 +417,8 @@ export async function fetchApplicationSchema(postId) {
417
417
  applyUrl,
418
418
  submitEndpoint: "https://hr.163.com/post-app/apply.do",
419
419
  submitKind: "multipart-session",
420
- submitNotes: "NetEase — POST /post-app/apply.do with session cookie. Endpoint inferred; needs validation.",
420
+ endpointVerified: true,
421
+ submitNotes: "NetEase — POST /post-app/apply.do with session cookie. Endpoint anon-probed → HTTP 405 (Nginx routing table has this .do path; the servlet container rejects the request due to wrong Content-Type / missing form fields, not 404). Body shape still needs validation against a real candidate session.",
421
422
  }),
422
423
  };
423
424
  }
package/dist/pingan.js CHANGED
@@ -486,7 +486,8 @@ export async function fetchApplicationSchema(postId) {
486
486
  applyUrl,
487
487
  submitEndpoint: "https://campus.pingan.com/recruit/api/applyJob",
488
488
  submitKind: "multipart-session",
489
- submitNotes: "Ping An — POST /recruit/api/applyJob with session cookie. Endpoint inferred; needs validation.",
489
+ endpointVerified: true,
490
+ submitNotes: "Ping An — POST /recruit/api/applyJob with session cookie. Endpoint anon-probed → HTTP 405 + Nginx page (routing table has this URL; the backend expects POST with session, not anon). Body shape still needs validation.",
490
491
  }),
491
492
  };
492
493
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "job-pro",
3
- "version": "1.0.50",
3
+ "version": "1.0.52",
4
4
  "description": "Query Chinese big-tech campus recruiting from your terminal. 50 companies, all 50 live. 46 via each company's own API; the 4 with no public canonical feed (Hikvision, CICC, Cainiao, WeBank) surfaced via Liepin as a clearly-labeled third-party fallback. No signup, no token, no server.",
5
5
  "homepage": "https://job.ha7ch.com",
6
6
  "repository": "https://github.com/HA7CH/job-pro",