Add structured admission plans and school role management

This commit is contained in:
2026-07-21 14:04:19 +08:00 Unverified
parent 1b6e860013
commit 5e0bee60e2
23 changed files with 483 additions and 82 deletions
+6 -3
View File
@@ -47,11 +47,13 @@ const staticFiles = new Set([
'/src/client/admin-views.mjs',
'/src/client/candidate-views.mjs',
'/src/client/admission-views.mjs',
'/src/client/admission-plan-editor.mjs',
'/src/client/public-views.mjs',
'/src/client/state.mjs',
'/src/client/ui.mjs',
'/src/client/region-select.mjs',
'/src/data/china-regions.mjs'
'/src/data/china-regions.mjs',
'/src/data/specialty-types.mjs'
]);
const vendorStaticFiles = new Map([
['/vendor/ckeditor5/ckeditor5.js', join(root, 'node_modules', 'ckeditor5', 'dist', 'browser', 'ckeditor5.js')],
@@ -98,7 +100,7 @@ const initializeDatabase = () => createBaseDatabase({
});
const persistentDatabase = await createDatabase({ root, seed: initializeDatabase });
const cache = await createRedisCache();
const resultCacheWriteMethods = new Set(['saveResult', 'saveResults', 'updateExam', 'archiveExam']);
const resultCacheWriteMethods = new Set(['saveResult', 'saveResults', 'updateFeatureScore', 'updateExam', 'archiveExam']);
const database = withCacheInvalidation(persistentDatabase, cache, (method, args) => {
const namespaces = ['public'];
const instance = args[0];
@@ -423,6 +425,7 @@ function examResultSummary(db, registration) {
complete,
publishedSubjects: published.length,
subjectCount: subjects.length,
featureScore: Number(registration.featureScore || 0),
total,
fullScore,
scoreRatio: Number(scoreRatio.toFixed(2)),
@@ -459,7 +462,7 @@ function logAction(db, user, action, detail) {
const excelResourceNames = {
classes: '班级台账', class_admins: '班级管理员', account_quotas: '报名号班级配额',
account_results: '报名号下发结果', candidates: '考生资料', payments: '考试缴费名单', centers: '考点考场档案', results: '成绩台账',
admit_cards: '准考证信息台账'
admit_cards: '准考证信息台账', admitted_candidates: '录取考生信息'
};
function admissionRowsForRegistrations(db, registrations) {