基本信息
- 专业:计算机科学与技术
- 学生姓名:王锐
- 学号:22121355
- 指导教师:许东
毕业论文(设计)题目
自助点餐小程序的设计与实现
毕业论文(设计)主要任务
本课题面向“自助点餐小程序”的完整业务闭环,主要任务包括:1)完成系统总体架构设计与关键业务模型抽象(门店/桌台/购物车/订单/菜品与规格/SKU 库存与价格等),实现服务端 REST API 与数据库设计;2)实现小程序端的扫码入桌、多人协同点餐、下单与订单查询等核心流程,并保证弱网可用性;3)实现 Web 管理端后台运营能力(分类/菜品/规格/SKU、桌台、订单、门店信息维护等),支撑门店日常运营;4)补齐鉴权与权限体系、工程化 CI/CD 与部署运维流程,形成可运行、可验证、可交付的系统,并同步产出技术文档与阶段性报告。
1.简述开题以来所做的具体工作和取得的进展或成果
开题以来,我以“先打通后台运营闭环,再完善前台点餐体验”的实施策略推进,围绕服务端、Web 管理端与小程序端三端协同逐步迭代。整体工作从业务建模与接口规范入手,随后落到关键功能实现、稳定性与可观测性增强,并在中期阶段补齐工程化交付能力与多租户(SaaS)架构,确保系统能够在真实环境中部署运行并持续迭代。
(1)服务端:核心业务模型与接口体系落地。项目服务端采用 Node.js + Express + TypeScript + TypeORM 的单体架构,并以 MySQL 作为主存储、Redis 作为缓存与会话/锁等基础设施。围绕点餐系统的核心概念建立了统一术语与数据模型:菜品(Good)、规格组与规格值(SpecGroup/SpecOption)、共享非库存规格组(SharedSpecGroup)、商品(SKU)及其库存/上下架状态、桌台(Table)与桌台购物车(TableCart)协同、订单(Order)及订单状态流转、退款(Refund)等。服务端提供了符合 RESTful 规范的 API(统一响应结构与错误码约定),并实现了覆盖“门店运营”高频场景的接口:分类/菜品/SKU 管理、桌台管理与二维码生成、订单管理与状态变更、门店导出/恢复等。与此同时,服务端集成 WebSocket 能力用于桌台多人协同点餐与管理端实时看板的数据推送,并通过心跳与重连策略增强弱网稳定性,降低“断连假在线”带来的状态不一致问题。
(2)鉴权与安全:双端身份模型与权限边界明确。为同时支持管理端与小程序端,本项目实现了 JWT 认证与 token version(gtv)全局失效机制,并对管理端引入 AdminScope 授权模型(SUPER_ADMIN / TENANT_ADMIN / STORE_ADMIN)与权限点(permission keys)校验。管理端接口强制显式携带上下文(X-Board/X-Tenant-Id/X-Store-Id),服务端在缺失或错配时返回明确的 400/403/404 错误,以防止跨租户/跨门店串数据。对小程序侧则结合桌台会话与 sessionToken 约束同桌访问边界,避免越权访问他人桌台与订单数据。在安全与合规方面,项目文档明确“敏感信息不出响应/不入日志”的原则,并将关键实现细节沉淀为可复用的技术文档,便于后续审计与维护。
(3)Web 管理端:后台运营闭环与多视角管理能力逐步完善。管理端采用 React + Material UI + TypeScript,使用 React Query 管理请求与缓存,结合路由守卫实现登录态与上下文校验。基础运营能力方面,已实现分类管理、菜品与规格管理(含共享非库存规格组)、SKU 管理、订单列表与详情、桌台列表与桌台会话相关操作、门店信息维护等功能,覆盖门店常用的“上架/改价/库存、查单/改状态、桌台清台/重置”等动作。中期阶段进一步引入多租户(SaaS)管理能力:平台级可管理租户/门店/用户并查看平台概览,租户级可管理本租户门店与共享基础数据并查看同步状态,门店级聚焦门店数据管理且对共享数据只读。为保证多视角切换的正确性,管理端实现了 AdminContextSwitcher 与上下文持久化,并在出现 token 刷新、上下文切换、弱网重连等复杂场景下修复了“菜单视角错配、自动跳转卡住、错误清缓存导致重拉”等问题,最终形成更稳定的交互链路。
(4)小程序端:扫码入桌与点餐核心链路实现,并持续优化体验。小程序端使用 Taro + React + TypeScript 实现,围绕扫码进入、桌台会话初始化、商品浏览与规格选择、购物车协同、提交订单、查看订单与历史订单等流程搭建页面与状态管理。项目对扫码参数解析做了容错增强,支持从多种 scene/path 形式提取桌台 ID;针对“二次扫码进入已占用桌台”的真实场景,增加占用提示、同桌在线人数/进行中订单判断,并在满足条件时支持重置会话后入桌。为提升流程连续性,在跳转完善资料等中断场景下增加点餐页上下文保存与恢复,减少用户重复操作。
(5)工程化与交付:CI/CD、部署脚本与质量保障体系建立。为使系统具备可交付能力,本项目搭建了 GitHub Actions 工作流,覆盖后端、Web 管理端与小程序端的 lint/test/build 验证,并在后端与管理端实现持续部署(后端容器镜像构建推送与 SSH 部署,管理端静态资源上传 COS 并支持 CDN 刷新)。针对线上事故风险,部署脚本增加 health check 超时失败与日志输出,避免“部署假成功”;并在 CI 中前置加入 TypeORM migrations 命名校验脚本,确保迁移文件命名问题能在合并前发现,不会延迟到部署环节造成服务中断。与此同时,项目持续维护与完善技术文档(服务端/管理端/小程序端/鉴权安全/多租户/接口规范/CI-CD),形成“代码—文档—测试”一致的可维护体系。
综上,开题以来已完成系统的核心业务闭环(后台运营 + 前台点餐)与关键基础设施(鉴权、WebSocket、工程化部署),并在中期阶段实现多租户架构与交付链路强化,项目已具备持续迭代与上线验证的条件。后续工作将进一步聚焦用户体验、性能与稳定性、边界场景完善、测试覆盖与论文写作材料整理。
2. 存在的主要问题及解决办法
目前主要问题集中在三类:一是复杂状态与上下文切换带来的稳定性风险(如 token 刷新、管理端视角切换、WS 重连导致数据错配);二是大操作(如全量导入/恢复、批量同步)引发的性能与超时问题;三是多端口径一致性(术语、权限、展示逻辑)需要持续收敛。解决办法包括:在前端与服务端统一“显式上下文 + 权限点校验”的硬约束;在关键链路增加兜底与可观测性(更明确的错误码、健康检查失败退出、必要的诊断日志);在 CI 中增加前置校验(迁移命名/格式/测试),并通过文档沉淀统一术语与实现口径,减少隐性假设与回归风险。
3.下一步的主要研究任务、具体设想与安排
下一步计划围绕“完善体验、增强稳定性、补齐论文材料”展开:1)继续完善小程序端界面和交互体验;2)优化服务端在全量导入/恢复、同步任务等场景下的性能与可观测性(必要时引入分段处理、进度反馈、后台任务化),并补齐更完整的运行监控与日志;3)强化权限与多租户边界测试,提升关键模块单元测试与端到端测试覆盖;4)整理并固化论文撰写所需的架构图、数据模型、关键算法/流程、实验与性能对比数据,完成中后期论文主体章节与答辩材料准备。
前阶段的收获和下阶段的打算
前阶段最大的收获是把点餐系统的“主干”跑通了:服务端接口和数据模型稳定,管理端能管菜品/订单/桌台,小程序能扫码入桌并完成点餐闭环,同时也把鉴权、多租户、CI/CD 和部署流程做到了可用、可维护。下阶段打算继续补齐前端交互体验等细节,重点优化导入恢复、同步与弱网场景的稳定性和性能,增加更多测试与监控,并把架构图、流程图和实验数据整理进论文。