烟草合规日志
使用 AI 代理构建
烟草合规日志后台

烟草合规日志后台模板
年龄检查日志和商店审核追踪

在 Back4app 上的生产就绪 烟草合规日志后台,包含年龄检查日志、标识审核和税票追踪。包括 ER 图、数据字典、JSON 架构、API 游乐场,以及一个 人工智能代理 提示以快速设置。

合规日志关键要点

该模板为您提供了一个烟草合规日志后端,包含年龄检查日志、标识审计和税票跟踪,以便管理人员和现场工作人员可以在一个地方记录检查并审查结果。

  1. 与位置相关的年龄检查日志为每个年龄检查日志创建一个指向位置的指针,以便商店访问、员工检查和审查注释保持有序。
  2. 标识审计覆盖范围追踪每个地点的标识审计结果,包括所需的警告、位置和缺失标识问题。
  3. 税票验证记录税票详细信息,包括票据号码、产品类型和验证结果,以便进行审计准备的审查。
  4. 现场准备审核工作流程使用 Back4app 类和权限,以便协调员可以提交、审核和批准合规日志。

烟草合规日志后端概览

监管机构期望烟草合规日志证据是持久的:足够不可变以建立信任,足够灵活以便随时间改善程序。成本体现在回调和信用中。在 Back4app 上,位置、年龄检查日志、标识审核和税Stamp连接成一个连贯的烟草合规日志叙述,而不是一堆不相关的票据和文件。模式涵盖用户(用户名、电子邮件、密码)、位置(店名、地址、地区)、年龄检查日志(位置、店员姓名、客户出生年份、结果)、标识审核(位置、标识类型、位置、状态)和税Stamp(位置、邮票编号、产品类型、验证时间),并内置了身份验证和审核控制。连接您喜欢的前端,开始更早地记录检查。

最佳适用:

烟草合规仪表板年龄检查检查应用标识审核工具税票验证工作流程零售领域日志记录运营团队选择 BaaS 作为合规应用

烟草合规日志:后端快照

最好的烟草合规日志仪表板很无聊,因为底层实体是干净的——而不是因为有人在午夜处理了一个电子表格。

无论您是从 Flutter、React、Next.js 还是其他受支持的路径开始,期望相同的位置、年龄检查日志和标识审计。

核心烟草合规日志功能

本中心中的每个技术卡片使用相同的烟草合规日志架构,包括 Location、AgeCheckLog、SignageAudit 和 TaxStamp。

位置注册

位置类存储店名、地址、地区和状态。

年龄检查日志

年龄检查日志类存储店员姓名、顾客出生年份、结果和备注。

标牌审计

标牌审计类记录标牌类型、放置位置、状态和状态。

税票追踪

TaxStamp 类存储 stampNumber、productType、verifiedAt 和 verificationStatus。

为什么要使用 Back4app 构建您的烟草合规日志后端?

Back4app 为您提供合规日志原语,以便您的团队可以专注于检查和审查步骤,而不是基础设施和重复的 API 连接。

  • 位置中心的日志记录: Location 类将 AgeCheckLog、SignageAudit 和 TaxStamp 记录锚定到一个商店或地点。
  • AgeCheckLog 和 SignageAudit 工作流程: 创建带有结果、signType 和 placement 字段的条目,然后在不更改应用合同的情况下进行审核。
  • TaxStamp 验证支持: 在 TaxStamp 中存储 stampNumber、productType 和 verifiedAt,以便审计员可以稍后追踪检查历史。

将检查日志记录、签名审核和税票检查合并到每个客户端的一个后端合同中。

核心优势

一个烟草合规后端,帮助您记录检查,同时不丢失现场细节。

更快的商店检查设置

从 Location、AgeCheckLog、SignageAudit 和 TaxStamp 开始,而不是手动构建合规表。

清除审查记录

记录谁进入了日志,它所属的商店,以及为后期审计捕获的结果。

现场和管理人员可见性

让协调员从同一数据模型中审查年龄检查、标识问题和印章验证。

对合规日志的控制访问

使用 ACL/CLP,以便现场员工、主管和审计员只能看到他们应该处理的记录。

适用于每个设备的可重用 API

从一个 API 合约为移动检查员、内部仪表板和审查工具提供服务。

以提示驱动的项目启动

使用 AI Agent 提示生成合规应用程序结构,并加快实施速度。

准备好推出你的烟草合规日志应用了吗?

让 Back4app AI 代理构建你的烟草合规日志后端,并从一个提示生成年龄检查、标牌审核和税票流程。

免费开始 - 每月 50 个 AI 代理提示,无需信用卡

技术栈

此烟草合规日志后端模板中包含所有内容。

