knowme-careerforge-skill 0.0.1
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 +227 -0
- package/README.zh-CN.md +231 -0
- package/SKILL.md +179 -0
- package/agents/claude/knowme-careerforge.md +16 -0
- package/agents/codex/knowme-careerforge.yaml +15 -0
- package/agents/cursor/knowme-careerforge.mdc +12 -0
- package/agents/gemini/knowme-careerforge.json +6 -0
- package/agents/opencode/skill.yaml +11 -0
- package/agents/windsurf/knowme-careerforge.rules +10 -0
- package/bin/knowme.js +32 -0
- package/dist/cli/src/commands/init.d.ts +10 -0
- package/dist/cli/src/commands/init.js +130 -0
- package/dist/cli/src/commands/list.d.ts +5 -0
- package/dist/cli/src/commands/list.js +92 -0
- package/dist/cli/src/index.d.ts +6 -0
- package/dist/cli/src/index.js +149 -0
- package/dist/scripts/render-pdf.d.ts +11 -0
- package/dist/scripts/render-pdf.js +105 -0
- package/dist/scripts/validate-ats.d.ts +23 -0
- package/dist/scripts/validate-ats.js +169 -0
- package/dist/scripts/validate-layout.d.ts +24 -0
- package/dist/scripts/validate-layout.js +161 -0
- package/package.json +58 -0
- package/scripts/analyze-jd.py +108 -0
- package/scripts/build-gallery.py +233 -0
- package/scripts/build-knowledge.py +81 -0
- package/scripts/instantiate-resume.py +83 -0
- package/scripts/release.py +101 -0
- package/scripts/render-pdf.ts +86 -0
- package/scripts/run-all-tests.py +41 -0
- package/scripts/search-template.py +147 -0
- package/scripts/sync-version.py +57 -0
- package/scripts/validate-ats.ts +173 -0
- package/scripts/validate-layout.ts +161 -0
- package/scripts/validate-resume.py +139 -0
- package/skill.json +47 -0
- package/src/knowledge/ats-rules.json +37 -0
- package/src/knowledge/career/seniority-signals.json +24 -0
- package/src/knowledge/index.json +734 -0
- package/src/knowledge/industries/enterprise-saas.json +21 -0
- package/src/knowledge/industries/fintech.json +21 -0
- package/src/knowledge/industries/tech-ai.json +21 -0
- package/src/knowledge/layouts.json +59 -0
- package/src/knowledge/resume/action-verbs.json +20 -0
- package/src/knowledge/resume/fab-model.json +22 -0
- package/src/knowledge/roles/ai-agent-engineer.json +52 -0
- package/src/knowledge/roles/android-engineer.json +45 -0
- package/src/knowledge/roles/architect.json +48 -0
- package/src/knowledge/roles/cpp-systems.json +47 -0
- package/src/knowledge/roles/frontend.json +49 -0
- package/src/knowledge/roles/ios-engineer.json +45 -0
- package/src/knowledge/roles/java-backend.json +49 -0
- package/src/knowledge/roles/node-fullstack.json +49 -0
- package/src/knowledge/roles/product-manager.json +48 -0
- package/src/knowledge/skills/skill-matrix.json +29 -0
- package/src/knowledge/styles.json +73 -0
- package/src/knowledge/templates.json +255 -0
- package/src/references/ats.md +17 -0
- package/src/references/evidence-first.md +22 -0
- package/src/references/pdf.md +40 -0
- package/src/references/resume-writing.md +25 -0
- package/src/references/template-design.md +57 -0
- package/src/templates/classic/README.md +12 -0
- package/src/templates/classic/metadata.json +34 -0
- package/src/templates/classic/style.css +164 -0
- package/src/templates/classic/template.html +133 -0
- package/src/templates/common/resume-contract.md +69 -0
- package/src/templates/executive/README.md +12 -0
- package/src/templates/executive/metadata.json +37 -0
- package/src/templates/executive/style.css +235 -0
- package/src/templates/executive/template.html +101 -0
- package/src/templates/minimal/README.md +12 -0
- package/src/templates/minimal/metadata.json +37 -0
- package/src/templates/minimal/style.css +219 -0
- package/src/templates/minimal/template.html +114 -0
- package/src/templates/modern/README.md +12 -0
- package/src/templates/modern/metadata.json +38 -0
- package/src/templates/modern/style.css +277 -0
- package/src/templates/modern/template.html +139 -0
- package/src/workflows/analyze-job.md +16 -0
- package/src/workflows/define-goal.md +16 -0
- package/src/workflows/forge-resume.md +25 -0
- package/src/workflows/know-me.md +21 -0
- package/src/workflows/position.md +19 -0
- package/src/workflows/review.md +31 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* A4 绝对几何尺寸 */
|
|
3
|
+
--resume-page-width: 210mm;
|
|
4
|
+
--resume-page-min-height: 297mm;
|
|
5
|
+
--resume-page-padding: 12mm 14mm;
|
|
6
|
+
|
|
7
|
+
/* 配色系统 */
|
|
8
|
+
--resume-color-primary: #0f172a; /* Slate 900 */
|
|
9
|
+
--resume-color-secondary: #334155; /* Slate 700 */
|
|
10
|
+
--resume-color-muted: #64748b; /* Slate 500 */
|
|
11
|
+
--resume-color-accent: #1d4ed8; /* Blue 700 */
|
|
12
|
+
--resume-color-border: #cbd5e1; /* Slate 300 稳重边框 */
|
|
13
|
+
--resume-color-header-bg: #f8fafc; /* Slate 50 */
|
|
14
|
+
--resume-color-label-bg: #f1f5f9; /* Slate 100 */
|
|
15
|
+
|
|
16
|
+
/* 字阶系统 */
|
|
17
|
+
--resume-font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
|
18
|
+
--resume-font-size-title: 18pt;
|
|
19
|
+
--resume-font-size-body: 9pt;
|
|
20
|
+
--resume-font-size-meta: 8.5pt;
|
|
21
|
+
--resume-line-height-body: 1.4;
|
|
22
|
+
|
|
23
|
+
/* 单元格内边距 */
|
|
24
|
+
--resume-cell-padding: 4.5pt 7pt;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
28
|
+
|
|
29
|
+
body {
|
|
30
|
+
background-color: #e2e8f0;
|
|
31
|
+
font-family: var(--resume-font-body);
|
|
32
|
+
display: flex;
|
|
33
|
+
justify-content: center;
|
|
34
|
+
padding: 24px 0;
|
|
35
|
+
color: var(--resume-color-primary);
|
|
36
|
+
-webkit-font-smoothing: antialiased;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.resume-page {
|
|
40
|
+
width: var(--resume-page-width);
|
|
41
|
+
min-height: var(--resume-page-min-height);
|
|
42
|
+
background: #ffffff;
|
|
43
|
+
padding: var(--resume-page-padding);
|
|
44
|
+
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
|
|
45
|
+
box-sizing: border-box;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.resume-header {
|
|
49
|
+
text-align: center;
|
|
50
|
+
margin-bottom: 8pt;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.resume-main-title {
|
|
54
|
+
font-size: var(--resume-font-size-title);
|
|
55
|
+
font-weight: 800;
|
|
56
|
+
letter-spacing: 4px;
|
|
57
|
+
color: var(--resume-color-primary);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.resume-sub-title {
|
|
61
|
+
font-size: 8pt;
|
|
62
|
+
letter-spacing: 2px;
|
|
63
|
+
color: var(--resume-color-muted);
|
|
64
|
+
margin-top: 1pt;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* 结构化表格 */
|
|
68
|
+
.resume-grid-table {
|
|
69
|
+
width: 100%;
|
|
70
|
+
border-collapse: collapse;
|
|
71
|
+
font-size: var(--resume-font-size-body);
|
|
72
|
+
border: 1px solid var(--resume-color-border);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.resume-grid-table td {
|
|
76
|
+
border: 1px solid var(--resume-color-border);
|
|
77
|
+
padding: var(--resume-cell-padding);
|
|
78
|
+
vertical-align: middle;
|
|
79
|
+
line-height: var(--resume-line-height-body);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.cell-label {
|
|
83
|
+
background-color: var(--resume-color-label-bg);
|
|
84
|
+
font-weight: 600;
|
|
85
|
+
color: var(--resume-color-secondary);
|
|
86
|
+
text-align: center;
|
|
87
|
+
width: 58pt;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.cell-value {
|
|
91
|
+
color: var(--resume-color-primary);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.cell-highlight-bg {
|
|
95
|
+
background-color: #eff6ff; /* Blue 50 */
|
|
96
|
+
color: var(--resume-color-accent);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.date-col {
|
|
100
|
+
width: 82pt;
|
|
101
|
+
font-size: var(--resume-font-size-meta);
|
|
102
|
+
color: var(--resume-color-muted);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.section-header-cell {
|
|
106
|
+
background-color: var(--resume-color-header-bg);
|
|
107
|
+
border-left: 3.5px solid var(--resume-color-accent) !important;
|
|
108
|
+
padding: 3.5pt 8pt;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.section-title {
|
|
112
|
+
font-size: 10pt;
|
|
113
|
+
font-weight: 700;
|
|
114
|
+
color: var(--resume-color-accent);
|
|
115
|
+
margin: 0;
|
|
116
|
+
display: flex;
|
|
117
|
+
align-items: center;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.section-icon {
|
|
121
|
+
color: var(--resume-color-accent);
|
|
122
|
+
font-size: 8pt;
|
|
123
|
+
margin-right: 4pt;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.cell-content {
|
|
127
|
+
color: var(--resume-color-secondary);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.exp-header {
|
|
131
|
+
margin-bottom: 2pt;
|
|
132
|
+
color: var(--resume-color-primary);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.exp-bullets {
|
|
136
|
+
margin-left: 12pt;
|
|
137
|
+
margin-top: 2pt;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.exp-bullets li {
|
|
141
|
+
margin-bottom: 2pt;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.project-desc {
|
|
145
|
+
font-size: 8.5pt;
|
|
146
|
+
color: var(--resume-color-secondary);
|
|
147
|
+
line-height: 1.38;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@media print {
|
|
151
|
+
body { background: transparent; padding: 0; }
|
|
152
|
+
.resume-page {
|
|
153
|
+
box-shadow: none;
|
|
154
|
+
margin: 0;
|
|
155
|
+
width: var(--resume-page-width);
|
|
156
|
+
min-height: var(--resume-page-min-height);
|
|
157
|
+
page-break-after: always;
|
|
158
|
+
page-break-inside: avoid;
|
|
159
|
+
}
|
|
160
|
+
@page {
|
|
161
|
+
size: A4 portrait;
|
|
162
|
+
margin: 0;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>候选人 - 结构化表格简历</title>
|
|
7
|
+
<link rel="stylesheet" href="style.css">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div class="resume-page" id="page-1">
|
|
11
|
+
<header class="resume-header">
|
|
12
|
+
<h1 class="resume-main-title">个人求职简历</h1>
|
|
13
|
+
<p class="resume-sub-title">PERSONAL RESUME</p>
|
|
14
|
+
</header>
|
|
15
|
+
|
|
16
|
+
<!-- 现代结构化表格 -->
|
|
17
|
+
<table class="resume-grid-table">
|
|
18
|
+
<!-- 求职意向高亮行 -->
|
|
19
|
+
<tr>
|
|
20
|
+
<td class="cell-label cell-highlight-bg">求职意向</td>
|
|
21
|
+
<td colspan="5" class="cell-value cell-highlight-bg"><strong>AI Agent 研发工程师 / 资深后端架构师</strong></td>
|
|
22
|
+
</tr>
|
|
23
|
+
|
|
24
|
+
<!-- 基本信息 6 列矩阵 -->
|
|
25
|
+
<tr>
|
|
26
|
+
<td class="cell-label">姓 名</td>
|
|
27
|
+
<td class="cell-value candidate-name">鹿小笙</td>
|
|
28
|
+
<td class="cell-label">出生年月</td>
|
|
29
|
+
<td class="cell-value">1995.06 (29岁)</td>
|
|
30
|
+
<td class="cell-label">政治面貌</td>
|
|
31
|
+
<td class="cell-value">中共党员</td>
|
|
32
|
+
</tr>
|
|
33
|
+
<tr>
|
|
34
|
+
<td class="cell-label">联系电话</td>
|
|
35
|
+
<td class="cell-value">138-0000-0000</td>
|
|
36
|
+
<td class="cell-label">电子邮箱</td>
|
|
37
|
+
<td class="cell-value">luxiaosheng@example.com</td>
|
|
38
|
+
<td class="cell-label">最高学历</td>
|
|
39
|
+
<td class="cell-value">硕士研究生</td>
|
|
40
|
+
</tr>
|
|
41
|
+
<tr>
|
|
42
|
+
<td class="cell-label">毕业院校</td>
|
|
43
|
+
<td class="cell-value">北京航空航天大学</td>
|
|
44
|
+
<td class="cell-label">所学专业</td>
|
|
45
|
+
<td class="cell-value">计算机科学与技术</td>
|
|
46
|
+
<td class="cell-label">求职城市</td>
|
|
47
|
+
<td class="cell-value">北京 / 远程</td>
|
|
48
|
+
</tr>
|
|
49
|
+
|
|
50
|
+
<!-- 专业技能模块 -->
|
|
51
|
+
<tr>
|
|
52
|
+
<td colspan="6" class="section-header-cell" id="skills">
|
|
53
|
+
<h2 class="section-title"><span class="section-icon">■</span> 专业技能</h2>
|
|
54
|
+
</td>
|
|
55
|
+
</tr>
|
|
56
|
+
<tr>
|
|
57
|
+
<td class="cell-label">AI / 大模型</td>
|
|
58
|
+
<td colspan="5" class="cell-content">
|
|
59
|
+
精通 RAG 知识检索、多 Agent 协作工作流 (LangGraph / LlamaIndex)、Prompt 优化与模型评测微调。
|
|
60
|
+
</td>
|
|
61
|
+
</tr>
|
|
62
|
+
<tr>
|
|
63
|
+
<td class="cell-label">后端工程</td>
|
|
64
|
+
<td colspan="5" class="cell-content">
|
|
65
|
+
熟练掌握 Python / Go / TypeScript,精通 FastAPI、微服务架构、Docker / K8s 与可观测性体系。
|
|
66
|
+
</td>
|
|
67
|
+
</tr>
|
|
68
|
+
|
|
69
|
+
<!-- 工作经历模块 -->
|
|
70
|
+
<tr>
|
|
71
|
+
<td colspan="6" class="section-header-cell" id="experience">
|
|
72
|
+
<h2 class="section-title"><span class="section-icon">■</span> 工作经历</h2>
|
|
73
|
+
</td>
|
|
74
|
+
</tr>
|
|
75
|
+
<tr>
|
|
76
|
+
<td class="cell-label date-col">2023.03 - 至今</td>
|
|
77
|
+
<td colspan="5" class="cell-content">
|
|
78
|
+
<div class="exp-header">
|
|
79
|
+
<strong>智元未来人工智能实验室</strong> · 资深 AI 应用工程师
|
|
80
|
+
</div>
|
|
81
|
+
<ul class="exp-bullets">
|
|
82
|
+
<li>主导研发企业级多 Agent 工作流系统,单日调度调用量超 <strong>500 万次</strong>,工作流成功率达 <strong>99.2%</strong>。</li>
|
|
83
|
+
<li>设计高吞吐多路召回 RAG 检索管线,问答匹配命中率提升 <strong>38%</strong>,端到端延迟压测低于 <strong>650ms</strong>。</li>
|
|
84
|
+
</ul>
|
|
85
|
+
</td>
|
|
86
|
+
</tr>
|
|
87
|
+
<tr>
|
|
88
|
+
<td class="cell-label date-col">2020.07 - 2023.02</td>
|
|
89
|
+
<td colspan="5" class="cell-content">
|
|
90
|
+
<div class="exp-header">
|
|
91
|
+
<strong>极光互联科技有限公司</strong> · 高级后端开发工程师
|
|
92
|
+
</div>
|
|
93
|
+
<ul class="exp-bullets">
|
|
94
|
+
<li>负责核心 API 网关重构,平稳支撑双十一 <strong>80,000 QPS</strong> 峰值,核心接口 P99 延迟降低 <strong>45%</strong>。</li>
|
|
95
|
+
<li>落地微服务链路追踪与自动化巡检探针,线上平均故障自愈恢复时间(MTTR)缩短 <strong>60%</strong>。</li>
|
|
96
|
+
</ul>
|
|
97
|
+
</td>
|
|
98
|
+
</tr>
|
|
99
|
+
|
|
100
|
+
<!-- 核心项目模块 -->
|
|
101
|
+
<tr>
|
|
102
|
+
<td colspan="6" class="section-header-cell" id="projects">
|
|
103
|
+
<h2 class="section-title"><span class="section-icon">■</span> 核心项目</h2>
|
|
104
|
+
</td>
|
|
105
|
+
</tr>
|
|
106
|
+
<tr>
|
|
107
|
+
<td class="cell-label date-col">2024.01 - 2024.08</td>
|
|
108
|
+
<td colspan="5" class="cell-content">
|
|
109
|
+
<div class="exp-header">
|
|
110
|
+
<strong>OpenAgent: 自适应代码审查与重构 Agent</strong> (GitHub 2,400+ Stars)
|
|
111
|
+
</div>
|
|
112
|
+
<p class="project-desc">
|
|
113
|
+
基于 AST 语义解析与 AST-Grep 上下文感知引擎,结合 LLM 实现工业级代码重构建议生成;设计 Prompt 动态剪枝算法,在保障重构精度的同时降低 42% 的 API Token 成本。
|
|
114
|
+
</p>
|
|
115
|
+
</td>
|
|
116
|
+
</tr>
|
|
117
|
+
|
|
118
|
+
<!-- 教育背景与荣誉 -->
|
|
119
|
+
<tr>
|
|
120
|
+
<td colspan="6" class="section-header-cell" id="education">
|
|
121
|
+
<h2 class="section-title"><span class="section-icon">■</span> 教育背景与荣誉</h2>
|
|
122
|
+
</td>
|
|
123
|
+
</tr>
|
|
124
|
+
<tr>
|
|
125
|
+
<td class="cell-label date-col">2017.09 - 2020.06</td>
|
|
126
|
+
<td colspan="5" class="cell-content">
|
|
127
|
+
<strong>北京航空航天大学</strong> · 计算机科学与技术 (硕士) · GPA: 3.8/4.0 · 国家奖学金 · CCF-B 论文发表
|
|
128
|
+
</td>
|
|
129
|
+
</tr>
|
|
130
|
+
</table>
|
|
131
|
+
</div>
|
|
132
|
+
</body>
|
|
133
|
+
</html>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Resume Universal HTML Contract & A4 Specification (标准通用结构与约束规范)
|
|
2
|
+
|
|
3
|
+
本文档定义所有简历 HTML 模板必须遵守的**通用 DOM 层次、A4 物理几何约束与数据字段标准**。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. A4 物理几何与打印分页约束
|
|
8
|
+
|
|
9
|
+
所有的简历模板根容器必须严格遵守标准的 A4 页面模型(210mm × 297mm):
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<!DOCTYPE html>
|
|
13
|
+
<html lang="zh-CN">
|
|
14
|
+
<head>
|
|
15
|
+
<meta charset="UTF-8">
|
|
16
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
17
|
+
<title>候选人姓名 - 目标岗位 简历</title>
|
|
18
|
+
<link rel="stylesheet" href="style.css">
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
21
|
+
<!-- 每一个 .resume-page 代表一页标准的 A4 页面 -->
|
|
22
|
+
<div class="resume-page" id="page-1">
|
|
23
|
+
<!-- 模板内部组件 -->
|
|
24
|
+
</div>
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 打印样式必须包含:
|
|
30
|
+
```css
|
|
31
|
+
@page {
|
|
32
|
+
size: A4 portrait;
|
|
33
|
+
margin: 0; /* 禁用打印机默认边距,完全由 .resume-page 的 padding 接管 */
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@media print {
|
|
37
|
+
body {
|
|
38
|
+
background: transparent;
|
|
39
|
+
padding: 0;
|
|
40
|
+
}
|
|
41
|
+
.resume-page {
|
|
42
|
+
box-shadow: none;
|
|
43
|
+
margin: 0;
|
|
44
|
+
width: 210mm;
|
|
45
|
+
min-height: 297mm;
|
|
46
|
+
page-break-after: always;
|
|
47
|
+
page-break-inside: avoid;
|
|
48
|
+
}
|
|
49
|
+
.avoid-break {
|
|
50
|
+
break-inside: avoid;
|
|
51
|
+
page-break-inside: avoid;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 2. 通用数据字段与语义化组件层级
|
|
59
|
+
|
|
60
|
+
所有模板(单栏、双栏、表格)必须使用以下标准语义化类名:
|
|
61
|
+
* **姓名**:`h1.candidate-name`
|
|
62
|
+
* **求职目标**:`p.job-target`
|
|
63
|
+
* **联系信息**:`ul.contact-list` 或 `div.contact-grid`
|
|
64
|
+
* **功能模块**:`section.resume-section`
|
|
65
|
+
* **模块标题**:`h2.section-title`
|
|
66
|
+
* **工作条目**:`div.experience-item`
|
|
67
|
+
* **项目条目**:`div.project-item`
|
|
68
|
+
* **技能容器**:`div.skills-container`
|
|
69
|
+
* **教育条目**:`div.education-item`
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Executive Modern Split Template (`executive`)
|
|
2
|
+
|
|
3
|
+
> **定位:面向技术总监、首席架构师、研发负责人及资深管理者的沉稳大气双栏模板。**
|
|
4
|
+
|
|
5
|
+
- **版式风格**:顶部深色 Banner + 下方 33:67 双栏 (Hero Banner + Executive Split)
|
|
6
|
+
- **视觉色系**:深空板岩灰 (`#1e293b`) + 沉稳松石绿 (`#0f766e`) + 科技天蓝 (`#38bdf8`)
|
|
7
|
+
- **ATS 评级**:Tier 1 (Optimal)
|
|
8
|
+
- **目标页数**:1~2 页
|
|
9
|
+
- **核心 Tokens**:
|
|
10
|
+
- `--resume-left-col-width`: `33%` (默认)
|
|
11
|
+
- `--resume-space-section`: `12pt` (默认)
|
|
12
|
+
- `--resume-space-item`: `9pt` (默认)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "executive",
|
|
3
|
+
"name": "Executive Modern Split",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"style": "two-column-split",
|
|
6
|
+
"roleCategory": "management-product",
|
|
7
|
+
"layout": {
|
|
8
|
+
"type": "two-column-split",
|
|
9
|
+
"targetPages": 1,
|
|
10
|
+
"maxPages": 2,
|
|
11
|
+
"leftRatio": "33:67",
|
|
12
|
+
"density": "balanced"
|
|
13
|
+
},
|
|
14
|
+
"visualStyle": {
|
|
15
|
+
"tone": "executive-formal",
|
|
16
|
+
"bannerBg": "#1e293b",
|
|
17
|
+
"accentColor": "#0f766e",
|
|
18
|
+
"fontFamily": "System Sans-Serif"
|
|
19
|
+
},
|
|
20
|
+
"atsScoreTier": "tier-1-optimal",
|
|
21
|
+
"supportedRoles": [
|
|
22
|
+
"architect",
|
|
23
|
+
"tech-director",
|
|
24
|
+
"product-manager",
|
|
25
|
+
"engineering-lead",
|
|
26
|
+
"cto"
|
|
27
|
+
],
|
|
28
|
+
"languages": ["zh-CN", "en-US"],
|
|
29
|
+
"customizableTokens": [
|
|
30
|
+
"--resume-font-size-body",
|
|
31
|
+
"--resume-space-section",
|
|
32
|
+
"--resume-space-item",
|
|
33
|
+
"--resume-left-col-width",
|
|
34
|
+
"--resume-color-accent",
|
|
35
|
+
"--resume-color-banner-bg"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* A4 绝对几何尺寸 */
|
|
3
|
+
--resume-page-width: 210mm;
|
|
4
|
+
--resume-page-min-height: 297mm;
|
|
5
|
+
|
|
6
|
+
/* 配色体系 */
|
|
7
|
+
--resume-color-banner-bg: #1e293b; /* Slate 800 */
|
|
8
|
+
--resume-color-banner-text: #f8fafc;
|
|
9
|
+
--resume-color-banner-muted: #94a3b8;
|
|
10
|
+
--resume-color-primary: #0f172a; /* Slate 900 */
|
|
11
|
+
--resume-color-secondary: #334155; /* Slate 700 */
|
|
12
|
+
--resume-color-muted: #64748b; /* Slate 500 */
|
|
13
|
+
--resume-color-accent: #0f766e; /* Teal 700 沉稳高管色 */
|
|
14
|
+
--resume-color-tag-bg: #f0fdfa; /* Teal 50 */
|
|
15
|
+
--resume-color-border: #e2e8f0;
|
|
16
|
+
|
|
17
|
+
/* 字阶系统 */
|
|
18
|
+
--resume-font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
|
19
|
+
--resume-font-size-name: 22pt;
|
|
20
|
+
--resume-font-size-title: 11pt;
|
|
21
|
+
--resume-font-size-body: 9.2pt;
|
|
22
|
+
--resume-font-size-meta: 8.5pt;
|
|
23
|
+
--resume-line-height-body: 1.45;
|
|
24
|
+
|
|
25
|
+
/* 间距 Tokens (Agent 自愈参数) */
|
|
26
|
+
--resume-space-section: 12pt;
|
|
27
|
+
--resume-space-item: 9pt;
|
|
28
|
+
--resume-space-bullet: 3pt;
|
|
29
|
+
--resume-left-col-width: 33%;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
33
|
+
|
|
34
|
+
body {
|
|
35
|
+
background-color: #e2e8f0;
|
|
36
|
+
font-family: var(--resume-font-body);
|
|
37
|
+
display: flex;
|
|
38
|
+
justify-content: center;
|
|
39
|
+
padding: 24px 0;
|
|
40
|
+
color: var(--resume-color-primary);
|
|
41
|
+
-webkit-font-smoothing: antialiased;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.resume-page {
|
|
45
|
+
width: var(--resume-page-width);
|
|
46
|
+
min-height: var(--resume-page-min-height);
|
|
47
|
+
background: #ffffff;
|
|
48
|
+
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.15), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
display: flex;
|
|
51
|
+
flex-direction: column;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* 顶部 Executive Hero Banner */
|
|
55
|
+
.executive-banner {
|
|
56
|
+
background-color: var(--resume-color-banner-bg);
|
|
57
|
+
color: var(--resume-color-banner-text);
|
|
58
|
+
padding: 12mm 16mm 10mm 16mm;
|
|
59
|
+
display: flex;
|
|
60
|
+
justify-content: space-between;
|
|
61
|
+
align-items: center;
|
|
62
|
+
border-bottom: 3.5px solid var(--resume-color-accent);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.banner-left {
|
|
66
|
+
flex: 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.candidate-name {
|
|
70
|
+
font-size: var(--resume-font-size-name);
|
|
71
|
+
font-weight: 800;
|
|
72
|
+
letter-spacing: 1px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.candidate-title {
|
|
76
|
+
font-size: var(--resume-font-size-title);
|
|
77
|
+
color: #38bdf8; /* Sky 400 */
|
|
78
|
+
font-weight: 600;
|
|
79
|
+
margin-top: 2pt;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.value-prop {
|
|
83
|
+
font-size: 8.5pt;
|
|
84
|
+
color: var(--resume-color-banner-muted);
|
|
85
|
+
margin-top: 4pt;
|
|
86
|
+
max-width: 480pt;
|
|
87
|
+
line-height: 1.4;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.banner-right {
|
|
91
|
+
display: flex;
|
|
92
|
+
flex-direction: column;
|
|
93
|
+
gap: 3.5pt;
|
|
94
|
+
font-size: 8pt;
|
|
95
|
+
color: var(--resume-color-banner-text);
|
|
96
|
+
background: rgba(255, 255, 255, 0.08);
|
|
97
|
+
padding: 6pt 10pt;
|
|
98
|
+
border-radius: 4pt;
|
|
99
|
+
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* 下方 3:7 双栏主体 */
|
|
103
|
+
.executive-body {
|
|
104
|
+
display: grid;
|
|
105
|
+
grid-template-columns: var(--resume-left-col-width) 1fr;
|
|
106
|
+
flex: 1;
|
|
107
|
+
padding: 12mm 16mm;
|
|
108
|
+
gap: 16pt;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.left-col {
|
|
112
|
+
border-right: 1px solid var(--resume-color-border);
|
|
113
|
+
padding-right: 14pt;
|
|
114
|
+
display: flex;
|
|
115
|
+
flex-direction: column;
|
|
116
|
+
gap: var(--resume-space-section);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.right-col {
|
|
120
|
+
display: flex;
|
|
121
|
+
flex-direction: column;
|
|
122
|
+
gap: var(--resume-space-section);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.sub-title, .main-title {
|
|
126
|
+
font-size: 11pt;
|
|
127
|
+
font-weight: 700;
|
|
128
|
+
color: var(--resume-color-accent);
|
|
129
|
+
border-bottom: 1.5px solid var(--resume-color-accent);
|
|
130
|
+
padding-bottom: 3pt;
|
|
131
|
+
margin-bottom: 6pt;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.comp-list {
|
|
135
|
+
list-style: none;
|
|
136
|
+
font-size: 8.5pt;
|
|
137
|
+
color: var(--resume-color-secondary);
|
|
138
|
+
line-height: 1.45;
|
|
139
|
+
display: flex;
|
|
140
|
+
flex-direction: column;
|
|
141
|
+
gap: 5pt;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.tag-cloud {
|
|
145
|
+
display: flex;
|
|
146
|
+
flex-wrap: wrap;
|
|
147
|
+
gap: 4pt;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.tag {
|
|
151
|
+
font-size: 8pt;
|
|
152
|
+
background: var(--resume-color-tag-bg);
|
|
153
|
+
color: var(--resume-color-accent);
|
|
154
|
+
padding: 2.5pt 6pt;
|
|
155
|
+
border-radius: 3pt;
|
|
156
|
+
border: 1px solid rgba(15, 118, 110, 0.2);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.edu-block {
|
|
160
|
+
font-size: 8.5pt;
|
|
161
|
+
color: var(--resume-color-secondary);
|
|
162
|
+
line-height: 1.4;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.edu-school {
|
|
166
|
+
font-weight: 700;
|
|
167
|
+
color: var(--resume-color-primary);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.milestone-item {
|
|
171
|
+
margin-bottom: var(--resume-space-item);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.item-header {
|
|
175
|
+
display: flex;
|
|
176
|
+
justify-content: space-between;
|
|
177
|
+
align-items: baseline;
|
|
178
|
+
margin-bottom: 3pt;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.header-left {
|
|
182
|
+
display: flex;
|
|
183
|
+
align-items: baseline;
|
|
184
|
+
gap: 6pt;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.org-name {
|
|
188
|
+
font-size: 10pt;
|
|
189
|
+
font-weight: 700;
|
|
190
|
+
color: var(--resume-color-primary);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.role-name {
|
|
194
|
+
font-size: 9pt;
|
|
195
|
+
font-weight: 600;
|
|
196
|
+
color: var(--resume-color-accent);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.date-range {
|
|
200
|
+
font-size: var(--resume-font-size-meta);
|
|
201
|
+
color: var(--resume-color-muted);
|
|
202
|
+
font-variant-numeric: tabular-nums;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.bullet-list {
|
|
206
|
+
margin-left: 14pt;
|
|
207
|
+
font-size: var(--resume-font-size-body);
|
|
208
|
+
color: var(--resume-color-secondary);
|
|
209
|
+
line-height: var(--resume-line-height-body);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.bullet-list li {
|
|
213
|
+
margin-bottom: var(--resume-space-bullet);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.bullet-list strong {
|
|
217
|
+
color: var(--resume-color-primary);
|
|
218
|
+
font-weight: 600;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
@media print {
|
|
222
|
+
body { background: transparent; padding: 0; }
|
|
223
|
+
.resume-page {
|
|
224
|
+
box-shadow: none;
|
|
225
|
+
margin: 0;
|
|
226
|
+
width: var(--resume-page-width);
|
|
227
|
+
min-height: var(--resume-page-min-height);
|
|
228
|
+
page-break-after: always;
|
|
229
|
+
page-break-inside: avoid;
|
|
230
|
+
}
|
|
231
|
+
@page {
|
|
232
|
+
size: A4 portrait;
|
|
233
|
+
margin: 0;
|
|
234
|
+
}
|
|
235
|
+
}
|