19 Commits
  • 本轮迁移已完成,生产运行链路现已切换为纯 ASP.NET Core 10。
    主要完成:
    补齐招生学校计划、投档审核、报到、扫码、补录等原生接口。
    新增 SQLite/MySQL 空库初始化及默认审批流、号码规则。
    删除 Node 兼容代理,未知 API 直接返回原生 404。
    Docker、Compose、Gitea CI 全部切换到 Eis.Web.dll。
    CKEditor 已固化到 Web 发布资源,不再依赖 node_modules。
    新增纯 .NET 冒烟脚本:[smoke-dotnet-native.ps1 (line 1)](C:/Users/BI/Documents/EIS-dotnet/scripts/smoke-dotnet-native.ps1:1)。
    迁移状态已更新:[MIGRATION.md (line 14)](C:/Users/BI/Documents/EIS-dotnet/MIGRATION.md:14)。
    容器入口见 [Dockerfile (line 31)](C:/Users/BI/Documents/EIS-dotnet/Dockerfile:31)。
  • 已完成本轮迁移:管理后台、审批流和考务编排的业务 API 已全部由 ASP.NET Core 10 原生处理。
    主要完成:
    管理端招生工作台、指标资格、招生学校账号。
    招生计划审核、分数优先多志愿投档、退档监督。
    逐轮录取公示、报到审批、补录轮次推进、最低录取线公示。
    成绩预览导入与管理员账号禁止物理删除。
    新增迁移开关及健康状态:[MIGRATION.md (line 57)](C:\\Users\\BI\\Documents\\EIS-dotnet\\MIGRATION.md:57)
    核心实现:[AdminAdmissionService.cs (line 10)](C:\\Users\\BI\\Documents\\EIS-dotnet\\src\\Eis.Infrastructure\\Administration\\AdminAdmissionService.cs:10)
    原生路由:[NativeAdminReadEndpoints.cs (line 209)](C:\\Users\\BI\\Documents\\EIS-dotnet\\src\\Eis.Web\\Administration\\NativeAdminReadEndpoints.cs:209)
  • 按 examId 延迟加载成绩工作区,未选择考试时不执行排名计算
    单条及批量成绩草稿、发布
    特长分单条及批量维护
    成绩复议多级审批、终审改分、归档锁定
    排名、等级、单科达线和考试汇总
    成绩台账 Excel 导出
    管理范围、超级管理员写权限及事务审计
    独立开关 ADMIN_NATIVE_RESULTS_ENABLED
  • 支持五级混编、稳定种子、容量预检、固定考点、逐科考场/座位及四种准考证号规则。
    正式编排会事务性替换整场计划、准考证、座位和审计记录。
    支持三级管理员范围读取、批量 HTML 准考证、准考证信息 Excel,以及校级考点桌贴、门贴和签名单。
    核心实现见 [AdminArrangementPlanner.cs (line 7)](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Infrastructure/Administration/AdminArrangementPlanner.cs:7)、[AdminArrangementService.cs (line 11)](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Infrastructure/Administration/AdminArrangementService.cs:11) 和 [AdminArrangementExporter.cs (line 5)](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Infrastructure/Administration/AdminArrangementExporter.cs:5)。
    新增开关 ADMIN_NATIVE_ARRANGEMENTS_ENABLED=true,说明已更新到 [MIGRATION.md (line 57)](C:/Users/BI/Documents/EIS-dotnet/MIGRATION.md:57)。
    Excel 由 .NET 直接生成,使用 ClosedXML 0.105.0;该库支持服务端生成 Excel 2007+ 工作簿。ClosedXML NuGet 页面
  • 已完成第十一批迁移:考试维护功能已原生化到 ASP.NET Core 10。
    支持考试创建、草稿修改、发布状态切换及不可逆归档。
    支持科目、费用、满分和合格线策略校验。
    保留已有报名禁止修改科目、待处理成绩复议禁止归档等规则。
    数据修改、科目替换与审计日志使用同一数据库事务。
    新增 ADMIN_NATIVE_EXAM_MANAGEMENT_ENABLED 独立开关。
    路由与实现见 [AdminExamManagementService.cs (line 9)](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Infrastructure/Administration/AdminExamManagementService.cs:9) 和 [NativeAdminReadEndpoints.cs (line 133)](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Web/Administration/NativeAdminReadEndpoints.cs:133)。
    迁移说明已更新至 [MIGRATION.md (line 57)](C:/Users/BI/Documents/EIS-dotnet/MIGRATION.md:57)。
  • 本批“工作流调度”迁移完成:
    GET /api/admin/workflow-instances
    PATCH /api/admin/workflow-instances/{id}/transfer
    PATCH /api/admin/workflow-instances/{id}/supervise
    覆盖资料变更、报名审核、考点变更、批量报名号和成绩复议五类流程,并实现同级转交、范围校验、超级管理员监督回退及业务状态同步重置。
  • 本批“报名审核与缴费更新”迁移完成:
    PATCH /api/admin/registrations/{registrationId}
    PATCH /api/admin/payments/{registrationId}
    实现了多级报名审核、终审绑定报名号与号码规则、缴费确认/撤销、状态防重、考试归档锁定及事务审计
  • 本批“考生账号维护”迁移完成:
    POST /api/admin/candidate-accounts/archive
    POST /api/admin/candidates/{profileId}/reset-password
    PATCH /api/admin/candidates/{profileId}
    实现了校级按班级/年级归档与恢复、超级管理员密码重置、多级资料审批、事务审计和会话失效。核心代码见
  • 本批迁移已完成:
    原生化后台只读接口:GET /api/admin/candidates
    GET /api/admin/registrations
    GET /api/admin/payments
    
    保持超级、校级、班级管理员的数据范围一致。
    保持证件号脱敏、审批流、考试科目、缴费信息及座位号前导零兼容。
    新增灰度开关:ADMIN_NATIVE_OPERATIONAL_READS_ENABLED=true
    归档、审核、缴费更新等写操作暂时继续转发 Node。
  • 本轮完成“考点与考场变更审批”原生迁移:
    GET/POST/PATCH /api/admin/centers
    PATCH /api/admin/center-change-requests/{id}
    校级数据范围、班级管理员禁用
    省市区县及结构化考场校验
    正式档案和待审申请代码去重
    多级工作流分配、通过与拒绝
    终审时原子更新流程、审计、考点及考场
    新增开关 ADMIN_NATIVE_CENTERS_ENABLED=false
  • 本轮完成了完整的通知公告管理迁移:
    原生 GET /api/admin/notices
    原生五类系统公示聚合:计划、资格、录取、分数线、报到
    原生 PATCH /api/admin/publications/{type}/{id} 显隐控制
    权限、事务审计和 Node 返回结构保持一致
    开关升级为 ADMIN_NATIVE_NOTICE_MANAGEMENT_ENABLED
    兼容旧变量 ADMIN_NATIVE_NOTICE_WRITES_ENABLED
    冒烟脚本现在会自动构建 Web,避免使用过期程序集
  • 新增 POST /api/admin/notices、PATCH /api/admin/notices/{id}
    保留超级管理员权限边界
    支持草稿、发布、置顶、自动摘要
    HTML 净化,拦截脚本和危险链接
    公告更新与审计日志同事务提交
    新增开关 ADMIN_NATIVE_NOTICE_WRITES_ENABLED=false
    管理端公告列表和系统自动公告暂时仍由 Node 处理
  • 已完成管理后台第四批 ASP.NET Core 10 迁移:报名号规则与审批流程配置。
    原生接口:
    GET/POST /api/admin/number-rules
    GET /api/admin/workflows
    PUT /api/admin/workflows/{businessType}
    实现包括:
    报名号规则预览、创建和更新
    自动停用旧规则
    审批流程步骤重建
    班级、校级、超级管理员层级校验
    考点及批量申领流程禁止班级审批
    批量申领最终步骤强制为超级管理员
    配置更新与审计日志事务提交
  • 已完成管理后台第三批 ASP.NET Core 10 迁移:批量报名号申领与审批。
    原生接口:
    GET /api/admin/candidate-account-batches
    POST /api/admin/candidate-account-batches
    PATCH /api/admin/candidate-account-batches/{batchId}
    实现包含:
    校级管理员按班级提交名额
    可配置多级审批流与待办负载分配
    当前处理人及管理员层级校验
    审批通过、退回和重复审批保护
    终审时原子生成考生账号、报名号、初始密码和待补录资料
    生成账号兼容现有 PBKDF2 登录及首次强制改密
  • 已完成管理后台第二批 ASP.NET Core 10 迁移:
    学校创建、修改
    班级创建、修改
    管理员创建、修改
    管理员密码重置
    自主注册开关
    写入与审计日志保持同一事务
    停用或重置管理员后自动清除其会话
  • 已完成管理后台第一批只读功能的 ASP.NET Core 10 迁移:
    原生接口:context、dashboard、schools、school-organization、admins、exams
    保持超级、校级、班级管理员的数据范围及权限隔离
    其余管理写入、审批流和考务编排仍由 Node 转发
    新增 ADMIN_NATIVE_READS_ENABLED=true 开关,并强制要求原生认证和共享 Redis
  • 已完成考生域第一批只读迁移:
    GET /api/candidate/dashboard
    GET /api/candidate/notices
    GET /api/candidate/profile
    GET /api/candidate/exams
    GET /api/candidate/registrations
  • 自主注册、登录、退出、当前用户与密码修改
    兼容现有 PBKDF2 密码和 hz_session Cookie
    TOTP 绑定、二步登录、防重放、恢复码与 AES-GCM 密钥
    与 Node 完全一致的 Redis 键格式,可跨运行时共享会话
    生产环境开启原生认证时强制要求 Redis
    默认保持兼容代理;设置 AUTH_NATIVE_ENABLED=true 即可切换