1. 目的与概述
Teamster web应用程序旨在管理促销活动并简化加密货币交易所Coinstore的工作流程。该应用程序服务于三种类型的用户: 管理员、社区经理(CM)和Teamster(工人)。Teamster在社交媒体上推广活动,提交帖子链接并接受评估,而管理员和CM则管理和评估提交的内容。该应用程序自动化了提交、验证和性能评估等关键流程,减少了手动操作和错误。
2. 功能要求
该应用程序支持以下核心功能:
- 用户身份验证和授权: 管理员、CM 和 Teamsters 可以登录、重置密码和修改个人信息。
- 活动管理: 管理员可以创建和管理常规、活动和特别促销活动。每个促销活动都包含标题、描述、横幅和截止日期。
- 社媒链接提交: Teamsters 根据促销活动提交社交媒体帖子链接。他们每天最多可以提交两篇帖子,间隔12小时。.
- 自动抓取: 管理员可以使用内置的抓取工具抓取社交媒体帖子的点赞、评论和浏览量。
- 评价: CM通过将帖子标记为有效或无效并分配绩效分数来评估Teamster提交的内容。
- 报告和付款: 管理员可以将Teamster绩效数据导出到Excel以用于工资单。
3.非功能性需求
- 演出: 该系统必须支持多达1000个并发用户,所有主要操作的目标响应时间不得超过500毫秒。
- 可扩展性: 由于应用程序遵循单体架构,它支持垂直扩展以处理增加的负载。
- 安全: 应用程序必须通过严格的输入验证、bcrypt密码哈希和HTTPS加密来保护用户数据。
4. 系统架构
Teamster遵循单体架构,具有用于用户管理、促销、提交和抓取的紧密集成组件。该系统主机在DigitalOcean Linux服务器上,Caddy作为负载平衡和缓存的反向代理。
- 前端: HTML、CSS(PicoCSS框架)和JavaScript。
- 后端: 用Go编写,利用REST路由、中间件、作业调度和WebSockets的几个包。
- 数据库: PostgreSQL存储用户、促销和提交数据。
- 中间件:
justinas/alice
用于中间件链管理。
gorilla/websocket
用于实时抓取更新。
5. 数据流和模型
用户登录和权限: 登录后,用户将根据其角色(管理员、CM或Teamster)被定向到仪表板。
- 管理员: 管理促销、用户和抓取操作。
- CM: 查看并评估 Teamster 的帖子。
- Teamster: 提交社交媒体帖子链接。
数据提交和抓取:
- Teamsters 提交帖子链接,这些链接存储在促销表中。
- 抓取工具从社交媒体平台获取帖子绩效数据(点赞、评论、浏览量)。
- 抓取的数据被存储起来,CM 可以对其进行审查和评估。
关键数据表:
- users: 存储用户信息(凭据、角色)。
- promotions: 跟踪管理员创建的促销/活动。
- submissions: 存储来自Teamster的帖子链接和性能数据。
- evaluations: 记录CM对每个帖子的验证标记。
6. 技术栈
- 后端: Go (和 httprouter, gocron, gorilla/websocket)
- 前端: HTML, CSS (PicoCSS), JavaScript.
- 数据库: PostgreSQL用于关系数据存储。
- 服务器和代理: DigitalOcean用于主机,Caddy用于反向代理和负载平衡。
- 安全: HTTPS 用于加密通信, CSRF 象征, bcrypt 用于密码哈希处理以及基于角色的访问控制 (RBAC)。
7. API和端点
系统为所有操作提供REST API:
- 用户管理API: 处理用户登录、密码重置和基于角色的访问控制。
- 促销管理 API: 允许管理员创建、更新和管理促销活动。
- 提交 API: Teamsters用来提交帖子链接。
- 抓取API: 管理员使用API凭据从Twitter等社交媒体平台上抓取帖子性能数据(点赞、评论、浏览量)。
8. 安全注意事项
- 密码保护: 密码使用bcrypt进行哈希运算,以确保安全存储。
- 会话安全: 安全会话管理使用HttpOnly和SameSite Cookie,并使用CSRF象征来防止跨站点攻击。
- 数据加密: 客户端和服务器之间传输的所有数据都使用TLS/SSL加密。
- 输入验证: 严格验证所有输入,防止SQL注入、XSS和CSRF。
9. 部署和可扩展性
- 主机: 该应用程序部署在DigitalOcean Linux服务器上。
- 反向代理: Caddy用于处理负载平衡、SSL/TLS和缓存。
- 扩展: 作为一个单体架构,该系统通过增加分配给服务器的资源(CPU、RAM)进行垂直扩展。
10. 挑战和未来的增强
挑战:
- 验证帖子链接是否真正属于Teamster仍然是一个手动过程,这引入了欺诈的可能性。
- 处理大量提交(例如,每次促销4000多份)并确保绩效。
来的增强:
- 添加验证检查,以确认帖子链接与Teamster的社交媒体帐户匹配。
- 探索横向扩展或重构为微服务,以提高可扩展性。
- 添加与其他社交媒体平台的集成,以获得更广泛的活动支持。
- Live网站
- Admin Username & Password: mainuser@gmail.com, 12345678
- CM Username & Password: cmuser@gmail.com, 12345678
- Teamster Username & Password: user1@gmail.com 12345678