培训日志
与 AI 代理一起构建
培训考勤日志后端

培训考勤日志后端模板
培训考勤、成绩和证书

在 Back4app 上的一个生产就绪的 培训考勤日志后端,包含课程日志、考试成绩和证书存储。包括 ER 图、数据字典、JSON 模式、API 游乐场,以及一个 AI Agent 提示以快速启动。

培训日志要点

此模板为您提供了一个培训考勤日志后端,其中包括课程日志、考试成绩和证书存储,便于协调员将会议、结果和完成证明集中在一个地方。

  1. 课程日志跟踪为每个 TrainingCourse 和 AttendanceLog 条目建模,以便讲师记录谁参加了哪个会议。
  2. 考试成绩捕获存储带有链接课程和学员指针的 ExamScore 值,以便快速查看。
  3. 证书存储确保将 CertificateStorage 文件附加到正确的完成事件和学员档案。

培训出勤记录后台一览

监管机构期望培训出勤证据是持久的:足够不可变以建立信任,足够灵活以便随着时间改善项目。解决方案是操作性的,而非激励性的。基于 Back4app 建模 TrainingCourse、AttendanceLog、ExamScore 和 CertificateStorage 以使培训出勤控制具有操作性:在实际工作发生的地方记录批准、证据和例外情况。该架构涵盖用户(用户名、电子邮件、密码)、培训课程(课程代码、标题、课程日期、讲师)、出勤日志(学员、培训课程、状态、签到时间)、考试成绩(学员、培训课程、分数、是否通过)和证书存储(学员、培训课程、文件、颁发日期),并已具备身份验证和受控访问功能。连接您首选的前端,并加快上线速度。

最佳适用:

培训出勤系统课程日志仪表板考试成绩跟踪工具证书存储门户运营和现场培训团队团队选择 BaaS 作为培训产品

培训出席情况:后端快照

培训有助于提高出席率,但无法弥补分散在三个工具和四种命名约定之间的数据。

中心突出显示 TrainingCourse、AttendanceLog 和 ExamScore,以便您可以将客户端栈与相同的实体、字段和关系进行比较。

核心培训日志功能

该中心的每张技术卡都使用相同的培训出勤后端模式,包括 TrainingCourse、AttendanceLog、ExamScore 和 CertificateStorage。

培训课程管理

TrainingCourse存储courseCode、标题、sessionDate和讲师。

出席记录

AttendanceLog 捕获受训者、培训课程、状态和签到时间。

考试成绩跟踪

ExamScore 关联受训者、培训课程、成绩和是否通过。

证书存储

CertificateStorage 保存学员、培训课程、文件和发放时间。

为什么要使用 Back4app 搭建您的培训出席记录后端?

Back4app 为您提供培训课程、出勤记录、考试成绩和证书存储的基本组件,以便协调员可以专注于会议的交付,而不是后端的管道。

  • 课程和出席记录: TrainingCourse 和 AttendanceLog 类允许您按 sessionDate、courseCode 和 checkedInAt 跟踪出席情况。
  • 与培训事件相关的分数: ExamScore将每个分数与受训者和培训课程链接,使通过/未通过审核与课程记录保持一致。
  • 具有真实检索路径的证书: CertificateStorage保存issuedAt和文件字段,以确保完成证明与正确的培训结果保持相关。

从一个后端合同跨每个平台运行培训日志、考试分数和证书存储。

核心优势

一个培训出勤后端,帮助团队记录会议、审查分数并存储证书,减少设置工作。

快速课程日志发布

从 TrainingCourse 开始,而不是从头创建会话表和关系。

出勤和分数可追溯性

将 AttendanceLog 和 ExamScore 条目链接到相同的学员和 trainingCourse 字段,以便进行明确的后续跟进。

通过课程获取证书

保持与课程完成相关的 CertificateStorage 文件,以便运营人员能够快速找到证明。

受控的培训数据访问

使用 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)

准备好复制到 Back4app 或用作实施参考的原始 JSON 模式定义。

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. 培训课程:课程代码(字符串,必填),标题(字符串,必填),课程日期(日期,必填),讲师(指向用户的指针,必填);objectId,createdAt,updatedAt(系统)。
3. 考勤记录:受训者(指向用户的指针,必填),培训课程(指向培训课程的指针,必填),状态(字符串,必填),签到时间(日期);objectId,createdAt,updatedAt(系统)。
4. 考试成绩:受训者(指向用户的指针,必填),培训课程(指向培训课程的指针,必填),分数(数字,必填),通过(布尔值,必填);objectId,createdAt,updatedAt(系统)。
5. 证书存储:受训者(指向用户的指针,必填),培训课程(指向培训课程的指针,必填),文件(文件,必填),发放时间(日期,必填);objectId,createdAt,updatedAt(系统)。

安全性:
- 只有用户可以更新/删除他们的个人资料。只有授权员工可以创建/删除培训记录。使用云代码进行验证。

身份验证:
- 注册,登录,登出。

行为:
- 列出课程,创建考勤记录,提交考试成绩,存储证书。

交付:
- 带有模式、ACL、CLP 的 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网页用户界面。输入的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

准备好构建您的培训出勤日志应用吗?

在几分钟内开始您的训练日志项目。无需信用卡。

选择技术