訓練記錄
使用 AI 代理建立
培訓出席登記後端

培訓出席登記後端範本
培訓出席、成績和證書

一個在 Back4app 上準備好的培訓出席登記後端,具有課程登記、考試成績和證書存儲。包括 ER 圖、數據字典、JSON 架構、API 遊樂場,以及一個AI 代理人提示以快速啟動。

培訓日誌重點

此模板為您提供一個培訓出席日誌後端,包含課程日誌、考試成績和證書存儲,讓協調者能將會議、結果及完成證明集中在一個地方。

  1. 課程日誌追蹤為每個 TrainingCourse 和 AttendanceLog 條目建模,讓授課教師能記錄誰參加了哪個會議。
  2. 考試成績捕獲將 ExamScore 值與連結的課程和學員指針一起存儲,以便快速查閱。
  3. 證書存儲將 CertificateStorage 檔案附加到正確的完成事件和學員檔案。

培訓出席登記後端概覽

監管機構期望培訓出席證據是持久的:足夠不可變以獲得信任,足夠靈活以隨著時間改善計劃。解決方案是操作性的,而不是激勵性的。在 Back4app 上建模 TrainingCourse、AttendanceLog、ExamScore 和 CertificateStorage,以使培訓出席控制運行:在實際工作發生的地方捕捉批准、證據和例外。該架構涵蓋用戶(用戶名、電子郵件、密碼)、培訓課程(課程代碼、標題、課程日期、講師)、出席登記(受訓者、培訓課程、狀態、簽到時間)、考試成績(受訓者、培訓課程、分數、及格)和證書存儲(受訓者、培訓課程、文件、發佈時間),並且已經設置了身份驗證和受控訪問。連接您首選的前端,並更快啟動。

最適合:

培訓出席系統課程登記儀表板考試成績追蹤工具證書存儲門戶操作和現場培訓團隊團隊選擇 BaaS 作為培訓產品

培訓出席:後端快照

培訓有助於出席,但無法補償跨越三種工具和四種命名慣例的數據。

中心突顯了 TrainingCourse、AttendanceLog 和 ExamScore,以便你可以將客戶堆疊與相同的實體、字段和關係進行比較。

核心訓練日誌特性

此中心中的每一個技術卡片都使用相同的培訓出勤後端架構,包括 TrainingCourse、AttendanceLog、ExamScore 和 CertificateStorage。

訓練課程管理

TrainingCourse 儲存課程代碼、標題、課程日期和講師。

出席記錄

AttendanceLog 捕捉受訓者、訓練課程、狀態和登記時間。

考試成績追蹤

ExamScore 連結受訓者、訓練課程、成績和通過情況。

證書存儲

CertificateStorage 保持新進員工、培訓課程、檔案和頒發時間。

為什麼使用 Back4app 構建你的培訓出席記錄後端?

Back4app 為你提供培訓課程、出席記錄、考試成績和證書存儲原語,以便協調者專注於會議交付,而不是後端管道。

  • 課程和出席記錄: TrainingCourse 和 AttendanceLog 類讓你可以按照 sessionDate、courseCode 和 checkedInAt 來跟踪出席情況。
  • 與訓練活動相關的分數: ExamScore 將每個分數與受訓者和訓練課程相關聯,確保合格/不合格的評審與課程記錄保持一致。
  • 具有實際檢索路徑的證書: CertificateStorage 持有發放時間和文件字段,確保完成證明與正確的訓練結果相連。

從一個後端合約在每個平台上運行訓練日誌、考試分數和證書儲存。

核心利益

一個培訓出勤後端,幫助團隊記錄會議、查看分數並存儲證書,設置工作量更少。

快速課程日誌推出

從 TrainingCourse 開始,而不是從頭創建會議表和關係。

出勤和分數可追溯性

將 AttendanceLog 和 ExamScore 條目鏈接到相同的新進員工和培訓課程欄位,以便進行清晰的跟進。

課程證書檢索

將證書儲存檔案與課程完成綁定,以便操作人員可以快速找到證明。

訓練數據的受控訪問