前端
13+ 技术
后端
Back4app
数据库
MongoDB
认证
内置认证 + 会话
API
REST 和 GraphQL
实时
Live Queries

烟草合规 ER 图

烟草合规日志后端架构的实体关系模型。

查看图表源
Mermaid
erDiagram
    User ||--o{ Location : "manager"
    User ||--o{ AgeCheckLog : "checkedBy"
    User ||--o{ SignageAudit : "auditedBy"
    User ||--o{ TaxStampInspection : "inspectedBy"
    Location ||--o{ AgeCheckLog : "location"
    Location ||--o{ SignageAudit : "location"
    Location ||--o{ TaxStampInspection : "location"

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

    Location {
        String objectId PK
        String storeName
        String storeCode
        String address
        String managerId FK
        Date createdAt
        Date updatedAt
    }

    AgeCheckLog {
        String objectId PK
        String locationId FK
        String checkedById FK
        Date checkDate
        String customerInitials
        Boolean dobVerified
        String idType
        String notes
        Date createdAt
        Date updatedAt
    }

    SignageAudit {
        String objectId PK
        String locationId FK
        String auditedById FK
        Date auditDate
        Boolean ageRestrictionSignPresent
        Boolean healthWarningSignPresent
        String photoUrl
        String finding
        Date createdAt
        Date updatedAt
    }

    TaxStampInspection {
        String objectId PK
        String locationId FK
        String inspectedById FK
        Date inspectionDate
        String productBrand
        String stampSerial
        Boolean stampMatched
        String issueNotes
        Date createdAt
        Date updatedAt
    }

合规日志集成流程

典型运行流程,包括认证、位置查找、年龄检查日志、标识审计和税票验证。

查看图表源
Mermaid
sequenceDiagram
  participant User
  participant App as Tobacco Compliance Log App
  participant Back4app as Back4app Cloud

  User->>App: Sign in
  App->>Back4app: POST /login
  Back4app-->>App: Session token

  User->>App: Open location queue
  App->>Back4app: GET /classes/Location?include=manager
  Back4app-->>App: Locations and managers

  User->>App: Add age check log
  App->>Back4app: POST /classes/AgeCheckLog
  Back4app-->>App: AgeCheckLog objectId

  User->>App: Submit signage audit
  App->>Back4app: POST /classes/SignageAudit
  Back4app-->>App: SignageAudit objectId

  User->>App: Review tax stamp inspection
  App->>Back4app: GET /classes/TaxStampInspection?order=-inspectionDate
  Back4app-->>App: Inspection history

数据字典

烟草合规日志架构中每个类的完整字段级参考。

字段类型描述必填
objectIdStringAuto-generated unique identifier自动
usernameStringUser login name
emailStringUser email address
passwordStringHashed password (write-only)
roleStringUser role such as manager, coordinator, or fieldStaff
createdAtDateAuto-generated creation timestamp自动
updatedAtDateAuto-generated last-update timestamp自动

7 字段在 User 中

安全与权限

ACL 和 CLP 策略如何保护年龄检查日志、标识审核和税务印章记录。

角色限制字段输入

现场工作人员可以创建 AgeCheckLog 和 SignageAudit 条目,但审批或删除仅限于主管。

位置范围可见性

用户只能查看属于其地区或指定路线的位置记录和相关日志。

审计跟踪保护

使用 Cloud Code 验证,以便 stampNumber、result 和 verificationStatus 的更改保持受控和可追溯。

架构 (JSON)

准备好可以复制到 Back4app 的原始 JSON 架构定义或用作实施参考。

JSON
{
  "classes": [
    {
      "className": "User",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "username": {
          "type": "String",
          "required": true
        },
        "email": {
          "type": "String",
          "required": true
        },
        "password": {
          "type": "String",
          "required": true
        },
        "role": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Location",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "storeName": {
          "type": "String",
          "required": true
        },
        "storeCode": {
          "type": "String",
          "required": true
        },
        "address": {
          "type": "String",
          "required": true
        },
        "manager": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "AgeCheckLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "location": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Location"
        },
        "checkedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "checkDate": {
          "type": "Date",
          "required": true
        },
        "customerInitials": {
          "type": "String",
          "required": false
        },
        "dobVerified": {
          "type": "Boolean",
          "required": true
        },
        "idType": {
          "type": "String",
          "required": true
        },
        "notes": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "SignageAudit",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "location": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Location"
        },
        "auditedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "auditDate": {
          "type": "Date",
          "required": true
        },
        "ageRestrictionSignPresent": {
          "type": "Boolean",
          "required": true
        },
        "healthWarningSignPresent": {
          "type": "Boolean",
          "required": true
        },
        "photoUrl": {
          "type": "String",
          "required": false
        },
        "finding": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "TaxStampInspection",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "location": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Location"
        },
        "inspectedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "inspectionDate": {
          "type": "Date",
          "required": true
        },
        "productBrand": {
          "type": "String",
          "required": true
        },
        "stampSerial": {
          "type": "String",
          "required": true
        },
        "stampMatched": {
          "type": "Boolean",
          "required": true
        },
        "issueNotes": {
          "type": "String",
          "required": false
        },
        "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(系统)。

安全性:
- 只有指定的现场用户可以为其位置创建日志。监督者可以审核和批准。使用云代码进行验证。

身份验证:
- 注册、登录、注销。

行为:
- 列出位置、创建年龄检查日志、提交标识审核和验证税票。

交付:
- Back4app 应用程序,具有架构、ACL、CLP;面向位置、年龄检查、标识审核和税票验证的前端。

按下面的按钮打开代理,并预填充此模板提示。

这是没有技术后缀的基础提示。您可以在之后调整生成的前端堆栈。

几分钟内部署每月50个免费提示无需信用卡

API游乐场

在烟草合规日志模式下尝试REST和GraphQL端点。响应使用模拟数据,无需Back4app账户。

加载操作区中…

使用与此模板相同的模式。

选择您的技术

展开每个卡片以查看如何将位置、年龄检查日志和标识审计与您选择的技术栈集成。

Flutter 烟草合规日志后端

React 烟草合规日志后端

React 原生 烟草合规日志后端

Next.js 烟草合规日志后端

JavaScript 烟草合规日志后端

Android 烟草合规日志后端

iOS 烟草合规日志后端

Vue 烟草合规日志后端

Angular 烟草合规日志后端

GraphQL 烟草合规日志后端

REST API 烟草合规日志后端

PHP 烟草合规日志后端

.NET 烟草合规日志后端

您能获得的每项技术

每个堆栈使用相同的烟草合规日志架构和API合同。

统一的合规日志结构

使用一个架构管理地点、年龄检查日志、标牌审计和税务印章记录。

现场团队的年龄检查日志

在商店级别捕获clerkName、customerBirthYear和结果。

标牌审计跟踪

记录每次审计访问的signType、placement和condition。

税务印章验证可追溯性

存储 stampNumber 和 verificationStatus 以便后续审核。

用于合规应用的 REST/GraphQL API

从同一后端集成仪表板、移动现场工具和主管视图。

可扩展的审核工作流程

在不更换核心日志模型的情况下添加审批、问题说明或升级步骤。

烟草合规框架比较

比较所有支持技术的设置速度、SDK 风格和人工智能支持。

框架设置时间合规日志的好处SDK 类型人工智能支持
大约 5 分钟用于移动和网络的现场检查人员的单一代码库。类型化 SDK完整
少于 5 分钟为合规经理提供快速网页仪表板。类型化 SDK完整
约 3-7 分钟跨平台移动应用程序用于门店访问。类型化 SDK完整
快速(5分钟)设置为评审团队提供的服务器渲染网页应用。类型安全SDK完整
约3-5分钟轻量级浏览器集成用于现场日志记录。类型安全SDK完整
大约5分钟用于门店检查的原生Android应用程序。类型安全SDK完整
少于5分钟用于合规检查的原生iPhone应用程序。类型化SDK完整
约3-7分钟React区报告的网络用户界面。类型化SDK完整
快速(5分钟)设置用于审计和批准的企业Web应用程序。类型化SDK完整
少于2分钟灵活的 GraphQL API 以链接合规记录。GraphQL API完整
快速(2分钟)设置REST API 集成用于检查工具。REST API完整
约3分钟服务端 PHP 后端用于合规门户。REST API完整
约3-7分钟.NET 后端审计工作流程。类型化 SDK完整

设置时间反映了从项目启动到使用此模板模式进行第一次位置或年龄检查日志查询的预期持续时间。

常见问题解答

有关如何使用此模板构建烟草合规日志后端的常见问题。

烟草合规日志团队如何在不重建电子邮件线程的情况下证明批准和例外?
位置注册、年龄检查日志、标志审核之间的关系如何使烟草合规日志审核更容易叙述?
在组织增长时,推荐的收紧烟草合规日志权限的路径是什么?
我如何使用 Flutter 查询地点和年龄检查日志?
我如何使用 Next.js Server Actions 管理烟草合规日志访问?
React 原生可以离线缓存税票记录吗?
如何防止未经授权的日志编辑?
在 Android 上显示合规日志的最佳方法是什么?

全球开发者信赖

使用 Back4app 模板,加入团队更快地发布合规日志产品

G2 Users Love Us Badge

准备好构建您的烟草合规日志应用程序了吗?

在几分钟内开始您的烟草合规项目。无需信用卡。

选择技术