跳到主要内容
Jimmy Wang
返回列表

2023年6月

Puzzle and Key Universe(PnKU)网站

面向 Puzzle Hunt 活动的开源平台;作为核心贡献者之一,参与平台功能、活动定制开发与线上运维。

  • React
  • TypeScript
  • Python
  • Ant Design
  • Puzzle Hunt
  • Operations

项目概述

PnKU Website 是一个用于举办 Puzzle Hunt 的开源活动平台。我从 2023 年 6 月开始参与,是核心贡献者之一,但并非项目的主要负责人。项目采用活动驱动的维护方式:平时保持维护,在筹备新活动时根据需求集中开发。

这套平台先后支撑了 PnKU2、PnKU3(上)和 PnKU3(中)三场活动。平台和各场活动均由多名成员协作完成。

P&KU3(上)活动主页界面
P&KU3(上)活动主页;主题插画著作权:Winfrid

平台架构

公开仓库中的前端以 React、TypeScript、Vite 和 Ant Design 为主,并使用 Tailwind CSS、React Router 与 SWR。Python 后端包含 Sanic、Flask、Pydantic 和 SQLAlchemy,数据存储使用 MariaDB / MySQL;部署体系使用 Docker 与 Nginx。

服务端以状态机组织活动逻辑:数据库主要保存操作记录,当前状态通过计算产生并驻留内存。这是项目的整体架构,不属于我个人独立设计的成果。

平台功能贡献

我的日常贡献以前端为主,包括站内信、工单和提示系统等通用页面与交互功能。

针对具体活动,我也参与部分复杂交互题的实现:除前端页面外,还会编写对应的 Python adhoc 状态转换逻辑。下面的截图用于展示平台支持的活动定制界面;该题的创作与作者署名独立于我的项目贡献。

P&KU3(上)交互题页面界面
P&KU3(上)交互题页面示例;题目作者:esc

活动规模与运维

最近一场活动约有 700+ 支有效参赛队伍和约 2,000 名用户。我同时参与活动期间的网站运维,作为三人运维团队成员进行问题定位、恢复操作和全流程监控。

活动期间发生过两次持续至少 10 分钟的服务中断,以及若干短时波动和在线更新。其中一次服务恢复由我直接执行。这些经历让我参与了真实活动规模下从发现问题到恢复服务的完整过程;这里不公开未经确认的事故根因、精确恢复时长或可用率指标。

当前状态

项目目前处于维护状态。新的开发工作主要随着后续活动筹备,根据具体活动需求集中开展。