水乡智能擦除
项目概览
水乡智能擦除曾是一套面向视频处理场景的 Web 应用。项目从早期单页上传工具升级为带登录鉴权、余额计费、管理员后台和浏览器直传 OSS 的小型工具系统,串联了用户上传、费用预扣、云端处理、结果轮询和下载交付流程。
在核心服务运行期间,用户登录后可以选择处理组别、擦除模板和视频文件。原系统当时会读取视频时长并按计费规则预估费用;上传前检查余额并冻结预扣金额,上传成功后确认扣费,随后轮询云端处理结果并返回临时下载链接。
项目介绍视频口径
这段视频可以按 60-90 秒讲:
- 先展示登录页,说明这是一个带账户体系的视频处理工具。
- 通过保留的上传页讲解余额、视频时长读取、费用预估和上传确认,不执行真实处理。
- 结合界面解释原有“预扣冻结 -> OSS 直传 -> 确认扣费 -> 轮询结果”流程。
- 通过管理员后台界面讲解原有用户管理、充值、启停账号和流水能力。
- 最后说明它曾从单个上传页面发展为具备内部运营能力的小型工具系统。
我的工作
- 使用 Express 搭建带认证的 Web 服务,负责登录、登出、Token 校验、静态页面托管和接口路由。
- 使用 bcrypt 存储密码哈希,使用 JWT + HttpOnly Cookie 管理登录状态,并接入登录限速降低暴力尝试风险。
- 设计用户余额与计费体系,支持余额查询、费用预估、预扣冻结、确认扣费、失败解冻和消费流水记录。
- 在上传页实现视频时长检测、费用预估、余额不足提示、上传确认、扣费后余额展示等交互。
- 接入阿里云 OSS Browser SDK,通过 STS 临时凭证完成浏览器端大视频直传,减少业务服务器的大文件中转压力。
- 串联云端处理结果查询接口,服务运行期间曾支持上传后自动轮询与手动按文件名查询处理状态。
- 开发管理员后台,原后台曾支持用户列表、统计概览、充值、禁用/启用、删除用户、重置密码和用户流水查看。
- 整理服务器部署手册,覆盖 Node 依赖安装、服务启动、PM2 后台运行、端口放行和常见问题处理。
具体效果呈现
- 项目从“单页上传”升级为“可登录、可计费、可管理”的内部工具系统。
- 大视频文件曾采用浏览器直传 OSS,避免业务服务器承担大文件传输压力。
- 预扣冻结机制用于降低上传失败导致误扣费的风险。
- 原管理后台覆盖用户、余额、充值、流水和账号状态,适合内部工具或小规模试运行。
- 原系统保留了手动查询入口,用于降低异步视频处理任务中的等待不确定性。
原系统技术栈
- 后端:Node.js、Express、cookie-parser、express-rate-limit
- 认证:bcryptjs、jsonwebtoken、HttpOnly Cookie
- 数据:JSON 文件持久化用户、余额、冻结金额、消费统计和交易流水
- 前端:原生 HTML、CSS、JavaScript
- 云服务:阿里云 OSS Browser SDK、STS 临时凭证、临时下载链接
- 运维:npm scripts、PM2 部署、服务器操作手册
若重新启用
- 需要先将 JSON 文件存储迁移到数据库,补充任务表、审计日志和权限边界。
- 需要把云函数地址、Bucket、密钥和配置迁移到环境变量与隔离环境。
- 需要增加任务 ID、处理队列和失败重试,提升异步视频处理的可观测性。
- 重新启用核心服务后,需要再次核验公开账号、数据范围和演示说明。