careermate 0.1.1 → 0.1.3
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/LICENSE +21 -0
- package/README.md +14 -10
- package/THIRD_PARTY_NOTICES.md +15 -0
- package/apps/mcp/src/index.ts +4 -5
- package/apps/web/demo/demo-shim.js +536 -0
- package/apps/web/demo/demo.css +75 -0
- package/apps/web/demo/seed.js +269 -0
- package/apps/web/public/app.js +34 -2
- package/apps/web/public/index.html +10 -2
- package/apps/web/public/lib.js +134 -22
- package/apps/web/public/pages/applications.js +2 -9
- package/apps/web/public/pages/documents.js +73 -52
- package/apps/web/public/pages/home.js +16 -18
- package/apps/web/public/pages/interview.js +9 -12
- package/apps/web/public/pages/jobs.js +40 -41
- package/apps/web/public/pages/profile.js +69 -89
- package/apps/web/public/pages/settings.js +15 -10
- package/apps/web/public/styles.css +63 -4
- package/apps/web/src/http.ts +31 -4
- package/apps/web/src/info.ts +3 -3
- package/apps/web/src/routes.ts +2 -1
- package/apps/web/src/server.ts +1 -4
- package/dist/doctor.mjs +72715 -697
- package/dist/install-page/analytics.js +97 -0
- package/dist/install-page/index.html +94 -112
- package/dist/install-page/landing.js +54 -0
- package/dist/install-page/og.png +0 -0
- package/dist/install-page/robots.txt +4 -0
- package/dist/install-page/sitemap.xml +21 -0
- package/dist/install-page/start.html +26 -46
- package/dist/install-page/style.css +105 -37
- package/dist/mcp.mjs +74044 -2062
- package/dist/migrate.mjs +110 -90
- package/dist/pdf.worker.min.mjs +28 -0
- package/dist/public/app.js +34 -2
- package/dist/public/index.html +10 -2
- package/dist/public/lib.js +134 -22
- package/dist/public/pages/applications.js +2 -9
- package/dist/public/pages/documents.js +73 -52
- package/dist/public/pages/home.js +16 -18
- package/dist/public/pages/interview.js +9 -12
- package/dist/public/pages/jobs.js +40 -41
- package/dist/public/pages/profile.js +69 -89
- package/dist/public/pages/settings.js +15 -10
- package/dist/public/styles.css +63 -4
- package/dist/web.mjs +39740 -326
- package/package.json +6 -3
- package/packages/db/src/paths.ts +11 -0
- package/packages/db/src/repositories.ts +18 -1
- package/packages/mcp-tools/src/bridge.ts +55 -32
- package/packages/mcp-tools/src/index.ts +9 -0
- package/packages/mcp-tools/src/tools.ts +198 -75
- package/packages/mcp-tools/src/update.ts +330 -0
- package/packages/parsers/src/documents.ts +533 -0
- package/packages/parsers/src/index.ts +8 -5
- package/packages/prompts/src/onboarding.ts +2 -2
- package/packages/shared/src/build-info.ts +22 -0
- package/packages/shared/src/index.ts +1 -0
- package/packages/shared/src/schemas.ts +138 -83
- package/packages/workflows/src/definitions.ts +4 -2
- package/scripts/build-demo.mjs +130 -0
- package/scripts/build-dist.mjs +26 -1
- package/scripts/doctor.ts +16 -3
- package/scripts/gen-og.mjs +1 -1
- package/scripts/test.ts +25 -0
- package/scripts/ui-smoke.ts +32 -4
- package/docs/ARCHITECTURE.md +0 -208
- package/docs/CHANGES_V1.md +0 -103
- package/docs/DATA_MODEL.md +0 -460
- package/docs/DECISIONS.md +0 -277
- package/docs/DEMO.md +0 -242
- package/docs/MCP_TOOLS.md +0 -252
- package/docs/ROADMAP.md +0 -134
- package/docs/RUNTIME_DISTRIBUTION_RESEARCH.md +0 -135
- package/docs/START_WORKFLOW.md +0 -131
- package/docs/SUPPORTED_AI_APPS.md +0 -112
- package/docs/TODO.md +0 -57
- package/docs/UX_NOTES.md +0 -247
- package/docs/WORKFLOWS.md +0 -200
package/dist/migrate.mjs
CHANGED
|
@@ -4201,7 +4201,7 @@ ZodNaN.create = (params) => {
|
|
|
4201
4201
|
...processCreateParams(params)
|
|
4202
4202
|
});
|
|
4203
4203
|
};
|
|
4204
|
-
var BRAND = Symbol("zod_brand");
|
|
4204
|
+
var BRAND = /* @__PURE__ */ Symbol("zod_brand");
|
|
4205
4205
|
var ZodBranded = class extends ZodType {
|
|
4206
4206
|
_parse(input) {
|
|
4207
4207
|
const { ctx } = this._processInputParams(input);
|
|
@@ -4403,41 +4403,61 @@ var ostring = () => stringType().optional();
|
|
|
4403
4403
|
var onumber = () => numberType().optional();
|
|
4404
4404
|
var oboolean = () => booleanType().optional();
|
|
4405
4405
|
var coerce = {
|
|
4406
|
-
string: (arg) => ZodString.create({ ...arg, coerce: true }),
|
|
4407
|
-
number: (arg) => ZodNumber.create({ ...arg, coerce: true }),
|
|
4408
|
-
boolean: (arg) => ZodBoolean.create({
|
|
4406
|
+
string: ((arg) => ZodString.create({ ...arg, coerce: true })),
|
|
4407
|
+
number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),
|
|
4408
|
+
boolean: ((arg) => ZodBoolean.create({
|
|
4409
4409
|
...arg,
|
|
4410
4410
|
coerce: true
|
|
4411
|
-
}),
|
|
4412
|
-
bigint: (arg) => ZodBigInt.create({ ...arg, coerce: true }),
|
|
4413
|
-
date: (arg) => ZodDate.create({ ...arg, coerce: true })
|
|
4411
|
+
})),
|
|
4412
|
+
bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),
|
|
4413
|
+
date: ((arg) => ZodDate.create({ ...arg, coerce: true }))
|
|
4414
4414
|
};
|
|
4415
4415
|
var NEVER = INVALID;
|
|
4416
4416
|
|
|
4417
4417
|
// packages/shared/src/schemas.ts
|
|
4418
4418
|
var isoDateTime = external_exports.string();
|
|
4419
4419
|
var id = external_exports.string();
|
|
4420
|
+
function isSafeUrl(u) {
|
|
4421
|
+
const s = u.trim();
|
|
4422
|
+
return !/^[a-z][a-z0-9+.-]*:/i.test(s) || /^(https?:|mailto:)/i.test(s);
|
|
4423
|
+
}
|
|
4424
|
+
var UNSAFE_URL_MSG = "javascript: \uAC19\uC740 \uC704\uD5D8\uD55C \uB9C1\uD06C\uB294 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. http(s) \uB9C1\uD06C\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.";
|
|
4425
|
+
var MAX_URL = 2e3;
|
|
4426
|
+
var SafeUrl = external_exports.string().min(1).max(MAX_URL).refine(isSafeUrl, { message: UNSAFE_URL_MSG });
|
|
4427
|
+
var SafeUrlOptional = external_exports.string().max(MAX_URL).optional().refine((u) => u == null || u === "" || isSafeUrl(u), { message: UNSAFE_URL_MSG });
|
|
4428
|
+
var MAX_LINE = 500;
|
|
4429
|
+
var MAX_NOTE = 1e4;
|
|
4430
|
+
var MAX_BODY = 2e5;
|
|
4431
|
+
var MAX_ITEM = 2e3;
|
|
4432
|
+
var MAX_ITEMS = 500;
|
|
4433
|
+
var EMPTY_MSG = "\uB0B4\uC6A9\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4(\uACF5\uBC31\uB9CC\uC73C\uB85C\uB294 \uC800\uC7A5\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4).";
|
|
4434
|
+
var reqLine = external_exports.string().trim().min(1).max(MAX_LINE);
|
|
4435
|
+
var optLine = external_exports.string().max(MAX_LINE).optional();
|
|
4436
|
+
var optNote = external_exports.string().max(MAX_NOTE).optional();
|
|
4437
|
+
var optBody = external_exports.string().max(MAX_BODY).optional();
|
|
4438
|
+
var reqBody = external_exports.string().max(MAX_BODY).refine((s) => s.trim().length > 0, { message: EMPTY_MSG });
|
|
4439
|
+
var strList = external_exports.array(external_exports.string().max(MAX_ITEM)).max(MAX_ITEMS);
|
|
4420
4440
|
var baseRecord = {
|
|
4421
4441
|
id,
|
|
4422
4442
|
created_at: isoDateTime,
|
|
4423
4443
|
updated_at: isoDateTime
|
|
4424
4444
|
};
|
|
4425
4445
|
var LinkSchema = external_exports.object({
|
|
4426
|
-
label:
|
|
4427
|
-
url:
|
|
4446
|
+
label: reqLine,
|
|
4447
|
+
url: SafeUrl
|
|
4428
4448
|
});
|
|
4429
4449
|
var ProfileInputSchema = external_exports.object({
|
|
4430
|
-
name:
|
|
4431
|
-
email:
|
|
4432
|
-
phone:
|
|
4433
|
-
location:
|
|
4434
|
-
headline: external_exports.string().optional().describe("\uD55C \uC904 \uC18C\uAC1C / \uC9C1\uBB34 \uD0C0\uC774\uD2C0"),
|
|
4435
|
-
summary: external_exports.string().optional().describe("\uC790\uAE30\uC18C\uAC1C \uC694\uC57D"),
|
|
4436
|
-
desired_roles:
|
|
4437
|
-
desired_conditions: external_exports.string().optional().describe("\uD76C\uB9DD \uADFC\uBB34 \uC870\uAC74 (\uC5F0\uBD09, \uC9C0\uC5ED, \uADFC\uBB34\uD615\uD0DC \uB4F1)"),
|
|
4438
|
-
preferred_tone: external_exports.string().optional().describe("\uC790\uAE30\uC18C\uAC1C\uC11C \uC120\uD638 \uBB38\uCCB4 (\uC608: \uB2F4\uBC31\uD558\uACE0 \uAD6C\uCCB4\uC801)"),
|
|
4439
|
-
emphasis_points:
|
|
4440
|
-
links: external_exports.array(LinkSchema).optional().describe("\uD3EC\uD2B8\uD3F4\uB9AC\uC624/\uAE43\uD5C8\uBE0C/\uB9C1\uD06C\uB4DC\uC778 \uB4F1")
|
|
4450
|
+
name: reqLine.optional(),
|
|
4451
|
+
email: optLine,
|
|
4452
|
+
phone: optLine,
|
|
4453
|
+
location: optLine,
|
|
4454
|
+
headline: external_exports.string().max(MAX_LINE).optional().describe("\uD55C \uC904 \uC18C\uAC1C / \uC9C1\uBB34 \uD0C0\uC774\uD2C0"),
|
|
4455
|
+
summary: external_exports.string().max(MAX_NOTE).optional().describe("\uC790\uAE30\uC18C\uAC1C \uC694\uC57D"),
|
|
4456
|
+
desired_roles: strList.optional().describe("\uD76C\uB9DD \uC9C1\uBB34"),
|
|
4457
|
+
desired_conditions: external_exports.string().max(MAX_NOTE).optional().describe("\uD76C\uB9DD \uADFC\uBB34 \uC870\uAC74 (\uC5F0\uBD09, \uC9C0\uC5ED, \uADFC\uBB34\uD615\uD0DC \uB4F1)"),
|
|
4458
|
+
preferred_tone: external_exports.string().max(MAX_LINE).optional().describe("\uC790\uAE30\uC18C\uAC1C\uC11C \uC120\uD638 \uBB38\uCCB4 (\uC608: \uB2F4\uBC31\uD558\uACE0 \uAD6C\uCCB4\uC801)"),
|
|
4459
|
+
emphasis_points: strList.optional().describe("\uAC15\uC870\uD558\uACE0 \uC2F6\uC740 \uD575\uC2EC \uD3EC\uC778\uD2B8"),
|
|
4460
|
+
links: external_exports.array(LinkSchema).max(MAX_ITEMS).optional().describe("\uD3EC\uD2B8\uD3F4\uB9AC\uC624/\uAE43\uD5C8\uBE0C/\uB9C1\uD06C\uB4DC\uC778 \uB4F1")
|
|
4441
4461
|
});
|
|
4442
4462
|
var ProfileRecordSchema = external_exports.object({
|
|
4443
4463
|
...baseRecord,
|
|
@@ -4454,15 +4474,15 @@ var ProfileRecordSchema = external_exports.object({
|
|
|
4454
4474
|
links: external_exports.array(LinkSchema)
|
|
4455
4475
|
});
|
|
4456
4476
|
var ExperienceInputSchema = external_exports.object({
|
|
4457
|
-
company:
|
|
4458
|
-
role:
|
|
4459
|
-
employment_type: external_exports.string().optional().describe("\uC815\uADDC\uC9C1/\uACC4\uC57D\uC9C1/\uC778\uD134/\uD504\uB9AC\uB79C\uC11C \uB4F1"),
|
|
4460
|
-
start_date: external_exports.string().optional().describe("YYYY-MM \uB610\uB294 YYYY-MM-DD"),
|
|
4461
|
-
end_date: external_exports.string().optional().describe("\uC7AC\uC9C1 \uC911\uC774\uBA74 \uBE44\uC6CC\uB450\uAE30"),
|
|
4477
|
+
company: reqLine,
|
|
4478
|
+
role: optLine,
|
|
4479
|
+
employment_type: external_exports.string().max(MAX_LINE).optional().describe("\uC815\uADDC\uC9C1/\uACC4\uC57D\uC9C1/\uC778\uD134/\uD504\uB9AC\uB79C\uC11C \uB4F1"),
|
|
4480
|
+
start_date: external_exports.string().max(MAX_LINE).optional().describe("YYYY-MM \uB610\uB294 YYYY-MM-DD"),
|
|
4481
|
+
end_date: external_exports.string().max(MAX_LINE).optional().describe("\uC7AC\uC9C1 \uC911\uC774\uBA74 \uBE44\uC6CC\uB450\uAE30"),
|
|
4462
4482
|
is_current: external_exports.boolean().optional(),
|
|
4463
|
-
description:
|
|
4464
|
-
achievements:
|
|
4465
|
-
tech:
|
|
4483
|
+
description: optBody,
|
|
4484
|
+
achievements: strList.optional().describe("\uC131\uACFC/\uC5C5\uC801 (\uC815\uB7C9 \uC9C0\uD45C \uAD8C\uC7A5)"),
|
|
4485
|
+
tech: strList.optional().describe("\uC0AC\uC6A9 \uAE30\uC220/\uB3C4\uAD6C"),
|
|
4466
4486
|
order_index: external_exports.number().optional()
|
|
4467
4487
|
});
|
|
4468
4488
|
var ExperienceRecordSchema = external_exports.object({
|
|
@@ -4479,14 +4499,14 @@ var ExperienceRecordSchema = external_exports.object({
|
|
|
4479
4499
|
order_index: external_exports.number()
|
|
4480
4500
|
});
|
|
4481
4501
|
var ProjectInputSchema = external_exports.object({
|
|
4482
|
-
name:
|
|
4483
|
-
role:
|
|
4484
|
-
description:
|
|
4485
|
-
highlights:
|
|
4486
|
-
tech:
|
|
4487
|
-
url:
|
|
4488
|
-
start_date:
|
|
4489
|
-
end_date:
|
|
4502
|
+
name: reqLine,
|
|
4503
|
+
role: optLine,
|
|
4504
|
+
description: optBody,
|
|
4505
|
+
highlights: strList.optional(),
|
|
4506
|
+
tech: strList.optional(),
|
|
4507
|
+
url: SafeUrlOptional,
|
|
4508
|
+
start_date: optLine,
|
|
4509
|
+
end_date: optLine,
|
|
4490
4510
|
order_index: external_exports.number().optional()
|
|
4491
4511
|
});
|
|
4492
4512
|
var ProjectRecordSchema = external_exports.object({
|
|
@@ -4502,9 +4522,9 @@ var ProjectRecordSchema = external_exports.object({
|
|
|
4502
4522
|
order_index: external_exports.number()
|
|
4503
4523
|
});
|
|
4504
4524
|
var SkillInputSchema = external_exports.object({
|
|
4505
|
-
name:
|
|
4506
|
-
category: external_exports.string().optional().describe("\uC5B8\uC5B4/\uD504\uB808\uC784\uC6CC\uD06C/\uD234/\uC18C\uD504\uD2B8\uC2A4\uD0AC \uB4F1"),
|
|
4507
|
-
level: external_exports.string().optional().describe("\uC0C1/\uC911/\uD558 \uB610\uB294 \uC790\uC720 \uC11C\uC220"),
|
|
4525
|
+
name: reqLine,
|
|
4526
|
+
category: external_exports.string().max(MAX_LINE).optional().describe("\uC5B8\uC5B4/\uD504\uB808\uC784\uC6CC\uD06C/\uD234/\uC18C\uD504\uD2B8\uC2A4\uD0AC \uB4F1"),
|
|
4527
|
+
level: external_exports.string().max(MAX_LINE).optional().describe("\uC0C1/\uC911/\uD558 \uB610\uB294 \uC790\uC720 \uC11C\uC220"),
|
|
4508
4528
|
years: external_exports.number().optional(),
|
|
4509
4529
|
order_index: external_exports.number().optional()
|
|
4510
4530
|
});
|
|
@@ -4518,11 +4538,11 @@ var SkillRecordSchema = external_exports.object({
|
|
|
4518
4538
|
});
|
|
4519
4539
|
var DocumentInputSchema = external_exports.object({
|
|
4520
4540
|
kind: external_exports.enum(DOCUMENT_KINDS),
|
|
4521
|
-
title:
|
|
4522
|
-
content:
|
|
4541
|
+
title: reqLine,
|
|
4542
|
+
content: reqBody.describe("Markdown \uB610\uB294 \uC77C\uBC18 \uD14D\uC2A4\uD2B8 \uBCF8\uBB38"),
|
|
4523
4543
|
source: external_exports.enum(CONTENT_SOURCES).optional(),
|
|
4524
4544
|
is_primary: external_exports.boolean().optional().describe("\uB300\uD45C \uBB38\uC11C \uC5EC\uBD80"),
|
|
4525
|
-
tags:
|
|
4545
|
+
tags: strList.optional()
|
|
4526
4546
|
});
|
|
4527
4547
|
var DocumentRecordSchema = external_exports.object({
|
|
4528
4548
|
...baseRecord,
|
|
@@ -4534,19 +4554,19 @@ var DocumentRecordSchema = external_exports.object({
|
|
|
4534
4554
|
tags: external_exports.array(external_exports.string())
|
|
4535
4555
|
});
|
|
4536
4556
|
var CoverLetterInputSchema = external_exports.object({
|
|
4537
|
-
title:
|
|
4538
|
-
job_id:
|
|
4557
|
+
title: reqLine,
|
|
4558
|
+
job_id: optLine.describe("\uD2B9\uC815 \uACF5\uACE0\uC5D0 \uC5F0\uACB0\uD560 \uACBD\uC6B0"),
|
|
4539
4559
|
is_primary: external_exports.boolean().optional(),
|
|
4540
|
-
content:
|
|
4560
|
+
content: optBody.describe("\uCD08\uAE30 \uBC84\uC804 \uBCF8\uBB38 (\uC788\uC73C\uBA74 v1\uB85C \uC800\uC7A5)"),
|
|
4541
4561
|
source: external_exports.enum(CONTENT_SOURCES).optional(),
|
|
4542
|
-
note:
|
|
4562
|
+
note: optNote.describe("\uCD08\uAE30 \uBC84\uC804 \uBA54\uBAA8")
|
|
4543
4563
|
});
|
|
4544
4564
|
var CoverLetterVersionInputSchema = external_exports.object({
|
|
4545
|
-
cover_letter_id:
|
|
4546
|
-
title: external_exports.string().optional().describe("\uC0C8 \uC790\uAE30\uC18C\uAC1C\uC11C\uB97C \uB9CC\uB4E4 \uB54C \uC81C\uBAA9"),
|
|
4547
|
-
job_id:
|
|
4548
|
-
content:
|
|
4549
|
-
note:
|
|
4565
|
+
cover_letter_id: optLine.describe("\uAE30\uC874 \uC790\uAE30\uC18C\uAC1C\uC11C\uC5D0 \uC0C8 \uBC84\uC804 \uCD94\uAC00 \uC2DC"),
|
|
4566
|
+
title: external_exports.string().max(MAX_LINE).optional().describe("\uC0C8 \uC790\uAE30\uC18C\uAC1C\uC11C\uB97C \uB9CC\uB4E4 \uB54C \uC81C\uBAA9"),
|
|
4567
|
+
job_id: optLine,
|
|
4568
|
+
content: reqBody,
|
|
4569
|
+
note: optNote.describe("\uC774 \uBC84\uC804\uC758 \uBCC0\uACBD \uC694\uC57D (\uC608: \uC9C0\uC6D0\uB3D9\uAE30 \uBCF4\uAC15)"),
|
|
4550
4570
|
source: external_exports.enum(CONTENT_SOURCES).optional(),
|
|
4551
4571
|
set_current: external_exports.boolean().optional().describe("\uC774 \uBC84\uC804\uC744 \uD604\uC7AC \uBC84\uC804\uC73C\uB85C \uC9C0\uC815 (\uAE30\uBCF8 true)")
|
|
4552
4572
|
});
|
|
@@ -4570,16 +4590,16 @@ var CoverLetterRecordSchema = external_exports.object({
|
|
|
4570
4590
|
versions: external_exports.array(CoverLetterVersionRecordSchema).optional()
|
|
4571
4591
|
});
|
|
4572
4592
|
var JobInputSchema = external_exports.object({
|
|
4573
|
-
company:
|
|
4574
|
-
position:
|
|
4575
|
-
url:
|
|
4576
|
-
location:
|
|
4577
|
-
employment_type:
|
|
4578
|
-
description:
|
|
4579
|
-
requirements:
|
|
4580
|
-
keywords:
|
|
4581
|
-
deadline: external_exports.string().optional().describe("\uB9C8\uAC10\uC77C YYYY-MM-DD"),
|
|
4582
|
-
source: external_exports.string().optional().describe("\uCD9C\uCC98 (\uC0AC\uB78C\uC778/\uC6D0\uD2F0\uB4DC/\uC9C1\uC811 \uC785\uB825 \uB4F1)")
|
|
4593
|
+
company: reqLine,
|
|
4594
|
+
position: reqLine.describe("\uC9C1\uBB34/\uD3EC\uC9C0\uC158\uBA85"),
|
|
4595
|
+
url: SafeUrlOptional,
|
|
4596
|
+
location: optLine,
|
|
4597
|
+
employment_type: optLine,
|
|
4598
|
+
description: optBody.describe("\uACF5\uACE0 \uC6D0\uBB38 \uB610\uB294 \uC815\uB9AC\uB41C \uD14D\uC2A4\uD2B8"),
|
|
4599
|
+
requirements: strList.optional().describe("\uC790\uACA9\uC694\uAC74/\uC6B0\uB300\uC0AC\uD56D \uD575\uC2EC"),
|
|
4600
|
+
keywords: strList.optional().describe("\uD575\uC2EC \uD0A4\uC6CC\uB4DC"),
|
|
4601
|
+
deadline: external_exports.string().max(MAX_LINE).optional().describe("\uB9C8\uAC10\uC77C YYYY-MM-DD"),
|
|
4602
|
+
source: external_exports.string().max(MAX_LINE).optional().describe("\uCD9C\uCC98 (\uC0AC\uB78C\uC778/\uC6D0\uD2F0\uB4DC/\uC9C1\uC811 \uC785\uB825 \uB4F1)")
|
|
4583
4603
|
});
|
|
4584
4604
|
var JobRecordSchema = external_exports.object({
|
|
4585
4605
|
...baseRecord,
|
|
@@ -4595,14 +4615,14 @@ var JobRecordSchema = external_exports.object({
|
|
|
4595
4615
|
source: external_exports.string().nullable()
|
|
4596
4616
|
});
|
|
4597
4617
|
var FitAnalysisInputSchema = external_exports.object({
|
|
4598
|
-
job_id:
|
|
4618
|
+
job_id: reqLine.describe("\uBD84\uC11D \uB300\uC0C1 \uACF5\uACE0 ID"),
|
|
4599
4619
|
score: external_exports.number().min(0).max(100).optional().describe("\uC885\uD569 \uC801\uD569\uB3C4 0~100"),
|
|
4600
|
-
summary: external_exports.string().optional().describe("\uD55C\uB450 \uBB38\uB2E8 \uC694\uC57D"),
|
|
4601
|
-
strengths:
|
|
4602
|
-
gaps:
|
|
4603
|
-
matched_keywords:
|
|
4604
|
-
missing_keywords:
|
|
4605
|
-
recommendations:
|
|
4620
|
+
summary: external_exports.string().max(MAX_NOTE).optional().describe("\uD55C\uB450 \uBB38\uB2E8 \uC694\uC57D"),
|
|
4621
|
+
strengths: strList.optional().describe("\uAC15\uC810 / \uC798 \uB9DE\uB294 \uBD80\uBD84"),
|
|
4622
|
+
gaps: strList.optional().describe("\uBD80\uC871\uD55C \uBD80\uBD84 / \uBCF4\uC644 \uD544\uC694"),
|
|
4623
|
+
matched_keywords: strList.optional(),
|
|
4624
|
+
missing_keywords: strList.optional(),
|
|
4625
|
+
recommendations: strList.optional().describe("\uC790\uAE30\uC18C\uAC1C\uC11C/\uC9C0\uC6D0 \uC804\uB7B5 \uC81C\uC548")
|
|
4606
4626
|
});
|
|
4607
4627
|
var FitAnalysisRecordSchema = external_exports.object({
|
|
4608
4628
|
...baseRecord,
|
|
@@ -4616,18 +4636,18 @@ var FitAnalysisRecordSchema = external_exports.object({
|
|
|
4616
4636
|
recommendations: external_exports.array(external_exports.string())
|
|
4617
4637
|
});
|
|
4618
4638
|
var ApplicationInputSchema = external_exports.object({
|
|
4619
|
-
job_id:
|
|
4639
|
+
job_id: reqLine,
|
|
4620
4640
|
status: external_exports.enum(APPLICATION_STATUSES).optional(),
|
|
4621
|
-
resume_id:
|
|
4622
|
-
cover_letter_id:
|
|
4623
|
-
applied_at:
|
|
4624
|
-
notes:
|
|
4641
|
+
resume_id: optLine,
|
|
4642
|
+
cover_letter_id: optLine,
|
|
4643
|
+
applied_at: optLine,
|
|
4644
|
+
notes: optNote
|
|
4625
4645
|
});
|
|
4626
4646
|
var ApplicationStatusUpdateSchema = external_exports.object({
|
|
4627
|
-
job_id:
|
|
4628
|
-
application_id:
|
|
4647
|
+
job_id: optLine,
|
|
4648
|
+
application_id: optLine,
|
|
4629
4649
|
status: external_exports.enum(APPLICATION_STATUSES),
|
|
4630
|
-
note:
|
|
4650
|
+
note: optNote.describe("\uC0C1\uD0DC \uBCC0\uACBD \uC0AC\uC720/\uBA54\uBAA8")
|
|
4631
4651
|
});
|
|
4632
4652
|
var ApplicationRecordSchema = external_exports.object({
|
|
4633
4653
|
...baseRecord,
|
|
@@ -4639,24 +4659,24 @@ var ApplicationRecordSchema = external_exports.object({
|
|
|
4639
4659
|
notes: external_exports.string().nullable()
|
|
4640
4660
|
});
|
|
4641
4661
|
var StarGuideSchema = external_exports.object({
|
|
4642
|
-
question: external_exports.string(),
|
|
4643
|
-
situation:
|
|
4644
|
-
task:
|
|
4645
|
-
action:
|
|
4646
|
-
result:
|
|
4662
|
+
question: external_exports.string().max(MAX_NOTE),
|
|
4663
|
+
situation: optNote,
|
|
4664
|
+
task: optNote,
|
|
4665
|
+
action: optNote,
|
|
4666
|
+
result: optNote
|
|
4647
4667
|
});
|
|
4648
4668
|
var InterviewQuestionSchema = external_exports.object({
|
|
4649
|
-
question: external_exports.string(),
|
|
4650
|
-
intent: external_exports.string().optional().describe("\uC9C8\uBB38 \uC758\uB3C4"),
|
|
4651
|
-
followups:
|
|
4652
|
-
answer_outline:
|
|
4669
|
+
question: external_exports.string().max(MAX_NOTE),
|
|
4670
|
+
intent: external_exports.string().max(MAX_NOTE).optional().describe("\uC9C8\uBB38 \uC758\uB3C4"),
|
|
4671
|
+
followups: strList.optional().describe("\uC608\uC0C1 \uAF2C\uB9AC \uC9C8\uBB38"),
|
|
4672
|
+
answer_outline: optBody.describe("\uB2F5\uBCC0 \uAC00\uC774\uB4DC/\uD575\uC2EC \uD3EC\uC778\uD2B8")
|
|
4653
4673
|
});
|
|
4654
4674
|
var InterviewPrepInputSchema = external_exports.object({
|
|
4655
|
-
job_id:
|
|
4656
|
-
questions: external_exports.array(InterviewQuestionSchema).optional(),
|
|
4657
|
-
star_guides: external_exports.array(StarGuideSchema).optional(),
|
|
4658
|
-
self_introduction:
|
|
4659
|
-
notes:
|
|
4675
|
+
job_id: reqLine,
|
|
4676
|
+
questions: external_exports.array(InterviewQuestionSchema).max(MAX_ITEMS).optional(),
|
|
4677
|
+
star_guides: external_exports.array(StarGuideSchema).max(MAX_ITEMS).optional(),
|
|
4678
|
+
self_introduction: optBody.describe("1\uBD84 \uC790\uAE30\uC18C\uAC1C \uCD08\uC548"),
|
|
4679
|
+
notes: optNote.describe("\uBA74\uC811 \uD6C4\uAE30/\uBA54\uBAA8")
|
|
4660
4680
|
});
|
|
4661
4681
|
var InterviewPrepRecordSchema = external_exports.object({
|
|
4662
4682
|
...baseRecord,
|