先说结论
Odoo 员工成长档案里,“经历”“课程”“技能等级”不是一回事。
/home/ubuntu/odoo-temp/addons/hr_skills/models/hr_resume_line.py 以及相关 skill 模型说明,官方刻意把这几层拆开:
- resume line:做过什么、学过什么、何时开始何时结束
- course/external URL/certificate:这段经历有没有外部证据
- skill / skill level:在某项能力上达到什么可比较等级
所以它真正要表达的是:
履历负责叙述,技能负责评价,证据负责支撑。三者不能混成一条记录。
第一层:resume line 管的是时间线,不是能力分数
hr.resume.line 有这些关键字段:
namedate_startdate_enddescriptionline_type_idcourse_type
这些字段组合起来,很明显是一个“经历片段”模型。
它回答的是:
- 这段经历叫什么
- 发生在什么时候
- 属于哪种经历类型
- 可以补什么描述
它不适合直接承担“这个人 SQL 是 3 级、Python 是 4 级”这种能力对比语义。
第二层:为什么课程和外部链接要单独建证据面
external_url、certificate_file、certificate_filename 都挂在 resume line 上,特别是 course_type = external 时还会自动处理链接名称和颜色。
这说明 Odoo 认定课程类经历常常需要:
- 外部学习平台链接
- 证书文件
- 可被审核的佐证材料
这和 skill level 完全不是同一件事。
- 你上过一门课,不等于熟练掌握
- 你有证书,也不一定等于现场能胜任
- 但这些证据对招聘、内部流动、培训盘点仍然有价值
第三层:为什么 description 和 properties 更适合叙述,不适合排名
resume line 上既有 HTML description,也有可扩展 resume_line_properties。
这意味着它天生适合承载:
- 这段项目/课程做了什么
- 上下文是什么
- 有哪些细节想补充
但这类字段很难用于横向比较员工能力,因为:
- 文案风格差异太大
- 颗粒度不统一
- 无法稳定做筛选和排序
所以它适合“叙述型事实”,不适合“对比型能力”。
第四层:技能等级为什么必须跟履历分开
技能等级关注的是:
- 某种技能类型
- 当前掌握水平
- 是否满足岗位要求
- 能否做人才盘点和匹配
而履历线关注的是:
- 某段经历是否发生过
- 发生在哪个时间区间
- 是否有证据
一旦混写,常见问题就来了:
- 培训经历被误当成能力已达标
- 做过一次项目被误当成长期熟练
- 技能盘点变成一堆难以比较的叙述文本
第五层:为什么 date_start <= date_end 这种约束很重要
hr.resume.line 对日期顺序有明确约束。
这说明官方把它当作时间线资产,而不是随便填的备注块。
一旦时间线乱了,后面很多分析都不成立:
- 培训先后顺序
- 任职经历阶段
- 学习路径复盘
- 简历展示逻辑
这再次说明 resume line 的本质是“可排序的经历片段”。
第六层:更合理的员工成长档案思路
我更推荐这样分:
- resume line:记录经历与课程
- 证书/链接:作为证据附件
- skill line:记录当前能力等级
- 岗位技能要求:单独维护匹配标准
这样以后你才能同时回答四个不同问题:
- 这个人做过什么?
- 这个人学过什么?
- 这个人现在会到什么程度?
- 这个人是否匹配某岗位?
最容易踩的 4 个坑
1)把课程经历直接等同于技能等级
上过课不等于会用。
2)把技能盘点写成长篇叙述
后续几乎没法比较。
3)不给经历留证据字段
培训记录会很快失真。
4)忽视时间线约束
成长路径就会变乱。
排错/建模顺序
- 先判断这条信息是“经历”还是“能力”
- 若是经历,放 resume line
- 若是课程,再补外链和证书
- 若是能力评价,放 skill level
- 最后再看是否要映射到岗位技能要求
最后一句话
Odoo 把履历、证据、技能等级拆开,不是为了多建几张表,而是为了让“做过”“学过”“会做”这三件事不互相冒充。员工成长档案一旦混写,后面的人才盘点几乎一定失真。
DISCUSSION
评论区