iT邦幫忙

2025 iThome 鐵人賽

DAY 17
1
Odoo

一起認識 Odoo:開源 ERP 的另一種選擇系列 第 17

《沈如蘭的人才焦慮:用 Odoo eLearning 把知識留下來》|Day 17

  • 分享至 

  • xImage
  •  

🏁 開場:數位轉型的下一步,是人?

https://ithelp.ithome.com.tw/upload/images/20250916/20178346AjanCCN6zB.jpg
KPI 有了,行程也透明了。

效率終於提升,但大家的隱憂也跟著浮現:人才趕不上系統,怎麼辦?

沈如蘭盯著螢幕,突然冒出一句:

「數字跟行程,靠你們還能撐。可是真正的人才呢?」

會議室瞬間安靜下來。

  • 財務小王低聲說:「我們有在帶新人,可是新人一下就走。花這麼多時間,帳上根本看不到投資回報。」
  • 製造老張嘆氣:「產線訓練半天,結果人跑掉,東西還是卡在我這。光是機器的操作手冊就寫了一大疊,誰來都得重頭教。」
  • 業務德華抱怨:「業務新人進來,要從公司產品教到 CRM,教完也只會一半。搞得我還要替他們查客戶資料,重複做工。」
  • 採購阿美插話:「新人連供應商比價單上的 2% 貨款折扣怎麼算都不知道,還得我一次次重教。」
  • 倉庫小李搖頭:「倉管新人不會用 PDA 掃碼,單子老是漏掉,還要我加班補錄。」

沈如蘭冷冷地補一句:

「沒有系統,人才只是過客。公司要的,是留下來的知識。」


🔑 外部資源能不能解決?

祕書阿哲小心翼翼地開口:

「老闆,數位發展部有個 T-Cross 計畫,可以派年輕人來幫忙做數位轉型……」

沈如蘭皺眉,冷冷地打斷:

「那是給偏社會公益性質的組織。我們這種公司類型,不太適合。」

阿哲只好轉向另一個方向:

「那…勞動部有在職訓練補助,我們可以自己開內訓課程,政府會補助一部分費用。」

這時,人資芳芳翻了翻手上的資料,補充說:

「在職訓練補助確實能用,但要設計課程、送審計畫,還得有人管理學員名單。最後大部分會落在人資身上。」

她嘆了口氣:「我一個人力資源部門,就算申請下來,也不一定忙得過來。」

阿哲硬著頭皮再提:

「還有產業新尖兵,年輕人學完 AI 或數位技能後,可以媒合到我們公司。」

老張搖頭:「帶進來容易,留得住嗎?剛學會就跑掉,還不是我們虧。」

阿哲心裡嘆了口氣:

補助能帶來人,但知識還是會流失。


💡 Odoo eLearning:讓知識留下來

沈如蘭拍板:

「不管補助來多少人,都要有系統把 know-how 留住。」

於是,芳芳和阿哲開始在 Odoo ERP 裡建立 eLearning:

建立課程 (Course)

  • 模組:website_slides
  • 主題:新人必修課程、產線操作、CRM 使用流程、採購比價 SOP

課程內容 (Slides)

  • 上傳教學影片(YouTube 內嵌 / 自錄)
  • SOP PDF 文件
  • 小測驗(選擇題 / 是非題)

與 HR 模組串接

  • 新員工入職時,自動分派必修課程
  • 完成測驗 → hr.employee 更新「訓練完成」

🧩 自動分派課程(Automated Actions)

芳芳先在後台設定自動化動作,讓新人一建檔就會自動收到必修課程。

設定路徑:設定 → 技術 → 自動化 → 自動化動作

模型hr.employee

觸發:建立時(On Creation)

partner = record.user_id.partner_id
if not partner:
    return

# 用標籤鎖定課程(在課程加上 tag:Onboarding)
channels = env['slide.channel'].search([('tag_ids.name', 'in', ['Onboarding'])])

