基础平台实现完成报告

日期:2026-10-29。本报告对应已批准的 platform-001 技术包,交付鉴权、角色绑定的操作级权限、用户/角色/权限目录/菜单管理,以及 Docker 本地运行。不是整个 MVP 公网发布完成声明。

本地可审阅入口为 http://127.0.0.1:8088。Java/Maven 命名空间为 team.lab_edu,来源见 ADR-004。实际运行指南包含初始化、独立验收和停止步骤。

任务完成表

阶段 任务 交付与验证
Setup T001—T006 工程、锁定依赖、配置与真实数据库测试支持完成
Tests T007—T013 黑盒场景先形成,最终已执行;不是只靠编译放行
Core T014—T040 迁移、模型、框架安全、策略与全部业务端点完成;clean verify 52 项通过
Integration T041—T060 Refine/Next 接真实 core,12 项 Chromium 整组通过;中途失败均修复后重验
Polish T061—T062 实际指南、证据与本报告已交付并校验,逐条勾选完成
Progress T063 路线图已同步真实进度;本包 63/63 完成,未把 CI/文档站/公网发布计为完成

Spec 符合度表

规格与范围 结果 核实依据
auth FR-001—005、014—015 自助注册仅学生、不自动登录;框架认证、本人身份与当前会话退出完成 AuthenticationApiTest、SessionEndpointsTest、authentication.spec.ts
auth FR-006—007 30 分钟空闲/8 小时绝对期限;成功业务活动、版本撤权、全部旧会话失效与不复活完成 SessionPolicyTest、ExtendedGovernanceApiTest、账户/角色浏览器场景
auth FR-008、011—012 失败统一、5 次/15 分钟暂停、网络与未知退出不假成功、切换/迟到缓存清除完成 单元/HTTP 与 authentication/admin-read 浏览器场景
auth FR-009—010、013 临时密码受限、Unicode 边界、原密码与不同新密码、受控初始化及恢复保护完成 PasswordChangeApiTest、BootstrapIntegrationTest、account-lifecycle.spec.ts
auth FR-016—017 资源 × 操作按角色分配,无个人例外或通用行/字段策略;范围和恢复集合由 core 核实 access-control 契约、治理/API/角色浏览器场景
admin FR-001—006 用户摘要、分页三项筛选、独立状态/角色/密码操作及一次临时值完成 AdminReadApiTest、UserManagementApiTest、account-lifecycle/admin-read
admin FR-007—013 自定义角色、规范名称、已有许可、完整旧/新范围、关联删除与并发恢复不变量完成 RoleManagementApiTest、ExtendedGovernanceApiTest、roles.spec.ts
admin FR-014—016 固定菜单展示编辑、不借菜单授予权限、恢复入口与版本/故障反馈完成 MenuManagementApiTest、NavigationServiceTest、menus/roles 浏览器场景
infra D001—D004 两套四服务健康、同源 API、非 root/只读应用、命名卷与 secret 生命周期通过 运行证据(本地资料,未发布)
infra D005、路线图骨架/文档站 独立库完成;新远端、CI、文档站、Cloudflare/TLS 尚未交付 保持未完成,不推定流水线或公网结果

正式 SC 的逐条后端映射保留在 core-scenarios-20261029.md(本地资料,未发布),浏览器原始场景名称与结果见 browser-verify-20261029.json(本地资料,未发布)。

宪法符合度表

原则 核实结果
职责隔离 core 拥有全部业务和授权不变量;web 消费同源接口/派生 access;infra 只有编排;docs 只保存文档、契约、证据
成熟框架优先 Spring Security、PBKDF2、Spring Session JDBC、JPA/Flyway;Refine CORE/官方适配/Ant Design;未自研密码或第二套会话认证系统
默认拒绝与唯一权威 方法级授权加事务内当前操作者复核;前端按钮/菜单不构成授权;权限目录引用由 core 校验
并发与验证 统一治理行锁、JPA 编辑版本与认证版本分别使用;真实 PostgreSQL 验证末位管理员、删除/分配与活动时间不回退
流程 批准记录和 ADR 可追溯;任务逐条按证据勾选,T058 整组失败后曾重新打开,修复后重验
来源与红线 没有读取 GitLab group 下旧仓库;不添加实验任务/报告/评分或范围外业务;未重复询问既有批准
命名与发布边界 用户自有域名 lab-edu.team 对应 team.lab_edu;GitLab 托管地址不充当包身份;本地 HTTP 与公网 TLS 清楚区分

测试覆盖表

层次 真实结果 持久证据
完整后端 52 passed,0 failures/errors/skipped,迁移后 clean verify 无旧包编译类 后端 JSON(本地资料,未发布)
实际响应契约 真实封闭对象字段/必需项/枚举核对;完整 OpenAPI 3.1 parser 通过 19 paths / 23 operations / 26 schemas ContractResponseTest;infra/tools/validate-openapi.mjs
完整浏览器 12 passed,单 worker、每项一次、无自动重试或跳过,真实 Docker 四服务 浏览器 JSON(本地资料,未发布)
前端工程 lint/typecheck/production build 与多阶段镜像构建通过 最终 Compose build/up --build 日志;运行镜像摘要见 infra 证据
正常本地栈 8088 登录/退出冒烟;1 个初始化管理员、3 个内置角色,和验收卷独立 空登录页(本地资料,未发布)、内置角色页(本地资料,未发布)
文档与追溯 链接/表格、63 任务依赖、原始 5 份批准快照散列、ADR 与证据一致 文档校验(本地资料,未发布)

发现并修复的问题包括:父子 ProviderManager 重复计数;菜单夹具未恢复全部展示属性;中文按钮默认空格与 Select 装饰冒号影响精确定位;角色多时需要搜索虚拟候选;受控 Checkbox 需等待 React 最终提交状态。最终整组 12/12 的证据保留,未把过程中的 11/12 写成通过。

边界:浏览器验证限 Chromium;CI、新远端和文档站未交付;Cloudflare DNS/TLS 未发布。Flyway 对 PostgreSQL 18.6 的已测试版本提示仍需部署前复核,真实迁移成功不等于上游兼容认证。可重建依赖、原始测试日志和构建产物保留于 node_modules/target/临时目录并忽略提交;持久证据不包含密码值。