diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..38d921e1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +# EditorConfig is awesome: https://EditorConfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true diff --git a/packages/hydrooj/TODO b/packages/hydrooj/TODO index 3ef3e74d..63ed2be5 100644 --- a/packages/hydrooj/TODO +++ b/packages/hydrooj/TODO @@ -5,4 +5,7 @@ model.setting.ui.name pdoc.secretConfig? message.markAsRead 基于document的model难以lint,建议拆分 -检查多余的索引 \ No newline at end of file +检查多余的索引 ++hack +评测队列优先级系统 +讨论浏览数量显示 \ No newline at end of file diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 3550a18a..a3be6b68 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.13.6", + "version": "2.13.7", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index eaa31fbb..274355b4 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -217,6 +217,17 @@ class ProblemDetailHandler extends ProblemHandler { } this.response.redirect = this.url('problem_settings', { domainId: destDomainId, pid }); } + + @param('pid', Types.UnsignedInt) + async postRejudge(domainId: string, pid: number) { + this.checkPerm(PERM.PERM_REJUDGE_PROBLEM); + // TODO maybe async? + await record.getMulti(domainId, { pid }).forEach(async (doc) => { + await record.reset(domainId, doc._id, true); + await record.judge(domainId, doc._id); + }); + this.back(); + } } class ProblemSubmitHandler extends ProblemDetailHandler { diff --git a/packages/hydrooj/src/loader.ts b/packages/hydrooj/src/loader.ts index f1fa1a35..69d06da3 100644 --- a/packages/hydrooj/src/loader.ts +++ b/packages/hydrooj/src/loader.ts @@ -207,13 +207,13 @@ export async function load() { const cnt = await entry({ entry: 'master' }); logger.info('Master started'); cluster.on('exit', (worker, code, signal) => { - logger.info(`Worker ${worker.process.pid} ${worker.id} exit: ${code} ${signal}`); + logger.warn(`Worker ${worker.process.pid} ${worker.id} exit: ${code} ${signal}`); }); cluster.on('disconnect', (worker) => { logger.info(`Worker ${worker.process.pid} ${worker.id} disconnected`); }); cluster.on('listening', (worker, address) => { - logger.info(`Worker ${worker.process.pid} ${worker.id} listening at `, address); + logger.success(`Worker ${worker.process.pid} ${worker.id} listening at `, address); }); cluster.on('online', (worker) => { logger.success(`Worker ${worker.process.pid} ${worker.id} is online`); diff --git a/packages/hydrooj/src/model/setting.ts b/packages/hydrooj/src/model/setting.ts index f0430c18..3421badf 100644 --- a/packages/hydrooj/src/model/setting.ts +++ b/packages/hydrooj/src/model/setting.ts @@ -3,10 +3,12 @@ import moment from 'moment-timezone'; import { Dictionary } from 'lodash'; import * as builtin from './builtin'; import { Setting as _Setting } from '../interface'; +import { Logger } from '../logger'; import * as bus from '../service/bus'; type SettingDict = Dictionary<_Setting>; +const logger = new Logger('model/setting'); const countries = moment.tz.countries(); const tzs = new Set(); for (const country of countries) { @@ -141,6 +143,7 @@ SystemSetting( ); bus.once('app/started', async () => { + logger.debug('Ensuring settings'); for (const setting of SYSTEM_SETTINGS) { if (setting.value) { // @ts-ignore