Zod Schema
YAMLResume 採用 zod 在執行時驗證履歷資料。
本文檔概述了 YAMLResume 中使用的所有 zod 模式。如果您對實現細節感興趣,可以在這裡找到原始碼。
履歷模式
定義整體履歷結構驗證,包括內容和佈局驗證。
| 屬性 | 類型 | 必需 |
|---|---|---|
content | ContentSchema | ✅ |
layouts? | LayoutsSchema | ⬜ |
locale? | LocaleSchema | ⬜ |
ContentSchema
定義整個履歷內容的驗證結構。
| 屬性 | 類型 | 必需 |
|---|---|---|
basics | BasicsItemSchema | ✅ |
education | EducationItemSchema[] | ✅ |
awards? | AwardItemSchema[] | ⬜ |
certificates? | CertificateItemSchema[] | ⬜ |
interests? | InterestItemSchema[] | ⬜ |
languages? | LanguageItemSchema[] | ⬜ |
location? | LocationItemSchema | ⬜ |
projects? | ProjectItemSchema[] | ⬜ |
profiles? | ProfileItemSchema[] | ⬜ |
publications? | PublicationItemSchema[] | ⬜ |
references? | ReferenceItemSchema[] | ⬜ |
skills? | SkillItemSchema[] | ⬜ |
volunteer? | VolunteerItemSchema[] | ⬜ |
work? | WorkItemSchema[] | ⬜ |
AwardItemSchema
驗證獲得的單個獎項、榮譽或認可。
BasicsItemSchema
驗證核心個人和聯繫資訊。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
name | string | ✅ | 2-128 個字元 |
email? | string | ⬜ | 參見電子郵件模式 |
headline? | string | ⬜ | 2-128 個字元 |
phone? | string | ⬜ | 參見電話模式 |
summary? | string | ⬜ | 參見摘要模式 |
url? | string | ⬜ | 參見URL 模式 |
CertificateItemSchema
驗證單個認證、證書或專業資格。
EducationItemSchema
驗證單個教育經歷或學位課程。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
area | string | ✅ | 2-64 個字元 |
degree | Degree | ✅ | 必須來自預定義的學位選項 |
institution | string | ✅ | 2-128 個字元 |
startDate | string | ✅ | 參見日期模式 |
courses? | string[] | ⬜ | 每個專案 2-128 個字元 |
endDate? | string | ⬜ | 參見日期模式 |
summary? | string | ⬜ | 參見摘要模式 |
score? | string | ⬜ | 2-32 個字元 |
url? | string | ⬜ | 參見URL 模式 |
InterestItemSchema
驗證單個興趣、愛好或個人活動。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
name | string | ✅ | 2-128 個字元 |
keywords? | string[] | ⬜ | 參見關鍵詞模式 |
LanguageItemSchema
驗證單個語言能力專案。
LocationItemSchema
驗證位置和地址資訊。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
city | string | ✅ | 2-128 個字元 |
address? | string | ⬜ | 2-128 個字元 |
country? | Country | ⬜ | 必須來自預定義的國家選項 |
postalCode? | string | ⬜ | 2-128 個字元 |
region? | string | ⬜ | 2-128 個字元 |
ProfileItemSchema
驗證單個線上個人資料或社交媒體存在。
ProjectItemSchema
驗證單個專案、作品集作品或技術工作。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
name | string | ✅ | 2-128 個字元 |
startDate | string | ✅ | 參見日期模式 |
summary | string | ✅ | 參見摘要模式 |
description? | string | ⬜ | 4-128 個字元 |
endDate? | string | ⬜ | 參見日期模式 |
keywords? | string[] | ⬜ | 每個專案 1-32 個字元 |
url? | string | ⬜ | 有效 URL,最多 256 個字元 |
PublicationItemSchema
驗證單個出版物、研究工作或學術論文。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
name | string | ✅ | 2-128 個字元 |
publisher | string | ✅ | 2-128 個字元 |
releaseDate? | string | ⬜ | 參見日期模式 |
summary? | string | ⬜ | 參見摘要模式 |
url? | string | ⬜ | 有效 URL,最多 256 個字元 |
ReferenceItemSchema
驗證單個專業推薦人或推薦。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
name | string | ✅ | 2-128 個字元 |
summary | string | ✅ | 參見摘要模式 |
email? | string | ⬜ | 參見電子郵件模式 |
phone? | string | ⬜ | 有效電話格式 |
relationship? | string | ⬜ | 2-128 個字元 |
SkillItemSchema
驗證單個技能、能力或技術能力。
VolunteerItemSchema
驗證單個志願者經歷或社區服務。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
organization | string | ✅ | 2-128 個字元 |
position | string | ✅ | 2-128 個字元 |
startDate | string | ✅ | 參見日期模式 |
summary | string | ✅ | 參見摘要模式 |
endDate? | string | ⬜ | 參見日期模式 |
url? | string | ⬜ | 有效 URL,最多 256 個字元 |
WorkItemSchema
驗證單個工作經歷或就業職位。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
name | string | ✅ | 2-128 個字元 |
position | string | ✅ | 2-128 個字元 |
startDate | string | ✅ | 參見日期模式 |
summary | string | ✅ | 參見摘要模式 |
endDate? | string | ⬜ | 參見日期模式 |
keywords? | string[] | ⬜ | 每個專案 1-32 個字元 |
url? | string | ⬜ | 有效 URL,最多 256 個字元 |
LocaleSchema
驗證國際化和本地化的區域設置。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
language? | LocaleLanguage | ⬜ | 必須來自預定義的區域語言選項 |
LayoutsSchema
定義整體佈局驗證配置。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
layouts[] | LatexLayoutSchema | MarkdownLayoutSchema | ⬜ | 佈局配置陣列。 |
通用佈局模式
MarginsSchema
驗證文件佈局的頁邊距設置。
SectionsSchema
驗證分節自定義設置。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
aliases? | Record<SectionID, string> | ⬜ | 鍵必須是有效的分節 ID,值必須是字串(2-128 個字元) |
order? | OrderableSectionID[] | ⬜ | 有效可排序分節 ID 的陣列 |
LatexLayoutSchema
驗證 LaTeX 佈局配置。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
advanced? | LatexAdvancedSchema | ⬜ | 參見高級模式 |
engine | 'latex' | ✅ | 必須是 "latex" |
page? | LatexPageSchema | ⬜ | 參見頁面模式 |
sections? | SectionsSchema | ⬜ | 參見分節模式 |
template? | LatexTemplate | ⬜ | 必須來自預定義的模板選項 |
typography? | LatexTypographySchema | ⬜ | 參見排版模式 |
LatexAdvancedSchema
驗證 LaTeX 的高級配置選項。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
fontspec? | { numbers?: LatexFontspecNumbers } | ⬜ | 必須來自預定義的fontspec 數字選項 |
LatexPageSchema
驗證文件演示的頁面級設置。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
margins? | MarginsSchema | ⬜ | 參見頁邊距模式 |
showPageNumbers? | boolean | ⬜ | true/false |
LatexTypographySchema
驗證文件格式的排版設置。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
fontSize? | string | ⬜ | 必須來自預定義的字體大小選項 |
links? | { underline?: boolean } | ⬜ | true/false |
MarkdownLayoutSchema
驗證 Markdown 佈局配置。
| 屬性 | 類型 | 必需 | 驗證規則 |
|---|---|---|---|
engine | 'markdown' | ✅ | 必須是 "markdown" |
sections? | SectionsSchema | ⬜ | 參見分節模式 |
原始驗證模式
電子郵件模式
使用嚴格格式要求驗證電子郵件地址。
驗證規則:
- 必須是有效的電子郵件格式
- 模式:
^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$ - 示例:
hi@ppresume.com、first.last@company.org、test+tag@domain.co.uk
電話模式
使用靈活格式支援驗證電話號碼。
驗證規則:
- 模式:
^[+]?[(]?[0-9\\s-]{1,15}[)]?[0-9\\s-]{1,15}$ - 可能包括國家代碼、括號、空格和連字元
- 示例:
555-123-4567、+44 20 7946 0958、(555) 123-4567
摘要模式
使用長度約束驗證摘要文字。
驗證規則:
- 必須在 16 到 1024 個字元之間
- 示例:
- "具有 5 年以上全棧開發經驗的軟體工程師。"
- "熱衷於使用者體驗和現代設計原則的創意設計師。"
- "在按時按預算交付複雜專案方面有良好記錄的專案經理。"
URL 模式
使用長度約束驗證 URL。
驗證規則:
- 必須是有效的 URL 格式
- 最大長度為 256 個字元
- 示例:
https://yamlresume.dev、https://ppresume.com、https://github.com/yamlresume/yamlresume
關鍵詞模式
使用單個專案約束驗證關鍵詞陣列。
驗證規則:
- 字串陣列
- 每個關鍵詞必須在 1 到 32 個字元之間
- 示例:
["Javascript", "React", "Typescript"]、["Design", "UI", "UX"]
日期模式
使用格式要求驗證日期字串。
驗證規則:
- 必須在 4 到 32 個字元之間
- 必須可被
Date.parse()解析 - 示例:
2025-01-01、Jul 2025、July 3, 2025、2025-02-02T00:00:03.123Z
頁邊距大小模式
使用單位要求驗證頁邊距大小字串。
驗證規則:
- 必須在 2 到 32 個字元之間
- 模式:
^\\d+(\\.\\d+)?(cm|pt|in)$ - 必須是正數後跟有效單位:cm、pt 或 in
- 示例:
2.5cm、1in、72pt、0.5cm、12pt
枚舉驗證模式
國家
世界上所有可能國家和地區的聯合類型。
驗證規則:
- 必須是預定義的國家選項之一
- 示例:
United States、China、United Kingdom、Germany
###學位
所有可能學位的聯合類型。
驗證規則:
- 必須是以下之一:
Associate、Bachelor、Diploma、Doctor、High School、Master、Middle School
熟練程度
所有可能語言熟練程度的聯合類型。
驗證規則:
- 必須是以下之一:
Elementary ProficiencyFull Professional ProficiencyLimited Working ProficiencyMinimum Professional ProficiencyNative or Bilingual Proficiency
語言
所有支援語言的聯合類型。
驗證規則:
- 必須是預定義的語言選項之一
- 示例:
English、Chinese、Spanish、French、German
級別
所有可能技能熟練程度的聯合類型。
驗證規則:
- 必須是以下之一:
Advanced、Beginner、Expert、Intermediate、Master、Novice
網路
所有可能社交網路選項的聯合類型。
驗證規則:
- 必須是預定義的網路選項之一
- 示例:
GitHub、LinkedIn、Twitter、Facebook、Instagram
LatexTemplate
所有可能模板選項的聯合類型。
驗證規則:
- 必須是以下之一:
moderncv-banking、moderncv-casual、moderncv-classic - 另請參閱:模板
LocaleLanguage
所有可能區域語言的聯合類型。
驗證規則:
- 必須是以下之一:
en、es、zh-hans、zh-hant-hk、zh-hant-tw - 另請參閱:多語言
LatexFontspecNumbers
所有可能 latex fontspec 數字選項的聯合類型。
驗證規則:
- 必須是以下之一:
Auto- 允許根據選定的LocaleLanguage自動確定樣式(預設)Lining- 標準襯線數字(CJK 語言的預設值)OldStyle- 不同高度的舊式數字(拉丁語言的預設值)
LatexFontSize
所有可能字體大小選項的聯合類型。
驗證規則:
- 必須是以下之一:
10pt、11pt、12pt 10pt是預設字體大小
Last updated on