这个项目可能是我目前做过最大的项目了……倒不是说规模多大,主要是系统结构是真的复杂。

开发历程

这玩意我创建仓库的时候实际上很早。大概是去年3月吧?

当时直接用php做后端, python做核心,前端靠Vue(单文件)糊……好在没做起来直接弃坑了。不然到现在绝对会重构的。

是我今年3月重新捡起来弄的。这会主要是想用GPT做点东西玩玩,所以发现它还没做完就用它了。GPT倒是挺好,主要我太菜了,对前后端都不太熟以至做的太慢了。

当时用了差不多3,4天从0开始糊起来一个完整框架。先是用C++糊了个判题端,然后是用Go+Vue糊了个前后端。当时的构思还比较简单,就是做题,判题,看结果。结果没想到这部分用Go做起来也很麻烦。有时候是陷入一些小问题,有时候是忙完了不知道下一步该干啥了,还有时候是前后端交叉进行,非常乱,还有时候是后端数据模型改了,前端也得跟着改api调用和程序结构……总之就是很乱。

这个版本也没有很明确的区分度。总之就是大概把这坨玩意的基本功能糊好了:单突出一个糊?总之就是,能判题了,能注册登陆了,能上传题目了,也能看到做题结果了,还有公告和通知了。但是还有更多问题,总而言之就是除了上面以外的功能都没做完。

然后就没有怎么写过了。不过倒是又画了几个饼?

反正到目前为止的感想就是,真的好麻烦啊,以为后端已经写好了,没想到一写前端发现还得再写几个API……再一写发现后端还得改…?

饿饿。

目前的饼就这些。

后端

感觉很好写,但是前端让我觉得后端不好写。

前端

很麻烦。说实话还不如先写前端再写后端呢。而且前端写的是真的晕,改动代码都是一次连带着改一堆那种。。

重新梳理一下前端的架构和任务吧。目前前端也就核心功能勉强能看。几个页面倒是划分好了。参考了其他几个传统oj的结构,所以是从页面开始做的。

主页是功能模块合集,所以算是跟着其他几个模块的完成度。

题目列表简单,就是个列表,列表控件封装完再包在页面里。旁边可以再包个其他控件用来筛选问题。不过得加个分页,不然有点太长了。

然后连带的有问题详情页。这就是问题的内容展示。我也想不出来其他什么展示方式了,主体分栏分卡片展示也可以?底下的代码提交框也目前不错了,回头优化下,加点其他模式就行。另外这个页面可以看到历史提交记录和截图,以及编辑器可以用vscode那个前端,绝对舒服。最好也支持下文件上传。

然后是习题集页面。这个嘛,肯定要根据用户分类展示。比如一个班级一个年级的展示这几个习题集这种的。所以用户数据得详细。然后每个题都得有分数,得有所有题的成绩,还得有代码查重,而且得能指定查重范围。还得有管理员视图,管理员能看到排名情况,导出排名信息。这个得根据用户类型分开显示。

接着是总榜。这个也是组件套用+页面封装。然后就加点数据筛选,签名啥的点缀一下咯。

最后是提交记录。这里能查看所有人的提交记录,方便oi赛制使用。