使用 ACL/CLP,使只有授權的員工可以更新出席記錄、考試成績或證書文件。

單一模型供現場和辦公室使用者

透過一個 API 合約共享 TrainingCourse、AttendanceLog、ExamScore 和 CertificateStorage,而不是使用單獨的工具。

AI 輔助的引導

使用一個結構化提示生成架構、權限和整合指導。

準備好啟動您的訓練出席記錄應用程式了嗎?

讓 Back4app AI 代理為您的訓練考勤後端搭建架構,並從一個提示生成課程日誌、考試成績和證書存儲。

免費開始 — 每月 50 個 AI 代理提示,無需信用卡

技術棧

此訓練考勤後端模板中包含一切。

前端
13+ 種技術
後端
Back4app
資料庫
MongoDB
身份驗證
內建身份驗證 + 會話
API
REST 和 GraphQL
即時
Live Queries

ER 圖

培訓出席後端架構的實體關係模型。

查看圖表來源
Mermaid
erDiagram
    Trainer ||--o{ TrainingCourse : "trainer"
    Trainer ||--o{ AttendanceLog : "markedBy"
    Trainer ||--o{ ExamScore : "recordedBy"
    Trainer ||--o{ Certificate : "issuedBy"
    TrainingCourse ||--o{ AttendanceLog : "course"
    TrainingCourse ||--o{ ExamScore : "course"
    TrainingCourse ||--o{ Certificate : "course"

    Trainer {
        String objectId PK
        String username
        String email
        String password
        String fullName
        String role
        Date createdAt
        Date updatedAt
    }

    TrainingCourse {
        String objectId PK
        String courseCode
        String title
        Date scheduledDate
        String location
        String trainerId FK
        Date createdAt
        Date updatedAt
    }

    AttendanceLog {
        String objectId PK
        String courseId FK
        String traineeName
        Date attendanceDate
        String status
        String notes
        String markedById FK
        Date createdAt
        Date updatedAt
    }

    ExamScore {
        String objectId PK
        String courseId FK
        String traineeName
        Date examDate
        Number score
        Boolean passed
        String recordedById FK
        Date createdAt
        Date updatedAt
    }

    Certificate {
        String objectId PK
        String courseId FK
        String traineeName
        String certificateNumber
        Date issueDate
        String fileUrl
        String issuedById FK
        Date createdAt
        Date updatedAt
    }

整合流程

認證、課程記錄、出席記錄、考試成績和證書存儲的典型運行流程。

查看圖表來源
Mermaid
sequenceDiagram
  participant User
  participant App as Training Attendance Log App
  participant Back4app as Back4app Cloud

  User->>App: Sign in as trainer or coordinator
  App->>Back4app: POST /login
  Back4app-->>App: Session token

  User->>App: Open today's training course list
  App->>Back4app: GET /classes/TrainingCourse?order=scheduledDate
  Back4app-->>App: TrainingCourse rows

  User->>App: Mark attendance in the course log
  App->>Back4app: POST /classes/AttendanceLog
  Back4app-->>App: AttendanceLog objectId

  User->>App: Save exam score and attach certificate file
  App->>Back4app: POST /classes/ExamScore
  App->>Back4app: POST /classes/Certificate
  Back4app-->>App: ExamScore and Certificate records

  App->>Back4app: Query live updates for course attendance
  Back4app-->>App: AttendanceLog changes

數據字典

培訓出勤架構中每個類的字段級參考。

字段類型描述必需
objectIdStringAuto-generated unique identifier自動
usernameStringTrainer login name
emailStringTrainer email address
passwordStringHashed password (write-only)
fullNameStringTrainer display name
roleStringAccess role for the training workspace
createdAtDateAuto-generated creation timestamp自動
updatedAtDateAuto-generated last-update timestamp自動

8 字段在 Trainer 中

安全性與權限

如何使用 ACL 和 CLP 策略來保護用戶、培訓課程、出席記錄、考試成績和證書存儲。

用戶帳戶邊界

只有用戶可以更新或刪除他們的個人資料;其他用戶無法修改身份字段。

課程和記錄的完整性

只有授權的工作人員可以創建或刪除 TrainingCourse、AttendanceLog、ExamScore 和 CertificateStorage 項目。

對培訓證據的範圍訪問

限制讀取,使經理、協調員或指定的受訓者僅能看到他們應該訪問的課程日誌和證書文件。

架構(JSON)

原始 JSON 架構定義,準備好複製到 Back4app 或作為實施參考。

JSON
{
  "classes": [
    {
      "className": "Trainer",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "username": {
          "type": "String",
          "required": true
        },
        "email": {
          "type": "String",
          "required": true
        },
        "password": {
          "type": "String",
          "required": true
        },
        "fullName": {
          "type": "String",
          "required": true
        },
        "role": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "TrainingCourse",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "courseCode": {
          "type": "String",
          "required": true
        },
        "title": {
          "type": "String",
          "required": true
        },
        "scheduledDate": {
          "type": "Date",
          "required": true
        },
        "location": {
          "type": "String",
          "required": true
        },
        "trainer": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Trainer"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "AttendanceLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "course": {
          "type": "Pointer",
          "required": true,
          "targetClass": "TrainingCourse"
        },
        "traineeName": {
          "type": "String",
          "required": true
        },
        "attendanceDate": {
          "type": "Date",
          "required": true
        },
        "status": {
          "type": "String",
          "required": true
        },
        "notes": {
          "type": "String",
          "required": false
        },
        "markedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Trainer"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "ExamScore",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "course": {
          "type": "Pointer",
          "required": true,
          "targetClass": "TrainingCourse"
        },
        "traineeName": {
          "type": "String",
          "required": true
        },
        "examDate": {
          "type": "Date",
          "required": true
        },
        "score": {
          "type": "Number",
          "required": true
        },
        "passed": {
          "type": "Boolean",
          "required": true
        },
        "recordedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Trainer"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Certificate",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "course": {
          "type": "Pointer",
          "required": true,
          "targetClass": "TrainingCourse"
        },
        "traineeName": {
          "type": "String",
          "required": true
        },
        "certificateNumber": {
          "type": "String",
          "required": true
        },
        "issueDate": {
          "type": "Date",
          "required": true
        },
        "fileUrl": {
          "type": "String",
          "required": true
        },
        "issuedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Trainer"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

使用 AI 代理建構

使用 Back4app AI 代理從此模板生成真正的訓練出席應用程序,包括前端、後端、驗證以及訓練課程、出席記錄、考試分數和證書存儲流程。

Back4app AI 代理
準備好建構
在 Back4app 上根據這個精確的架構和行為創建一個訓練出席記錄應用後端。

架構:
1. 用戶(使用 Back4app 內建):用戶名、電子郵件、密碼;objectId、createdAt、updatedAt(系統)。
2. 訓練課程:courseCode(字符串,必填)、標題(字符串,必填)、sessionDate(日期,必填)、講師(Pointer to User,必填);objectId、createdAt、updatedAt(系統)。
3. 出席記錄:學員(Pointer to User,必填)、訓練課程(Pointer to TrainingCourse,必填)、狀態(字符串,必填)、checkedInAt(日期);objectId、createdAt、updatedAt(系統)。
4. 考試分數:學員(Pointer to User,必填)、訓練課程(Pointer to TrainingCourse,必填)、分數(數字,必填)、通過(布爾值,必填);objectId、createdAt、updatedAt(系統)。
5. 證書存儲:學員(Pointer to User,必填)、訓練課程(Pointer to TrainingCourse,必填)、檔案(文件,必填)、issuedAt(日期,必填);objectId、createdAt、updatedAt(系統)。

安全性:
- 只有用戶才能更新/刪除其個人資料。只有授權的工作人員可以創建/刪除訓練記錄。使用雲代碼進行驗證。

驗證:
- 註冊、登錄、登出。

行為:
- 列出課程、創建出席記錄、提交考試分數和存儲證書。

交付:
- 包含架構、ACLs、CLPs 的 Back4app 應用;課程、出席記錄、考試分數和證書存儲的前端。

按下下面的按鈕以打開帶有此模板提示預填的代理。

這是沒有技術後綴的基本提示。您可以在後面調整生成的前端堆棧。

幾分鐘內部署每月 50 條免費提示無需信用卡

API 遊樂場

根據訓練出席架構測試 REST 和 GraphQL 端點。響應使用模擬數據,無需 Back4app 帳戶。

載入遊樂場…

使用與此模板相同的架構。

選擇您的技術

展開每個卡片以查看如何將 TrainingCourse、AttendanceLog 和 ExamScore 與您選擇的技術堆疊整合。

Flutter 訓練出席後端

React 訓練出席後端

React 原生 訓練出席後端

Next.js 訓練出席後端

JavaScript 訓練出席後端

Android 訓練出席後端

iOS 訓練出席後端

Vue 訓練出席後端

Angular 訓練出席後端

GraphQL 訓練出席後端

REST API 訓練出席後端

PHP 訓練出席後端

.NET 訓練出席後端

您每種技術能獲得的內容

每個堆疊使用相同的培訓出席後端架構和 API 合約。

統一的培訓日誌數據結構

使用一個架構管理培訓課程、出席日誌、考試成績和證書存儲。

操作團隊的課程日誌

跟蹤誰參加了每個會議以及哪些課程記錄仍然是開放的。

管理者的考試成績審核

按培訓課程和受訓者存儲成績,以便後續關聯到正確的會議。

結業證書存儲

將結業檔案附加到正確的課程成果和受訓者記錄。

培訓記錄框架比較

比較所有支援技術的設置速度、SDK 類型和 AI 支援。

框架設置時間訓練日誌優勢SDK 類型AI 支援
約 5 分鐘單一代碼庫用於移動和網絡上的培訓出勤。已類型化的 SDK完整
少於5分鐘快速的網頁儀表板,用於課程記錄和考試分數。字型 SDK完整
~3–7分鐘跨平台的移動應用程序,用於現場出勤登記。字型 SDK完整
快速(5分鐘)設置伺服器渲染的門戶網站,供培訓經理使用。字型 SDK完整
約3–5分鐘輕量級的網頁整合,用於訓練日志。輸入型SDK完整
約5分鐘本地Android應用程序,用於考勤檢查。輸入型SDK完整
少於5分鐘本地iOS應用程序,用於成績複查和證書。輸入型SDK完整
約3–7分鐘React用於訓練操作的網頁 UI。輸入的 SDK完整
快速(5 分鐘)設置協調員工作流程的企業網頁應用程式。輸入的 SDK完整
少於 2 分鐘靈活的 GraphQL API 用於訓練記錄。GraphQL API完整
快速(2 分鐘)設置REST API 整合以訓練考勤。REST API完整
約 3 分鐘伺服器端 PHP 後端用於訓練日誌。REST API完整
約 3–7 分鐘.NET 後端用於考勤、成績和證書。類型化 SDK完整

設置時間反映從項目初始化到首次使用此模板架構的 TrainingCourse 或 AttendanceLog 查詢的預期持續時間。

常見問題解答

關於使用此模板構建培訓出勤日誌後端的常見問題。

培訓出席負責人如何在政策漂移成為系統風險之前捕捉到它?
培訓出席計劃如何清晰地捕捉培訓、證明和糾正措施?
隨著組織的增長,收緊培訓出席權限的推薦路徑是什麼?
我該如何使用 Flutter 執行培訓課程和考勤記錄的查詢?
我該如何使用 Next.js Server Actions 管理培訓出席權限?
React Native 可以離線快取培訓數據嗎?
我該如何防止未經授權的證書訪問?
在 Android 上展示培訓記錄的最佳方法是什麼?
證書存儲流程是如何從頭到尾運作的?

受到全球開發者的信任

加入團隊,使用 Back4app 模板更快地發佈訓練考勤產品

G2 Users Love Us Badge

準備好建立您的訓練考勤日誌應用程式了嗎?

在幾分鐘內開始您的訓練日誌專案。不需要信用卡。

選擇技術