for ch in channels:
    exists = env['slide.channel.partner'].search_count([
        ('channel_id', '=', ch.id),
        ('partner_id', '=', partner.id),
    ])
    if not exists:
        env['slide.channel.partner'].create({
            'channel_id': ch.id,
            'partner_id': partner.id,
            'completion': 0,
        })

👉把「入職必修」課程加上標籤 Onboarding,之後只要維護標籤就能調整內容。


📌 HR 考核串接(訓練成果紀錄)

阿哲也在 hr.employee 模組中新增欄位,

讓新人通過測驗後能把成果紀錄下來,成為長久留存的知識:

class HrEmployee(models.Model):
    _inherit = 'hr.employee'

    training_completed = fields.Boolean(string="訓練完成", default=False)
    training_score = fields.Float(string="訓練分數")

    def update_training_status(self, course, score):
        self.training_completed = True
        self.training_score = score

        # 若系統有安裝 hr.appraisal(企業版模組),可同步建立績效紀錄
        if 'hr.appraisal' in self.env:
            self.env['hr.appraisal'].create({
                'employee_id': self.id,
                'date_close': fields.Date.today(),
                'note': f"完成課程 {course.name},得分 {score}",
            })

💡 預設會把結果寫入 hr.employee 的自訂欄位;如果公司是企業版、也裝了 hr.appraisal,還能額外寫入績效紀錄。


🧩 版本相容性備註

  • slide.channel.partnercompletion 欄位在 v16+ 是 0–100,舊版可能是布林。
  • hr.appraisal 是企業版模組,社群版可改用 mail.activity 或在 hr.employee 增加自訂欄位來記錄訓練結果。
  • 若要每天回寫完成率,可在「排程動作(Scheduled Actions)」寫每日檢查程式。

🔄 自動化流程圖

新人入職
   ↓
HR 建立員工檔案
   ↓
Odoo eLearning 指派必修課程
   ↓
新人登入 → 完成影片 / 文件學習
   ↓
小測驗 (選擇題 / 是非題)
   ↓
通過 → hr.employee 更新「訓練完成」(可選寫入績效)
未通過 → 自動退回課程,重修
   ↓
主管審核進度
   ↓
員工正式上線


📊 成效

過去

  • 新人訓練全靠師傅口頭帶,內容零散
  • 阿美、小李、老張每天被問同樣的問題
  • 芳芳光是追培訓進度,就累到沒時間做其它事

現在

  • 新人先修 eLearning,完成測驗才能進部門
  • SOP、案例變成數位教材,不會隨人流失
  • HR 後台自動生成完成率 + 分數報表,芳芳不用再人工統計

阿哲看著 Odoo 後台報表:

「新人平均熟悉系統的時間,從 3 個月縮短到 1 個月。」


🔧 延伸實作

本篇著重在核心流程設計,完整的生產環境還需考慮:

  • 課程權限分級管理(誰能建課 / 查閱報表)
  • 大檔案上傳效能優化(影片與教材)
  • 學習進度異常處理(錯誤補交 / 重修)

🎯 結語:人才靠補助,知識靠沉澱

政府補助能帶來人,但無法保證留下來。

Odoo eLearning + HR 考核,才是把知識和人才能力同時內建進公司的方法。

沈如蘭點點頭:

「補助是加速器,但系統才是基礎。新人跑了我不在乎,但知識不能跟著跑。

她看著後台課程的完成率報表,眉頭微皺:

要讓這套系統真正撐得起公司,也許該再多一點資源。

👉 下一回合,沈如蘭將開始思考:如何為這場變革找到支撐它的力量。


上一篇
《祕書阿哲被問爆!用 Odoo Calendar 擋下全公司的追問》|Day 16
下一篇
《補助不是魔法:用 Odoo 當 SIIR 計畫的藍圖》|Day 18
系列文
一起認識 Odoo:開源 ERP 的另一種選擇20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言