文档架构:建立唯一现行系统真理文档门户 (Current Truth Bootstrap)
docs: bootstrap canonical current truth portal (00-START-HERE through 08-NEXT-ACTIONS)
This commit is contained in:
1 parent
2f05f310ad
commit
8ad0f5172e
18 files changed
+737
-9
No files matched your search
@@ -0,0 +1,71 @@
|
||||
# 00 - RailwaySystem 现行系统唯一权威真理入口 (Start Here)
|
||||
|
||||
```text
|
||||
SOURCE OF TRUTH PRIORITY
|
||||
|
||||
1. docs/current/**
|
||||
2. current source code / migrations
|
||||
3. confirmed client requirements
|
||||
4. current test evidence
|
||||
5. historical reports
|
||||
|
||||
docs/reports/** MUST NOT be treated as current truth.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1. 核心定位与真理唯一性法则
|
||||
|
||||
本目录(`docs/current/`)是 **SYFJGYD学员管理系统**(内部工程代号:`RailwaySystem`)面向所有研发人员、测试工程师、交付团队、管理人员以及 **AI 智能体 (Agent)** 的**唯一权威真理中心**。
|
||||
|
||||
在过去多轮并行迭代与验证过程中,项目沉淀了大量历史测试、审计与阶段报告(存放于 `docs/reports/**`)。为防止历史快照篡权和事实失真,确立以下不可动摇的法则:
|
||||
1. **真理优先级铁律**:如首屏声明,`docs/current/**` 拥有最高文档解释权,任何 `docs/reports/**` 下的历史报告仅作为时间序列凭证,**绝对不得覆盖本目录所载明的当前事实**。
|
||||
2. **唯一入口导航**:人类读者与 Agent 接手任务时,必须以本文件为第一入口,禁止直接引用散落在历史报告中的过期结论。
|
||||
3. **实事求是原则**:所有现状描述直接锚定底层 Git HEAD 代码与 Kingbase 物理迁移,严禁虚报、浮夸或把未实现能力写为已完成。
|
||||
|
||||
---
|
||||
|
||||
## 2. 系统核心标识与运行基线
|
||||
|
||||
- **正式业务名称**:`SYFJGYD学员管理系统`
|
||||
- **内部工程代号**:`RailwaySystem`
|
||||
- **当前开发分支**:`fix/phase0-product-defects-20260923`
|
||||
- **共享试用部署分支**:`feat/cicd-pipeline`
|
||||
- **共享试用访问地址**:[http://192.168.139.230:8082/](http://192.168.139.230:8082/)
|
||||
- **数据库系统**:国产人大金仓 KingbaseES V9 (schema: `public`, 共享试用库: `training`)
|
||||
- **当前试用就绪度**:`READY_WITH_EXTERNAL_BLOCKERS`(核心教务主闭环打通,具备现场局域网试用条件;外部智能门锁硬件因无资源处于客观阻塞)
|
||||
|
||||
---
|
||||
|
||||
## 3. Current 权威文档中心导航表
|
||||
|
||||
本目录现行收录且仅收录以下 8 份相互解耦、权责明确的真理文档:
|
||||
|
||||
| 编号 | 文档名称 | 核心职责与回答的关键问题 | 适用对象 |
|
||||
| :---: | :--- | :--- | :--- |
|
||||
| **01** | [**01-CURRENT-SYSTEM-STATE.md**](01-CURRENT-SYSTEM-STATE.md) | **系统当前真实状态速览**<br>Git基线、前后端源码、部署状态、阻断项、活跃Worktree、Demo状态与文档状态。 | 全体成员、新接手人员、Agent |
|
||||
| **02** | [**02-FUNCTION-MODULES.md**](02-FUNCTION-MODULES.md) | **业务功能模块全量判定**<br>按教师、学员、课程、场地、计划、排课、考勤、住宿、成绩、统计、DMS等逐项给出五级状态判定。 | 产品经理、业务主管、交付验收 |
|
||||
| **03** | [**03-DATABASE-AND-TABLES.md**](03-DATABASE-AND-TABLES.md) | **数据库架构、迁移链与数据表总账**<br>KingbaseES DDL、21张业务表、系统表、迁移链顺序与CLEAN_DEMO_DATABASE重建说明。 | 后端开发、DBA、数据审计人员 |
|
||||
| **04** | [**04-API-INVENTORY.md**](04-API-INVENTORY.md) | **全量 API 接口总账**<br>全量后端 Controller 接口路径、HTTP 方法、源分类、关联物理表与 UI 调用关系。 | 前后端研发、接口自动化测试 |
|
||||
| **05** | [**05-CLIENT-API-STATUS.md**](05-CLIENT-API-STATUS.md) | **甲方与外部接口状态清单**<br>仅记录 DMS 及电子班牌等外部接口的实时连通、鉴权与 Mock 状态,严禁 Mock 冒充真实。 | 集成工程师、外部联调人员 |
|
||||
| **06** | [**06-DEMO-BASELINE.md**](06-DEMO-BASELINE.md) | **演示基线准则与重构要求**<br>明确旧 Demo 不可信与新 Demo 尚未开始的事实,确立纯净数据库与确定性数据等 7 大原则。 | QA、测试架构师、验收人员 |
|
||||
| **07** | [**07-KNOWN-GAPS.md**](07-KNOWN-GAPS.md) | **内部已知缺口与外部阻塞清单**<br>仅记录经过严格验证的真实缺口(包括 ACCOM-PERM-01 阻断项、DMS 硬件阻塞、C03成绩收敛等)。 | 研发团队、排期人员、问题排查 |
|
||||
| **08** | [**08-NEXT-ACTIONS.md**](08-NEXT-ACTIONS.md) | **下一阶段标准化行动路线图**<br>固定从环境冻结、纯净库重建、种子数据灌入到最终 Docs Phase B 的 14 步标准流。 | 项目经理、技术负责人 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 历史版本审计与归档记录
|
||||
|
||||
在本次 Bootstrap 启动前,原 `docs/current/` 目录下共存有 8 份历史文件。经逐篇与底层代码及 Git HEAD 审计,判定结论如下:
|
||||
- `README.md`:**STALE**,原速览索引缺少真理优先级声明与新架构映射,已被本文件彻底重构替代。
|
||||
- `01-current-status.md`:**STALE**,基于 2026-09-17 早期快照,已被 `01-CURRENT-SYSTEM-STATE.md` 取代。
|
||||
- `02-phase1-status.md`:**STALE**,粗粒度判定,已被 `02-FUNCTION-MODULES.md` 精确五级判定取代。
|
||||
- `03-shared-trial.md`:**STALE**,描述 2026-09-17 部署快照,安全移入归档。
|
||||
- `04-known-gaps.md`:**STALE / NEEDS_REWRITE**,遗漏了最新的 `ACCOM-PERM-01` 阻塞项,已被 `07-KNOWN-GAPS.md` 取代。
|
||||
- `05-next-actions.md`:**STALE**,编写于 2026-09-18,待办已过期,已被 `08-NEXT-ACTIONS.md` 的 14 步路线图取代。
|
||||
- `06-shared-trial-accounts.md`:**STALE**,早期演示账号清单,安全移入归档。
|
||||
- `07-analytics-attendance-semantics.md`:**CURRENT (SPECIALIZED)**,Package C 考勤专题统计语义,属专项技术规范,为保持顶层 9 篇架构精简,归入归档留存备查。
|
||||
|
||||
所有上述 8 份原文档均已完整保留在:
|
||||
`docs/archive/shared-trial-baseline-20260920/`
|
||||
(**无任何物理删除,历史凭证完全可追溯**)。
|
||||
@@ -0,0 +1,121 @@
|
||||
# 01 - 系统当前运行基线与真实状态 (Current System State)
|
||||
|
||||
> **更新时间**:2026-09-23
|
||||
> **数据核验基准**:底层源码、真实 Kingbase 迁移脚本与当前 Git HEAD 状态。
|
||||
|
||||
---
|
||||
|
||||
## 1. 核心事实核验基线总览
|
||||
|
||||
```text
|
||||
================================================================================
|
||||
RAILWAYSYSTEM RUNTIME VERIFIED STATE
|
||||
================================================================================
|
||||
CURRENT_GIT_BRANCH = fix/phase0-product-defects-20260923
|
||||
CURRENT_GIT_HEAD_COMMIT = 2f05f310
|
||||
DEPLOYMENT_TRACKING_BRANCH = feat/cicd-pipeline (HEAD: eb1ddfca)
|
||||
SHARED_TRIAL_URL = http://192.168.139.230:8082/
|
||||
SHARED_TRIAL_DB = training (KingbaseES V9 at 192.168.139.218:4321)
|
||||
FRONTEND_SOURCE_OF_TRUTH = RuoYi-Vue/ruoyi-ui (Vue 2.6 / Element UI)
|
||||
BACKEND_SOURCE_OF_TRUTH = RuoYi-Vue (Spring Boot 2.5.15 / Java 8)
|
||||
BACKEND_TEST_SUITE_STATUS = 331 / 331 PASS (Surefire Verified)
|
||||
|
||||
DEMO_STATUS = OLD_DEMO_UNTRUSTWORTHY / NEW_DEMO_NOT_YET_STARTED
|
||||
DOCS_STATUS = PHASE_A6_1_COMPLETE / PHASE_B_GATE_BLOCKED
|
||||
CLIENT_REQUIREMENT_STATUS = CLIENT_REFERENCE_PACK_UNCONFIRMED (INTERNAL_FREEZE)
|
||||
CURRENT_KNOWN_BLOCKERS_COUNT = 2 (ACCOM-PERM-01, DMS_EXTERNAL_HARDWARE)
|
||||
================================================================================
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 前后端源码与技术栈真实情况
|
||||
|
||||
### 2.1 前端工程事实 (`RuoYi-Vue/ruoyi-ui`)
|
||||
- **技术栈**:Vue 2.6.12 + Vuex 3.6.0 + Vue Router 3.4.9 + Element UI 2.15.8 + Axios + ECharts 5.x。
|
||||
- **业务视图根路径**:`ruoyi-ui/src/views/train/`
|
||||
- **主要视图组件**:
|
||||
- `teacher/`:教师档案管理、资质证书与任教历史;
|
||||
- `student/`:学员主档、身份信息密文展示与报到流水;
|
||||
- `course/`:课程库、教学大纲与学时学分配置;
|
||||
- `plan/`:培训班级计划、开班生命周期阶段流转;
|
||||
- `lesson/`:排课课表、四维冲突时段预检;
|
||||
- `accommodation/`:宿舍房间管理、床位分配与住宿履历;
|
||||
- `checkin/`:学员考勤流水、教师代签补卡与请假核验;
|
||||
- `portrait/`:学员 360 度成长素养画像视图;
|
||||
- `board/`:电子班牌设备信息管理。
|
||||
- **自服务专属界面**:
|
||||
- 教师工作台 (`teacher/workbench` / `TrainTeacherMeController`)
|
||||
- 学员个人培训中心 (`student/center` / `TrainStudentMeController`)
|
||||
|
||||
### 2.2 后端工程事实 (`RuoYi-Vue`)
|
||||
- **核心框架**:Spring Boot 2.5.15 + MyBatis 3.5.6 + PageHelper + 国产人大金仓驱动 (`kingbase8-8.6.0.jar`)。
|
||||
- **工程模块分层**:
|
||||
- `ruoyi-admin`:Web 控制器、Spring Security 过滤链、全局异常处理、登录鉴权;
|
||||
- `ruoyi-train`:铁路教务核心业务服务(Domain, Service, Mapper, DMS 集成适配器);
|
||||
- `ruoyi-framework`:Shiro/Security 配置、数据源切面、数据权限切面 (`DataScopeAspect`);
|
||||
- `ruoyi-system`:RuoYi 系统底座(用户、角色、部门、岗位、字典、配置);
|
||||
- `ruoyi-common`:工具类、国密 SM4 加密组件、通用常量。
|
||||
|
||||
---
|
||||
|
||||
## 3. 当前部署与运行时事实
|
||||
|
||||
- **共享试用地址**:[http://192.168.139.230:8082/](http://192.168.139.230:8082/)
|
||||
- **网络访问路径**:
|
||||
- 本地局域网内直接走 `DIRECT_LAN` 访问;
|
||||
- 远程接入通过 Tailscale 走 `TAILSCALE_SUBNET_ROUTE`(经过 utun 虚拟网卡);
|
||||
- **数据库连接**:
|
||||
- 实例:人大金仓 KingbaseES V9 (Port: 4321)
|
||||
- 综合验收数据库:`railwaysystem_integrated_qa_20260916`
|
||||
- 共享试用数据库:`training`
|
||||
- **当前试用就绪度判定**:`READY_WITH_EXTERNAL_BLOCKERS`
|
||||
- 核心教务管理主闭环稳定流畅;
|
||||
- 教师与学员自服务工作台权限隔离生效;
|
||||
- 外部智能门锁接口受限(见已知阻塞)。
|
||||
|
||||
---
|
||||
|
||||
## 4. 活跃 Worktree 分布现状
|
||||
|
||||
当前在多任务并行环境下,系统存在以下 8 个活跃 Git Worktree,各司其职且相互隔离:
|
||||
|
||||
| 工作树路径 | 关联分支 | 当前主要任务与定位 |
|
||||
| :--- | :--- | :--- |
|
||||
| `主工程根目录 (RailwaySystem)` | `fix/phase0-product-defects-20260923` | **主工程代码工作区**,包含产品缺陷修复与住宿操作前端补丁 |
|
||||
| `docs-cleanup-audit-20260923` | `chore/docs-cleanup-audit-20260923` | **文档信息架构治理专项区**,完成 Phase A/A.5/A.6/A.6.1 审计 |
|
||||
| `client-reference-alignment-20260923` | `analysis/client-reference-alignment-20260923` | **甲方参考稿对齐专项区**,完成 14 项参考资料逐页比对 |
|
||||
| `ex13-bed-overlap-error-contract-20260923` | `fix/ex13-bed-overlap-business-error-20260923` | **EX-13 床位冲突错误码专项区** |
|
||||
| `fix-clear-defects-20260922` | `fix/preview-clear-defects-20260922` | 缺陷清理与 DMS 禁用态统一声明 |
|
||||
| `integrate-abc-preview-candidate-20260921`| `fix/preview-attendance-signin-ui-20260921` | 考勤签到 UI 策略对齐与验证 |
|
||||
| `release-preview-candidate-20260921` | `release/preview-candidate-20260921` | 预发布候选版本稳定性验证 |
|
||||
| `dms-real-probe-20260916` | `integration/dms-real-probe-20260916` | DMS 局域网真实连通与只读契约探测凭据区 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 当前核心阻断项 (Current Known Blockers)
|
||||
|
||||
1. **`ACCOM-PERM-01` (产品级阻断)**:
|
||||
- 住宿生命周期操作(入住、退宿、调房)在 `sys_menu` 与角色授权中未授予 `train_admin` 角色。
|
||||
- 阻断 6 个业务验收场景(SM-10, SM-11, SM-12, SM-13, BR-11, EXT-02)。详见 [07-KNOWN-GAPS.md](07-KNOWN-GAPS.md)。
|
||||
2. **DMS 外部物理硬件阻塞 (`BLOCKED_EXTERNAL`)**:
|
||||
- 厂商可访问测试环境中挂载的房间与门锁数量为 0。
|
||||
- 无法在运行时验证真实房间与门锁行级字段映射,物理下发操作禁止执行。
|
||||
|
||||
---
|
||||
|
||||
## 6. 演示、文档与需求状态定位
|
||||
|
||||
### 6.1 演示状态 (Demo Status)
|
||||
- **旧 Demo 状态**:`OLD_DEMO_UNTRUSTWORTHY`。历史 reports 中包含的演示截图与账本存在固定数据污染、超管代跑掩盖权限缺陷等问题,不可作为系统当前可信状态依据。
|
||||
- **新 Demo 状态**:`NEW_DEMO_NOT_YET_STARTED`。必须等待 `CLEAN_DEMO_DATABASE` 重建和阻断项修复后重新启动。
|
||||
|
||||
### 6.2 文档状态 (Docs Status)
|
||||
- Phase A.6.1 完整性纠偏已在审计工作树中圆满收官(21 份物理产物、53 份争议资产物理绑定、0 路径碰撞)。
|
||||
- 整体搬迁与删除(Phase B)处于阻断状态 (`READY_FOR_PHASE_B = NO`),待演示彻底冻结后执行。
|
||||
- 当前正在执行 `CURRENT TRUTH BOOTSTRAP`,建立唯一权威入口。
|
||||
|
||||
### 6.3 甲方需求状态 (Client Requirement Status)
|
||||
- **材料定性**:`SOURCE_TYPE = CLIENT_REFERENCE`, `REQUIREMENT_STATUS = UNCONFIRMED`。
|
||||
- **治理状态**:`CLIENT_REFERENCE_ACTIVE_WRITER = NO`, `CLIENT_REFERENCE_PACK_INTERNAL_FREEZE = YES`。
|
||||
- 甲方参考资料作为外部参考依据,在甲方正式签署确认前,不作为法定合同变更与现行需求。
|
||||
@@ -1,74 +0,0 @@
|
||||
# 01. 系统当前真实状态速览 (Current Status)
|
||||
|
||||
> **系统正式名称**:`SYFJGYD学员管理系统`(内部工程代号:RailwaySystem)
|
||||
> **共享试用分支**:`feat/cicd-pipeline`
|
||||
> **共享试用地址**:[http://192.168.139.230:8082/](http://192.168.139.230:8082/)
|
||||
> **共享试用数据库**:`training`(国产人大金仓 KingbaseES V9 实例)
|
||||
> **当前试用就绪度**:`READY_WITH_EXTERNAL_BLOCKERS`(具备教务与教学现场试用条件)
|
||||
|
||||
---
|
||||
|
||||
## 1. 核心质量与验证状态表
|
||||
|
||||
系统在完全隔离的真实局域网与 KingbaseES 数据库环境下完成了全量自动化验收与真实浏览器端到端交互,核心能力验证状态如下:
|
||||
|
||||
| 验证维度 | 验证项 / 指标 | 状态结论 | 事实说明 |
|
||||
| :--- | :--- | :---: | :--- |
|
||||
| **核心教务主闭环** | 计划→课程→名单→排课→报到→考勤→结训 | **`PASS`** | 业务主链路 6 大正向场景全线打通,数据流转完整合规。 |
|
||||
| **管理员端交互** | Admin 控制台全生命周期管理 | **`PASS`** | 覆盖师资、学员、教室、场地、计划、考勤报表等无阻断操作。 |
|
||||
| **教师端工作台** | Teacher 个人课表、应到名单、代签打卡 | **`PASS`** | 真实无头 Chrome 浏览器 E2E 验证通过,课表与名单精准过滤。 |
|
||||
| **学员端培训中心** | Student 个人日程、考勤明细、住宿查询 | **`PASS`** | 仅展示本人培训与出勤数据,界面交互流畅。 |
|
||||
| **RBAC 与防越权** | 角色最小权限与防 IDOR 水平越权 | **`PASS`** | `IDOR_LEAK_COUNT = 0`,跨工号/跨学员数据篡改请求全部被 403 拦截。 |
|
||||
| **后端测试套件** | Maven 离线测试门禁 | **`331 / 331 PASS`** | 全量单元测试与契约测试 0 Failures / 0 Errors。 |
|
||||
| **数据库完整性** | 数据孤儿、重复调宿、外键断言 | **`PASS (0 孤儿)`** | 6 项完整性断言全部为 0,数据底座纯净。 |
|
||||
| **凭证合规审计** | 全量源码与配置文件 Secret 扫描 | **`PASS`** | `REAL_SECRET_COMMITTED_COUNT = 0`,无硬编码生产密码。 |
|
||||
| **成绩管理 (C03)** | 新成绩科目权重与录入计算 | **`IN_PROGRESS`** | 基础数据表已就绪,一期业务全闭环与交互正在推进中。 |
|
||||
| **学员画像 (C05)** | 学员画像能力 | **`PARTIAL_FUNCTION`** | 当前具备基础画像能力,完整业务范围与后续增强内容仍需继续完善或确认。 |
|
||||
| **智能门禁 (DMS)** | 真实环境连通与门锁联动 | **`PARTIALLY_VERIFIED`** | 鉴权/TTL/只读连通验证通过;真实设备与物理硬件因无资源外部阻塞。 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 共享试用发布基线数据(2026-09-17)
|
||||
|
||||
共享试用数据库 `training` 当前承载的数据来源于全量验证后的综合验收数据集,真实业务规模如下:
|
||||
|
||||
```text
|
||||
========================================================================
|
||||
共享试用发布基线数据(2026-09-17)
|
||||
========================================================================
|
||||
- 培训开班计划 (Plans) : 13 期 (覆盖多专业、不同生命周期阶段)
|
||||
- 授课教师档案 (Teachers) : 20 名 (涵盖各专业骨干教员)
|
||||
- 参训学员档案 (Students) : 200 名 (全量完成身份证密文存储与脱敏)
|
||||
- 标准培训课程 (Courses) : 24 门 (理论与实作多门类)
|
||||
- 排课课次日程 (Lessons) : 118 次 (含四维冲突校验通过数据)
|
||||
- 学员参训关系 (Enrollments) : 242 条
|
||||
- 宿舍分配台账 (Accommodations): 57 条 (防混住与单在用约束生效)
|
||||
- 真实考勤流水 (Attendance) : 77 条流水 (含签到、签退与请假修正)
|
||||
========================================================================
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. DMS 智能门禁当前精确状态
|
||||
|
||||
针对 DMS 智能门禁系统,团队已完成详尽技术探测与隔离验证,客观界定如下:
|
||||
|
||||
1. **已验证通过部分 (Contract Verified)**:
|
||||
- 针对文档示例凭据对应的可访问 DMS 环境,已在局域网下打通 HTTP 通信;
|
||||
- 登录鉴权(AUTH=PASS)、Token TTL 机制(7200秒有效)、以及 Cookie Token 存储机制正常运行;
|
||||
- 4 个只读接口连通性正常,外层响应结构符合空列表契约。
|
||||
2. **客观外部阻塞部分 (BLOCKED_EXTERNAL)**:
|
||||
- 该可访问环境下目前**挂载的测试空间与实体门锁数量均为 0**;
|
||||
- 真实空间与门锁行级字段映射尚未在运行时通过真实数据验证;
|
||||
- 真实密码下发变更操作(Mutation)与实体通电门锁硬件属于客观外部依赖,待甲方划拨指定真实测试房间与硬件通电后方可闭环。
|
||||
|
||||
---
|
||||
|
||||
## 4. 结论与指引
|
||||
|
||||
- **系统定性**:当前系统核心业务链路稳定,三角色体验完善,已具备交付沈阳房建公寓段业务老师进行**局域网教务教学试运行**的全部条件;
|
||||
- **后续阅读**:
|
||||
- 需求完成度与待确认项:[02-phase1-status.md](02-phase1-status.md)
|
||||
- 试用环境使用与反馈:[03-shared-trial.md](03-shared-trial.md)
|
||||
- 共享试用账号与角色说明:[06-shared-trial-accounts.md](06-shared-trial-accounts.md)
|
||||
- 未决缺口与外部阻塞:[04-known-gaps.md](04-known-gaps.md)
|
||||
@@ -0,0 +1,67 @@
|
||||
# 02 - 系统业务功能模块全量判定 (Function Modules)
|
||||
|
||||
> **判定原则**:严格基于底层代码实现(Controller / Service / DDL)、自动化测试覆盖与实际浏览器交互判定。
|
||||
> **分类标准**:
|
||||
> - **`IMPLEMENTED`**:代码完全落地、数据库表就绪、经过真实测试验证、具备完整正向主闭环;
|
||||
> - **`PARTIAL`**:部分代码或表结构就绪,但存在未闭环的交互、未授权的业务流转或口径待确认项;
|
||||
> - **`MOCK`**:使用本地假数据或模拟桩进行逻辑联调,未接入真实系统;
|
||||
> - **`BLOCKED_EXTERNAL`**:内部逻辑具备,因外部厂商环境缺少硬件/真实资源造成客观阻塞;
|
||||
> - **`NOT_IMPLEMENTED`**:一期未规划或尚未开始开发。
|
||||
|
||||
---
|
||||
|
||||
## 1. 业务功能模块状态总览表
|
||||
|
||||
| 序号 | 业务模块 | 最终状态判定 | 核心后端控制器 (Controller) | 关联核心物理表 | 关键能力与现状边界 |
|
||||
| :---: | :--- | :---: | :--- | :--- | :--- |
|
||||
| **01** | **教师档案管理** | **`IMPLEMENTED`** | `TrainTeacherController`<br>`TrainTeacherMeController` | `train_teacher`<br>`sys_user` | 档案增删改查、身份证/手机国密脱敏存储、账号自动绑定、教师个人工作台课表。 |
|
||||
| **02** | **学员档案管理** | **`IMPLEMENTED`** | `TrainStudentController`<br>`TrainStudentMeController` | `train_student`<br>`sys_user` | 学员主档管理、身份证密文脱敏、批量导入、学员自服务培训中心(个人课表、考勤、住宿查询)。 |
|
||||
| **03** | **课程资源库** | **`IMPLEMENTED`** | `TrainCourseController` | `train_course`<br>`train_resource` | 理论/实作课程分类管理、标准学时/学分配置、教学大纲、统一资源关联。 |
|
||||
| **04** | **场地与教室** | **`IMPLEMENTED`** | `TrainClassroomInfoController`<br>`TrainTrainingSiteController` | `train_classroom_info`<br>`train_training_site` | 教室与实训场地物理档案管理、容纳人数上限控制、使用状态互斥校验。 |
|
||||
| **05** | **开班计划管理** | **`IMPLEMENTED`** | `TrainPlanController` | `train_plan` | 培训班全生命周期流转(草稿 0 → 已发布 1 → 培训中 2 → 已结训 3)、多班级并行管理。 |
|
||||
| **06** | **开班课程配置** | **`IMPLEMENTED`** | `TrainPlanCourseController` | `train_plan_course` | 一班多课绑定、分配各门课程任课教师、排课先后序号与学时分配。 |
|
||||
| **07** | **课次日程与排课**| **`IMPLEMENTED`** | `TrainLessonController` | `train_lesson` | 课次生成、时段安排;**四维时段冲突校验(教师、教室、学员班级、起止日期范围)**。 |
|
||||
| **08** | **考勤与报到管理**| **`IMPLEMENTED`** | `TrainReportActionController`<br>`TrainStudentCheckinController`<br>`AttendanceController` | `train_class_report`<br>`train_student_checkin`<br>`train_lesson` | 开班现场报到核验、课次签到/签退、教师代签补卡、人工标记缺勤、请假记录。 |
|
||||
| **09** | **住宿房间管理** | **`PARTIAL`** | `TrainDormitoryInfoController`<br>`TrainAccommodationController` | `train_dormitory_info`<br>`train_accommodation` | 房间/床位增删改查、分配住宿、床位重叠校验 (`EX-13`)、防混住约束已实现;<br>⚠️ **已知阻断 `ACCOM-PERM-01`**:入住、退宿、调房未授权 `train_admin`。 |
|
||||
| **10** | **成绩管理 (C03)** | **`PARTIAL`** | `TrainScoreInfoController` | `train_score_info` | 数据库已支持动态科目与基础成绩录入;综合成绩加权计算、教师端打分交互流收敛中。 |
|
||||
| **11** | **统计分析大盘** | **`IMPLEMENTED`** | `TrainAnalysisController` | 聚合多表查询 | 管理驾驶舱看板、考勤专题分析、每日打卡走势、考勤异常 Top 10,**隔离未来课次(0泄漏)**。 |
|
||||
| **12** | **DMS 外部智能门锁**| **`BLOCKED_EXTERNAL`** | `TrainAccessManagementController`<br>`DmsHttpClient` 等 | `train_external_resource_mapping`<br>`train_dorm_auth`<br>`train_external_operation` | 鉴权/Token TTL/Cookie Token/只读API连通已验证;**外部环境 0 房间 0 门锁,物理硬件操作客观受阻**。 |
|
||||
| **13** | **电子班牌设备** | **`PARTIAL` / `MOCK`**| `TrainElectronicBoardController` | `train_electronic_board` | 基础档案 CRUD 已实现;现场物理 IoT 设备通信协议采用模拟桩。 |
|
||||
| **14** | **学员成长画像** | **`PARTIAL`** | `TrainStudentPortraitController` | `train_student`<br>`train_study_duration` | 个人基础档案卡、自主学时累计呈现可用;深度多维雷达图与业务评估模型待甲方定级确认。 |
|
||||
| **15** | **自主学习时长** | **`IMPLEMENTED`** | `TrainStudyDurationController` | `train_study_duration` | 学员线上课时记录、学习时长统计与台账查询。 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 核心模块详细能力边界说明
|
||||
|
||||
### 2.1 住宿管理模块 (`PARTIAL` 状态定性说明)
|
||||
- **已实现能力**:
|
||||
- 宿舍楼栋、楼层、房间、床位档案维护;
|
||||
- 房间性别属性与防男女混住校验;
|
||||
- 学员单在用住宿约束(同一学员同一时段不可多处在住);
|
||||
- 床位重叠冲突业务校验 (`EX-13`,返回标准业务错误提示);
|
||||
- 管理员权限下的分配住宿操作。
|
||||
- **缺失与阻断说明 (`ACCOM-PERM-01`)**:
|
||||
- 前端 `accommodation/index.vue` 的入住与删除按钮配置了 `v-hasPermi="['train:accommodation:edit', 'train:accommodation:remove']"`;
|
||||
- 数据库 `sys_menu` 中未配置 `train:accommodation:remove`;
|
||||
- `train_admin` 角色未被授予 `:edit` 和 `:remove` 权限;
|
||||
- 导致业务管理员账号登录时无法点击入住、退宿与调房操作。
|
||||
|
||||
### 2.2 成绩管理模块 (C03 `PARTIAL` 状态说明)
|
||||
- **已实现能力**:
|
||||
- 物理表 `train_score_info` 包含 `score` 字段及 `>= 0` CHECK 约束;
|
||||
- 后端提供基础增删改查接口;
|
||||
- **待闭环项**:
|
||||
- 多科目加权折算规则(如:理论 40% + 实作 60%);
|
||||
- 教师工作台专属打分与批量录入界面;
|
||||
- 导出最终培训成绩汇总合格单。
|
||||
|
||||
### 2.3 DMS 智能门锁模块 (`BLOCKED_EXTERNAL` 定性说明)
|
||||
- **已打通技术链路**:
|
||||
- 官方标准登录鉴权接口 `/public/rest/third-party-app/token/get` 联调成功,返回 Cookie Token;
|
||||
- TokenManager 实现了 7200 秒 TTL 单例滑动续期与 Single-Flight 并发防抖;
|
||||
- 建筑、楼层、房间、门锁 4 大只读接口完成 HTTP 连通与空结果结构适配;
|
||||
- **客观外部阻塞事实**:
|
||||
- 外部系统当前 `building/list`, `room/list`, `doorlock/list` 返回数据集均为 **空列表 (`[]`)**;
|
||||
- 外部尚未挂接任何实体通电门锁设备;
|
||||
- 生产安全红线严禁在无测试设备授权下调用物理写操作 (`REAL_DMS_MUTATION_COUNT = 0`)。
|
||||
@@ -1,36 +0,0 @@
|
||||
# 02. 一期需求实现状态全景判定 (Phase 1 Status)
|
||||
|
||||
> **最高原则**:**具备共享试用条件 ≠ 一期全部需求正式完成**。
|
||||
> 团队坚持实事求是,严格区分“核心教务已验证能力”与“待业务确认/研发推进中能力”,杜绝虚报与浮夸。
|
||||
|
||||
---
|
||||
|
||||
## 1. 需求落地分类汇总
|
||||
|
||||
根据系统真实代码、数据库落地结构以及自动化 E2E 验证结果,一期规划需求状态精简分类如下:
|
||||
|
||||
| 状态分类 | 包含的核心业务功能 | 现状说明与边界 |
|
||||
| :--- | :--- | :--- |
|
||||
| **`DONE_VERIFIED`**<br>(已完成并验证) | **1. 基础资源**:教师档案、学员主档(国密脱敏)、课程库、教室、实训场地、宿舍房间<br>**2. 教务主链**:开班计划(草稿/发布/结训)、一班多课绑定、参训名册导入、排课四维时段冲突预检<br>**3. 现场执行**:开班报到确认、课次出勤打卡、教师代签与请假修正、自主学时台账<br>**4. 权限与门户**:管理员控制台、教师个人课表工作台、学员个人培训中心、最小权限防越权 | 前后端代码、Kingbase 物理表、自动化测试(331 项)及浏览器 E2E 已全部通过,业务正向主闭环已完全就绪。 |
|
||||
| **`IN_PROGRESS`**<br>(研发推进中) | **成绩管理闭环 (C03)** | 新成绩体系基础表结构已就绪,成绩科目设置、加权得分计算及综合统计正在进行最终代码闭环与页面联调。 |
|
||||
| **`PARTIAL_FUNCTION`**<br>(部分能力具备) | **学员能力画像 (C05)** | 当前具备基础画像能力(档案卡与基础数据概览可用),完整业务范围与后续增强内容仍需继续完善或确认。 |
|
||||
| **`EXTERNAL_BLOCKER`**<br>(外部客观阻塞) | **真实门禁写操作与硬件联动 (DMS)** | 协议通信与只读连通已验证;因真实环境尚未挂载测试房间及门锁硬件通电,物理下发判定为外部客观阻塞。 |
|
||||
| **`CUSTOMER_CONFIRMATION`**<br>(待甲方业务确认) | **业务口径与组织架构归属** | 详见下方清单,涉及学员名册导入模版格式、报到核验现场硬件配备、请假与门禁权限保留策略等。 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 权威需求跟踪入口
|
||||
|
||||
如需查阅每一条需求的详细代码文件位置、SQL 表名、测试用例或具体待确认问题,请点击以下权威文档:
|
||||
|
||||
- 📖 [**一期 PRD V1.0 (业务定义与需求基线)**](../requirements/一期PRD-V1.0.md):一期系统正式业务需求冻结基线,涵盖核心领域对象、业务规则与一期开发边界。
|
||||
- 📋 [**一期需求实现进度表 (逐项核验)**](../requirements/一期需求实现进度表.md):包含域 A~G 共数十项功能点的前后端代码文件、断言证据与下一步建议。
|
||||
- ❓ [**一期甲方需求确认清单 (开会对齐)**](../requirements/甲方需求确认清单.md):系统归纳 P0(核心阻塞 18 项)、P1(业务形态 12 项)、P2(长远规划 8 项) 业务确认表。
|
||||
|
||||
---
|
||||
|
||||
## 3. 验收与交付策略
|
||||
|
||||
1. **共享试用准入**:当前 `DONE_VERIFIED` 覆盖了沈阳房建公寓段开展职工日常集中面授的核心操作,已在局域网开放试用;
|
||||
2. **闭环收口原则**:针对 `IN_PROGRESS`(成绩)和 `PARTIAL_FUNCTION`(画像),研发团队在小版本迭代中收敛闭环;
|
||||
3. **外部硬件解除阻塞**:待甲方明确门锁房间划拨并完成物理连通后,即刻组织现场专项联调验收。
|
||||
@@ -0,0 +1,105 @@
|
||||
# 03 - 数据库架构、迁移链与数据表总账 (Database and Tables)
|
||||
|
||||
> **核心原则**:当前阶段**严格只读,不修改数据库,不清库,不执行数据变更**。
|
||||
> 后续演示重构必须基于本文件定义的迁移链构建纯净演示库:`CLEAN_DEMO_DATABASE`。
|
||||
|
||||
---
|
||||
|
||||
## 1. 数据库基本信息
|
||||
|
||||
- **数据库管理系统 (DBMS)**:国产人大金仓分析型/事务型关系数据库 (KingbaseES V009R003C018)
|
||||
- **数据库兼容模式**:Oracle / PostgreSQL 双模式兼容方言
|
||||
- **默认 Schema**:`public`
|
||||
- **正式综合验收数据库**:`railwaysystem_integrated_qa_20260916`
|
||||
- **当前共享试用数据库**:`training`
|
||||
- **DDL 规范要点**:
|
||||
- 自增主键使用 `bigint GENERATED BY DEFAULT AS IDENTITY` 或业务主键 `varchar(32)`;
|
||||
- 时间类型统一使用 `timestamp`,严禁 MySQL 方言 `DATETIME` 或 `ON UPDATE CURRENT_TIMESTAMP`;
|
||||
- 状态与布尔字段统一使用 `smallint` (0/1);
|
||||
- 字符串必须指定明确编码与长度。
|
||||
|
||||
---
|
||||
|
||||
## 2. 数据库迁移链定义 (Migration Chain)
|
||||
|
||||
系统物理表结构由以下按序执行的迁移脚本链严格定义:
|
||||
|
||||
### 2.1 培训业务核心表迁移 (`RuoYi-Vue/sql/train/v2/`)
|
||||
```text
|
||||
000_preflight.sql -- 预检:数据库版本、权限与方言支持
|
||||
000_tx_capability_probe.sql -- 事务探针:验证显式事务与 DDL 回滚能力
|
||||
001_backup_current_schema.sql -- 架构基线备份 (备份原 V1 表定义)
|
||||
002_create_new_tables.sql -- 核心创建:创建 V2 新增的 8 张培训业务核心表
|
||||
003_alter_master_tables.sql -- 结构变更:对教师、课程、宿舍表扩展字段与约束
|
||||
004_rebuild_business_tables.sql -- 重建业务表:重建学员、班级、课次等核心关联
|
||||
005_constraints.sql -- 完整性约束:外键、CHECK 约束 (单行互斥、分数非负等)
|
||||
006_indexes.sql -- 性能索引:高频查询、排课时段冲突组合索引
|
||||
007_dicts.sql -- 字典数据 (⚠️ 运行中禁止重复执行,仅限全新建库)
|
||||
008_migrate_teacher.sql -- 历史数据迁移:清洗并提升历史教师档案
|
||||
009_drop_legacy_score.sql -- 清理废弃结构:安全下线旧版无权重成绩表
|
||||
010_verify.sql -- 终检验收:断言表结构、外键与索引 100% 合规
|
||||
```
|
||||
|
||||
### 2.2 系统底座与权限治理补丁 (`RuoYi-Vue/sql/system/kingbase/`)
|
||||
```text
|
||||
001_sys_oper_log_cost_time.sql -- 操作日志补充耗时字段
|
||||
002_legacy_analytics_permissions.sql -- 统计分析历史权限调整
|
||||
003_report_attendance_action_permissions.sql -- 现场报到与考勤动作权限
|
||||
004_rbac_identity_binding.sql -- 教师与学员用户身份强绑定支持
|
||||
005_training_roles_permissions.sql -- 培训业务角色细粒度权限配置
|
||||
006_accommodation_history_constraint.sql -- 住宿历史单在用唯一约束
|
||||
008_external_resource_operation.sql -- 外部系统操作流水表结构
|
||||
009_dorm_authorization_orchestration.sql -- 宿舍门禁编排中间状态表
|
||||
010_dms_access_management_permissions.sql -- DMS 门禁管理端菜单权限
|
||||
011_teacher_student_remove_permissions.sql -- 教师与学员安全删除权限隔离
|
||||
012_analytics_v1_permissions.sql -- 分析大盘新版看板菜单权限
|
||||
013_interaction_route_cleanup.sql -- 交互路由与无效菜单项清理
|
||||
014_dms_access_safety_and_accommodation_permissions.sql -- DMS 安全防线与住宿菜单完善
|
||||
015_dms_package_a_hardening.sql -- DMS Package A 门禁强化脚本
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 全量业务数据表总账 (21 张 `train_*` 表)
|
||||
|
||||
| 表名 (TABLE_NAME) | 物理主键类型 | 表职责说明 (PURPOSE) | 核心外键与关键关联 (RELATIONSHIPS) |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| `train_teacher` | `VARCHAR(32)` | 授课教师档案主表,记录姓名、工号、职称、身份证(国密密文) | `sys_user.user_id` (账号绑定关系) |
|
||||
| `train_student` | `VARCHAR(32)` | 参训学员主档表,全周期记录学员信息、单位、手机与国密身份证 | `sys_user.user_id` (账号绑定关系) |
|
||||
| `train_course` | `VARCHAR(32)` | 课程标准库主表,记录课程编号、名称、理论/实作类别与基准学时 | 被 `train_plan_course`、`train_lesson` 引用 |
|
||||
| `train_classroom_info` | `BIGINT (ID)` | 教学教室信息表,记录教室编号、楼栋、容纳人数与多媒体配备 | 被 `train_lesson` 引用 (教室时段互斥) |
|
||||
| `train_training_site` | `BIGINT (ID)` | 实训演练场地表,记录室外/室内实训工区、容量与安全规范 | 被 `train_lesson` 引用 (场地时段互斥) |
|
||||
| `train_plan` | `VARCHAR(32)` | 培训开班计划主表,控制培训项目全生命周期与时间跨度 | 驱动 `train_plan_course`、`train_enrollment` |
|
||||
| `train_plan_course` | `BIGINT (ID)` | 班级课程关系表 (N:M),指定某培训班开设哪门课及指定授课教师 | 关联 `plan_id`、`c_id`、`t_id` |
|
||||
| `train_enrollment` | `BIGINT (ID)` | 参训人员名册表,定义哪个学员参加哪期培训班及参训状态 | 关联 `plan_id`、`s_id` (状态: 待报到/在训/结训) |
|
||||
| `train_lesson` | `BIGINT (ID)` | 课次日程排课表,系统排课核心表,记录每次课的具体时段与地点 | 关联 `plan_id`、`plan_course_id`、`t_id`、教室/场地 |
|
||||
| `train_student_checkin` | `BIGINT (ID)` | 课堂考勤打卡流水表,记录学员在课次的签到、签退与出勤状态 | 关联 `lesson_id`、`s_id` (状态: 0缺勤/1正常/2迟到/3早退/4请假) |
|
||||
| `train_class_report` | `BIGINT (ID)` | 现场报到核验记录表,学员到校开班报到凭据流水 | 关联 `enrollment_id`、`s_id`、`plan_id` |
|
||||
| `train_dormitory_info` | `BIGINT (ID)` | 宿舍房间主表,记录宿舍楼栋、房号、性别分类、总床位数与在用数 | 被 `train_accommodation` 引用 |
|
||||
| `train_accommodation` | `BIGINT (ID)` | 学员住宿分配台账表,记录床位分配、入住时间、退宿时间与状态 | 关联 `s_id`、`dorm_id`、`plan_id` (状态: 预分配0/在住1/已退2) |
|
||||
| `train_score_info` | `BIGINT (ID)` | 学员培训成绩表,记录各科目考评得分与最终成绩评定 | 关联 `plan_id`、`s_id`、`c_id` (score >= 0 CHECK) |
|
||||
| `train_study_duration` | `BIGINT (ID)` | 自主学习时长流水表,记录学员在线研读教学资料的计时时长 | 关联 `s_id`、`resource_id` |
|
||||
| `train_resource` | `VARCHAR(32)` | 统一教学资源主表,存放课件、视频、教材电子档等资源元数据 | 被 `train_course_resource` 引用 |
|
||||
| `train_course_resource`| `BIGINT (ID)` | 课程与教学资源关联表 (N:M) | 关联 `c_id`、`resource_id` |
|
||||
| `train_electronic_board`| `BIGINT (ID)` | 电子班牌硬件设备信息表,记录设备 MAC、IP、挂接教室与通信时间 | 关联 `classroom_id` |
|
||||
| `train_external_resource_mapping` | `BIGINT (ID)` | 外部资源映射表,记录本地宿舍房间与外部 DMS 空间/锁具的映射 | 关联 `local_resource_id`、`external_id` (DMS) |
|
||||
| `train_dorm_auth` | `BIGINT (ID)` | 门禁卡/密码授权编排状态表,维护门锁下发授权生命周期 | 关联 `accommodation_id`、`external_auth_id` |
|
||||
| `train_external_operation` | `BIGINT (ID)` | 外部异步操作流水表,记录向 DMS 下发密码/撤销的异步 operationId | 关联 `auth_id`、`operation_type`、重试次数 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 后续纯净演示库重建计划 (`CLEAN_DEMO_DATABASE`)
|
||||
|
||||
为彻底消除历史演示留存的脏数据、断言污染与测试垃圾,后续正式 Demo 执行前**严禁直接使用已污染的旧库**,必须按以下规程建立纯净演示数据库:
|
||||
|
||||
```text
|
||||
[CLEAN_DEMO_DATABASE 重建 SOP]
|
||||
1. 在 KingbaseES 实例新建独立数据库:training_demo_clean
|
||||
2. 按序执行 2.1 节 000~010 全量业务迁移脚本 (确保 0 errors)
|
||||
3. 按序执行 2.2 节 001~015 系统与权限增量补丁
|
||||
4. 执行全新字典与菜单种子导入
|
||||
5. 灌入经过严格卫生校验的确定性业务种子数据 (Deterministic Demo Seed):
|
||||
- 标准教师 5 名、学员 30 名、课程 6 门、教室 4 间、宿舍 8 间
|
||||
- 2 期标准培训班(1 期已结训供查历史,1 期正在进行供现场演示)
|
||||
- 保证 100% 前端 UI 具有真实有效数据,无孤儿数据,无外键断裂
|
||||
```
|
||||
@@ -1,49 +0,0 @@
|
||||
# 03. 局域网共享试用指南 (Shared Trial Guide)
|
||||
|
||||
> **重要性质声明**:
|
||||
> 1. 本环境为面向沈阳房建公寓段业务主管、教务人员与授课教员的**内部共享试用环境 (Shared Trial Environment)**;
|
||||
> 2. **本环境不是最终正式生产环境**,请勿录入未经授权的敏感业务核心数据;
|
||||
> 3. 代码部署分支为 `feat/cicd-pipeline`,请勿随意向该分支推送未经验证的代码。
|
||||
|
||||
---
|
||||
|
||||
## 1. 试用环境访问信息
|
||||
|
||||
- **系统访问地址**:[http://192.168.139.230:8082/](http://192.168.139.230:8082/)
|
||||
- **网络准入要求**:需接入单位办公内网或通过指定局域网网段直接访问
|
||||
- **数据源基线**:已从综合验收基线(Integrated QA)全量提升导入至共享试用数据库 `training`,自带共享试用发布基线数据(2026-09-17 快照:13 计划、20 教师、200 学员、24 课程、118 课次、242 选课、57 住宿、77 考勤);上述数据为发布快照,试用期间数据会持续变化,实时数量以 training 数据库为准。
|
||||
|
||||
---
|
||||
|
||||
## 2. 账号体系与角色类型
|
||||
|
||||
系统严格划分三类业务角色,支持针对性体验。详细账号分配、统一测试登录密码及推荐体验步骤请参见:👉 [**共享试用账号说明 (06-shared-trial-accounts.md)**](06-shared-trial-accounts.md)。
|
||||
|
||||
| 角色类型 | 代表账号身份 | 试用推荐场景 |
|
||||
| :--- | :--- | :--- |
|
||||
| **系统管理员 (Admin)** | 教务主管账号 | 登录后进入全功能控制台:体验新建培训计划、配置多门课程、导入参训学员、执行四维冲突排课、现场扫码/刷卡报到核验、宿舍房间分配等。 |
|
||||
| **授课教师 (Teacher)** | 专业主讲教员账号 | 登录后自动进入“教师工作台”:直观查阅个人本周授课日程、点击课次查看应到学员名册、进行课堂签到签退核验及代签补卡。 |
|
||||
| **参训学员 (Student)** | 在训职工学员账号 | 登录后自动进入“学员培训中心”:查阅本人参训计划、课表安排、个人历史考勤打卡记录、以及分配入住的宿舍房间。 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 试用反馈与问题流转流程
|
||||
|
||||
为确保试用反馈高效闭环,请按以下流程反馈问题与建议:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["试用人员发现问题 / 提出需求"] --> B["记录现象截图与复现步骤"]
|
||||
B --> C["提交至项目微信群 / 试用问题登记表"]
|
||||
C --> D["研发团队定级分类"]
|
||||
D --> E1["🔴 BUG (功能缺陷)<br/>即时排查,进入热修复流程"]
|
||||
D --> E2["🟡 UX (操作体验/展示优化)<br/>纳入小版本 UI 优化"]
|
||||
D --> E3["🔵 KNOWN_GAP (已知缺口)<br/>对齐 C03/C05 计划进度"]
|
||||
D --> E4["⚪ REQUIREMENT (新增需求)<br/>登记入《甲方需求确认清单》待甲方定级"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. 试用注意事项
|
||||
1. **请勿执行清库或破坏性测试**:试用数据已形成完整的教学业务流转闭环,请在现有数据或新增独立计划基础上开展测试;
|
||||
2. **硬件联动说明**:若在界面上触发智能门锁相关操作,系统当前采用安全模拟与受控状态机流转,不会对外部物理设备产生破坏性冲击。
|
||||
@@ -0,0 +1,132 @@
|
||||
# 04 - 系统全量 API 接口总账 (API Inventory)
|
||||
|
||||
> **审计基准**:扫描 `RuoYi-Vue/ruoyi-admin/src/main/java/com/ruoyi/web/controller` 下全部 Spring MVC 控制器。
|
||||
> **数据源规范 (SOURCE)**:必须且只能归为以下四类之一:
|
||||
> 1. `RAILWAYSYSTEM_INTERNAL`:本系统内部业务与系统基础 API;
|
||||
> 2. `CLIENT_PROVIDED`:甲方或外部单位正式提供的真实运行 API;
|
||||
> 3. `THIRD_PARTY`:通用第三方公有服务接口;
|
||||
> 4. `MOCK`:本地自建的模拟桩接口。
|
||||
|
||||
---
|
||||
|
||||
## 1. 核心培训业务 API 账本 (`TRAIN_BUSINESS`)
|
||||
|
||||
| 接口路径 (API) | 请求方式 (METHOD) | 数据来源 (SOURCE) | 所属模块 (MODULE) | 实现状态 | 承载控制器 (CONTROLLER) | 关联数据库表 (TABLE) | 前端UI调用 (USED_BY_UI) |
|
||||
| :--- | :---: | :---: | :---: | :---: | :--- | :--- | :---: |
|
||||
| `/train/teacher/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 师资管理 | `IMPLEMENTED` | `TrainTeacherController` | `train_teacher` | YES |
|
||||
| `/train/teacher/{tId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 师资管理 | `IMPLEMENTED` | `TrainTeacherController` | `train_teacher` | YES |
|
||||
| `/train/teacher` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 师资管理 | `IMPLEMENTED` | `TrainTeacherController` | `train_teacher` | YES |
|
||||
| `/train/teacher` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 师资管理 | `IMPLEMENTED` | `TrainTeacherController` | `train_teacher` | YES |
|
||||
| `/train/teacher/{tIds}` | `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 师资管理 | `IMPLEMENTED` | `TrainTeacherController` | `train_teacher` | YES |
|
||||
| `/train/teacher/export` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 师资管理 | `IMPLEMENTED` | `TrainTeacherController` | `train_teacher` | YES |
|
||||
| `/train/me/teacher/plans` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 教师工作台 | `IMPLEMENTED` | `TrainTeacherMeController` | `train_plan` | YES |
|
||||
| `/train/me/teacher` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 教师工作台 | `IMPLEMENTED` | `TrainTeacherMeController` | `train_lesson` | YES |
|
||||
| `/train/me/teacher/students` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 教师工作台 | `IMPLEMENTED` | `TrainTeacherMeController` | `train_enrollment` | YES |
|
||||
| `/train/me/teacher/lessons/{lessonId}/attendance` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 教师工作台 | `IMPLEMENTED` | `TrainTeacherMeController` | `train_student_checkin` | YES |
|
||||
| `/train/student/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 学员管理 | `IMPLEMENTED` | `TrainStudentController` | `train_student` | YES |
|
||||
| `/train/student/{sId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 学员管理 | `IMPLEMENTED` | `TrainStudentController` | `train_student` | YES |
|
||||
| `/train/student` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 学员管理 | `IMPLEMENTED` | `TrainStudentController` | `train_student` | YES |
|
||||
| `/train/student` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 学员管理 | `IMPLEMENTED` | `TrainStudentController` | `train_student` | YES |
|
||||
| `/train/student/{sIds}` | `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 学员管理 | `IMPLEMENTED` | `TrainStudentController` | `train_student` | YES |
|
||||
| `/train/student/export` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 学员管理 | `IMPLEMENTED` | `TrainStudentController` | `train_student` | YES |
|
||||
| `/train/student/importTemplate` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 学员管理 | `IMPLEMENTED` | `TrainStudentController` | `train_student` | YES |
|
||||
| `/train/student/importData` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 学员管理 | `IMPLEMENTED` | `TrainStudentController` | `train_student` | YES |
|
||||
| `/train/me/student/enrollments` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 学员中心 | `IMPLEMENTED` | `TrainStudentMeController` | `train_enrollment` | YES |
|
||||
| `/train/me/student/timetable` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 学员中心 | `IMPLEMENTED` | `TrainStudentMeController` | `train_lesson` | YES |
|
||||
| `/train/me/student/report` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 学员中心 | `IMPLEMENTED` | `TrainStudentMeController` | `train_class_report` | YES |
|
||||
| `/train/me/student/attendance` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 学员中心 | `IMPLEMENTED` | `TrainStudentMeController` | `train_student_checkin` | YES |
|
||||
| `/train/me/student/duration` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 学员中心 | `IMPLEMENTED` | `TrainStudentMeController` | `train_study_duration` | YES |
|
||||
| `/train/me/student/portrait` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 学员中心 | `IMPLEMENTED` | `TrainStudentMeController` | `train_student` | YES |
|
||||
| `/train/course/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 课程库 | `IMPLEMENTED` | `TrainCourseController` | `train_course` | YES |
|
||||
| `/train/course/{cId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 课程库 | `IMPLEMENTED` | `TrainCourseController` | `train_course` | YES |
|
||||
| `/train/course` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 课程库 | `IMPLEMENTED` | `TrainCourseController` | `train_course` | YES |
|
||||
| `/train/course` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 课程库 | `IMPLEMENTED` | `TrainCourseController` | `train_course` | YES |
|
||||
| `/train/course/{cIds}` | `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 课程库 | `IMPLEMENTED` | `TrainCourseController` | `train_course` | YES |
|
||||
| `/train/classroom/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 设施管理 | `IMPLEMENTED` | `TrainClassroomInfoController` | `train_classroom_info` | YES |
|
||||
| `/train/classroom/{classRoomId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 设施管理 | `IMPLEMENTED` | `TrainClassroomInfoController` | `train_classroom_info` | YES |
|
||||
| `/train/classroom` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 设施管理 | `IMPLEMENTED` | `TrainClassroomInfoController` | `train_classroom_info` | YES |
|
||||
| `/train/classroom` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 设施管理 | `IMPLEMENTED` | `TrainClassroomInfoController` | `train_classroom_info` | YES |
|
||||
| `/train/classroom/{classRoomIds}`| `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 设施管理 | `IMPLEMENTED` | `TrainClassroomInfoController` | `train_classroom_info` | YES |
|
||||
| `/train/training-site/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 设施管理 | `IMPLEMENTED` | `TrainTrainingSiteController` | `train_training_site` | YES |
|
||||
| `/train/training-site/{siteId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 设施管理 | `IMPLEMENTED` | `TrainTrainingSiteController` | `train_training_site` | YES |
|
||||
| `/train/training-site` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 设施管理 | `IMPLEMENTED` | `TrainTrainingSiteController` | `train_training_site` | YES |
|
||||
| `/train/training-site` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 设施管理 | `IMPLEMENTED` | `TrainTrainingSiteController` | `train_training_site` | YES |
|
||||
| `/train/training-site/{siteIds}`| `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 设施管理 | `IMPLEMENTED` | `TrainTrainingSiteController` | `train_training_site` | YES |
|
||||
| `/train/plans` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 培训计划 | `IMPLEMENTED` | `TrainPlanController` | `train_plan` | YES |
|
||||
| `/train/plans/{planId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 培训计划 | `IMPLEMENTED` | `TrainPlanController` | `train_plan` | YES |
|
||||
| `/train/plans` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 培训计划 | `IMPLEMENTED` | `TrainPlanController` | `train_plan` | YES |
|
||||
| `/train/plans/{planId}` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 培训计划 | `IMPLEMENTED` | `TrainPlanController` | `train_plan` | YES |
|
||||
| `/train/plans/{planIds}` | `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 培训计划 | `IMPLEMENTED` | `TrainPlanController` | `train_plan` | YES |
|
||||
| `/train/plans/{planId}/publish` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 培训计划 | `IMPLEMENTED` | `TrainPlanController` | `train_plan` | YES |
|
||||
| `/train/plans/{planId}/start` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 培训计划 | `IMPLEMENTED` | `TrainPlanController` | `train_plan` | YES |
|
||||
| `/train/plans/{planId}/complete`| `POST` | `RAILWAYSYSTEM_INTERNAL` | 培训计划 | `IMPLEMENTED` | `TrainPlanController` | `train_plan` | YES |
|
||||
| `/train/plans/{planId}/courses` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 计划课程 | `IMPLEMENTED` | `TrainPlanCourseController` | `train_plan_course` | YES |
|
||||
| `/train/plans/{planId}/courses` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 计划课程 | `IMPLEMENTED` | `TrainPlanCourseController` | `train_plan_course` | YES |
|
||||
| `/train/plans/{planId}/courses/{planCourseId}` | `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 计划课程 | `IMPLEMENTED` | `TrainPlanCourseController` | `train_plan_course` | YES |
|
||||
| `/train/plans/{planId}/enrollments` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 参训名单 | `IMPLEMENTED` | `TrainEnrollmentController` | `train_enrollment` | YES |
|
||||
| `/train/plans/{planId}/enrollments` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 参训名单 | `IMPLEMENTED` | `TrainEnrollmentController` | `train_enrollment` | YES |
|
||||
| `/train/plans/{planId}/enrollments/batch` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 参训名单 | `IMPLEMENTED` | `TrainEnrollmentController` | `train_enrollment` | YES |
|
||||
| `/train/enrollments/{enrollmentId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 参训名单 | `IMPLEMENTED` | `TrainEnrollmentController` | `train_enrollment` | YES |
|
||||
| `/train/enrollments/{enrollmentId}/status` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 参训名单 | `IMPLEMENTED` | `TrainEnrollmentController` | `train_enrollment` | YES |
|
||||
| `/train/enrollments/{enrollmentId}` | `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 参训名单 | `IMPLEMENTED` | `TrainEnrollmentController` | `train_enrollment` | YES |
|
||||
| `/train/plans/{planId}/lessons` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 排课管理 | `IMPLEMENTED` | `TrainLessonController` | `train_lesson` | YES |
|
||||
| `/train/plans/{planId}/lessons` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 排课管理 | `IMPLEMENTED` | `TrainLessonController` | `train_lesson` | YES |
|
||||
| `/train/lessons/{lessonId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 排课管理 | `IMPLEMENTED` | `TrainLessonController` | `train_lesson` | YES |
|
||||
| `/train/lessons/{lessonId}` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 排课管理 | `IMPLEMENTED` | `TrainLessonController` | `train_lesson` | YES |
|
||||
| `/train/lessons/{lessonId}` | `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 排课管理 | `IMPLEMENTED` | `TrainLessonController` | `train_lesson` | YES |
|
||||
| `/train/lessons/check-conflict` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 排课管理 | `IMPLEMENTED` | `TrainLessonController` | `train_lesson` | YES |
|
||||
| `/train/lessons/scheduling-options` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 排课管理 | `IMPLEMENTED` | `TrainLessonController` | `train_classroom_info` | YES |
|
||||
| `/train/plans/{planId}/timetable` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 排课管理 | `IMPLEMENTED` | `TrainLessonController` | `train_lesson` | YES |
|
||||
| `/train/enrollments/{enrollmentId}/report` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 现场报到 | `IMPLEMENTED` | `TrainReportActionController` | `train_class_report` | YES |
|
||||
| `/train/report/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 现场报到 | `IMPLEMENTED` | `TrainClassReportController` | `train_class_report` | YES |
|
||||
| `/train/checkin/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 考勤流水 | `IMPLEMENTED` | `TrainStudentCheckinController` | `train_student_checkin` | YES |
|
||||
| `/train/attendance/lessons/{lessonId}/checkins` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 考勤流水 | `IMPLEMENTED` | `AttendanceController` | `train_student_checkin` | YES |
|
||||
| `/train/attendance/proxy-checkin` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 考勤流水 | `IMPLEMENTED` | `AttendanceController` | `train_student_checkin` | YES |
|
||||
| `/train/attendance/mark-absent` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 考勤流水 | `IMPLEMENTED` | `AttendanceController` | `train_student_checkin` | YES |
|
||||
| `/train/dormitory/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 宿舍管理 | `IMPLEMENTED` | `TrainDormitoryInfoController` | `train_dormitory_info` | YES |
|
||||
| `/train/dormitory/{dormId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 宿舍管理 | `IMPLEMENTED` | `TrainDormitoryInfoController` | `train_dormitory_info` | YES |
|
||||
| `/train/dormitory` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 宿舍管理 | `IMPLEMENTED` | `TrainDormitoryInfoController` | `train_dormitory_info` | YES |
|
||||
| `/train/dormitory` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 宿舍管理 | `IMPLEMENTED` | `TrainDormitoryInfoController` | `train_dormitory_info` | YES |
|
||||
| `/train/dormitory/{dormIds}` | `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 宿舍管理 | `IMPLEMENTED` | `TrainDormitoryInfoController` | `train_dormitory_info` | YES |
|
||||
| `/train/accommodation/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 住宿安排 | `IMPLEMENTED` | `TrainAccommodationController` | `train_accommodation` | YES |
|
||||
| `/train/accommodation/{accommodationId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 住宿安排 | `IMPLEMENTED` | `TrainAccommodationController` | `train_accommodation` | YES |
|
||||
| `/train/accommodation` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 住宿安排 | `IMPLEMENTED` | `TrainAccommodationController` | `train_accommodation` | YES |
|
||||
| `/train/accommodation/check-in/{id}` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 住宿安排 | `PARTIAL` (ACCOM-PERM-01) | `TrainAccommodationController` | `train_accommodation` | YES |
|
||||
| `/train/accommodation/check-out/{id}`| `PUT` | `RAILWAYSYSTEM_INTERNAL` | 住宿安排 | `PARTIAL` (ACCOM-PERM-01) | `TrainAccommodationController` | `train_accommodation` | YES |
|
||||
| `/train/accommodation/transfer` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 住宿安排 | `PARTIAL` (ACCOM-PERM-01) | `TrainAccommodationController` | `train_accommodation` | YES |
|
||||
| `/train/score/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 成绩管理 | `IMPLEMENTED` | `TrainScoreInfoController` | `train_score_info` | YES |
|
||||
| `/train/score/{scoreId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 成绩管理 | `IMPLEMENTED` | `TrainScoreInfoController` | `train_score_info` | YES |
|
||||
| `/train/score` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 成绩管理 | `IMPLEMENTED` | `TrainScoreInfoController` | `train_score_info` | YES |
|
||||
| `/train/score` | `PUT` | `RAILWAYSYSTEM_INTERNAL` | 成绩管理 | `IMPLEMENTED` | `TrainScoreInfoController` | `train_score_info` | YES |
|
||||
| `/train/score/{scoreIds}` | `DELETE` | `RAILWAYSYSTEM_INTERNAL` | 成绩管理 | `IMPLEMENTED` | `TrainScoreInfoController` | `train_score_info` | YES |
|
||||
| `/train/analysis/dashboard/overview` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 统计分析 | `IMPLEMENTED` | `TrainAnalysisController` | 聚合多表 | YES |
|
||||
| `/train/analysis/dashboard/charts` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 统计分析 | `IMPLEMENTED` | `TrainAnalysisController` | 聚合多表 | YES |
|
||||
| `/train/analysis/attendance/summary` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 统计分析 | `IMPLEMENTED` | `TrainAnalysisController` | 聚合多表 | YES |
|
||||
| `/train/analysis/attendance/charts` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 统计分析 | `IMPLEMENTED` | `TrainAnalysisController` | 聚合多表 | YES |
|
||||
| `/train/analysis/portrait/student-360/{studentId}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 统计分析 | `IMPLEMENTED` | `TrainAnalysisController` | 聚合多表 | YES |
|
||||
| `/train/access/mapping/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 门禁集成 | `IMPLEMENTED` | `TrainAccessManagementController` | `train_external_resource_mapping` | YES |
|
||||
| `/train/access/auth/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 门禁集成 | `IMPLEMENTED` | `TrainAccessManagementController` | `train_dorm_auth` | YES |
|
||||
| `/train/access/operation/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 门禁集成 | `IMPLEMENTED` | `TrainAccessManagementController` | `train_external_operation` | YES |
|
||||
| `/train/access/capability` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 门禁集成 | `IMPLEMENTED` | `TrainAccessManagementController` | N/A | YES |
|
||||
| `/train/access/issue` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 门禁集成 | `BLOCKED_EXTERNAL` | `TrainAccessManagementController` | `train_dorm_auth` | YES |
|
||||
| `/train/access/revoke` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 门禁集成 | `BLOCKED_EXTERNAL` | `TrainAccessManagementController` | `train_dorm_auth` | YES |
|
||||
| `/train/binding/teachers/bindable-users` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 身份绑定 | `IMPLEMENTED` | `TrainAccountBindingAdminController` | `sys_user` | YES |
|
||||
| `/train/binding/teachers/{teacherId}/bind` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 身份绑定 | `IMPLEMENTED` | `TrainAccountBindingAdminController` | `train_teacher` | YES |
|
||||
| `/train/binding/students/bindable-users` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 身份绑定 | `IMPLEMENTED` | `TrainAccountBindingAdminController` | `sys_user` | YES |
|
||||
| `/train/binding/students/{studentId}/bind` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 身份绑定 | `IMPLEMENTED` | `TrainAccountBindingAdminController` | `train_student` | YES |
|
||||
|
||||
---
|
||||
|
||||
## 2. 系统核心底座 API (`SYSTEM`)
|
||||
|
||||
| 接口路径 (API) | 请求方式 (METHOD) | 数据来源 (SOURCE) | 所属模块 (MODULE) | 实现状态 | 承载控制器 (CONTROLLER) | 关联数据库表 (TABLE) | 前端UI调用 (USED_BY_UI) |
|
||||
| :--- | :---: | :---: | :---: | :---: | :--- | :--- | :---: |
|
||||
| `/login` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 鉴权认证 | `IMPLEMENTED` | `SysLoginController` | `sys_user` | YES |
|
||||
| `/logout` | `POST` | `RAILWAYSYSTEM_INTERNAL` | 鉴权认证 | `IMPLEMENTED` | `SysLoginController` | Redis | YES |
|
||||
| `/captchaImage` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 鉴权认证 | `IMPLEMENTED` | `CaptchaController` | Redis | YES |
|
||||
| `/getInfo` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 鉴权认证 | `IMPLEMENTED` | `SysLoginController` | `sys_user` / `sys_role` | YES |
|
||||
| `/getRouters` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 权限路由 | `IMPLEMENTED` | `SysLoginController` | `sys_menu` | YES |
|
||||
| `/system/user/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 用户管理 | `IMPLEMENTED` | `SysUserController` | `sys_user` | YES |
|
||||
| `/system/role/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 角色管理 | `IMPLEMENTED` | `SysRoleController` | `sys_role` | YES |
|
||||
| `/system/menu/list` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 菜单管理 | `IMPLEMENTED` | `SysMenuController` | `sys_menu` | YES |
|
||||
| `/system/dict/data/type/{dictType}` | `GET` | `RAILWAYSYSTEM_INTERNAL` | 字典管理 | `IMPLEMENTED` | `SysDictDataController` | `sys_dict_data` | YES |
|
||||
@@ -1,35 +0,0 @@
|
||||
# 04. 内部已知缺口与外部阻塞清单 (Known Gaps)
|
||||
|
||||
> **透明度原则**:所有历史已修复缺陷已从本清单移出;本文件仅客观记录**当前尚未完全闭环的内部业务缺口**与**客观外部依赖项**,供研发排期与客户沟通时对照。
|
||||
|
||||
---
|
||||
|
||||
## 1. 内部研发已知缺口 (Internal Gaps)
|
||||
|
||||
| 编号 | 模块 / 缺口项 | 当前实际状态 | 预期差距与原因说明 | 详细依据文档 |
|
||||
| :---: | :--- | :---: | :--- | :--- |
|
||||
| **G-01** | **成绩管理闭环 (C03)** | `IN_PROGRESS`<br>(推进中) | 物理数据库支持动态科目与权重设计已落地;一期完整正向评分流(教师端录入得分、加权自动折算、结业成绩汇总台账)前端交互正处于最后收敛阶段。 | [Round 3B 成绩能力评估](../reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/score-current-capability.md) |
|
||||
| **G-02** | **学员画像能力 (C05)** | `PARTIAL_FUNCTION`<br>(部分能力) | `/portrait` 页面中基础档案与学时概览可用;当前具备基础画像能力,完整业务范围与后续增强内容仍需继续完善或确认。 | [Round 3B 画像能力评估](../reports/integrated-acceptance/INT_QA_R3B_20260917_094500/round-3b/portrait-current-capability.md) |
|
||||
|
||||
---
|
||||
|
||||
## 2. 外部客观阻塞事项 (External Blockers)
|
||||
|
||||
| 编号 | 外部依赖项 | 当前判定 | 阻塞原因与解除条件 | 详细依据文档 |
|
||||
| :---: | :--- | :---: | :--- | :--- |
|
||||
| **B-01** | **DMS 真实空间与门锁行级映射** | `BLOCKED_EXTERNAL` | 文档示例凭据对应的 DMS 局域网环境认证连通通过,但该环境内挂载的房间与门锁资源数量均为 0,缺少真实行级数据以在运行时验证行级字段映射契约。<br>**解除条件**:厂商向测试环境分配真实房间数据。 | [DMS 终检状态报告](../reports/integrated-acceptance/FINAL_PHASE1_20260917_101044/dms-final-status.md) |
|
||||
| **B-02** | **DMS 真实写操作变更 (Mutation)** | `BLOCKED_EXTERNAL` | 密码下发与远程撤权接口在本地及 Mock 环境测试通过;在无真实测试房间挂载下,禁止向未知外部系统发起真实写操作。<br>**解除条件**:获得正式授权的测试门锁设备标识。 | [DMS 外部阻塞清单](../reports/integrated-acceptance/FINAL_PHASE1_20260917_101044/external-blockers.md) |
|
||||
| **B-03** | **DMS 物理硬件与实体通电** | `BLOCKED_EXTERNAL` | 缺少现场实体通电门锁与物理沙箱,无法验证物理刷卡开门或密码键盘实际响应。<br>**解除条件**:现场硬件通电联调。 | [DMS 外部阻塞清单](../reports/integrated-acceptance/FINAL_PHASE1_20260917_101044/external-blockers.md) |
|
||||
|
||||
---
|
||||
|
||||
## 3. 甲方待确认事项 (Customer Confirmations)
|
||||
|
||||
目前有若干业务细节形态需要沈阳房建公寓段业务老师明确:
|
||||
1. **学员档案批量导入模版**:确认标准 Excel 表头字段口径与必填项;
|
||||
2. **现场报到主交互设备**:确认是一期现场电脑人工点击确认,还是外接读卡器或扫码枪;
|
||||
3. **住宿分配颗粒度**:确认一期排宿精确到具体房间号,还是必须精确到固定床位编号;
|
||||
4. **学员请假与门禁权限保留策略**:确认请假期间是否保留宿舍进出权限(当前系统默认策略:保留进门权限);
|
||||
5. **考勤统计口径与分母待确认项**:确认请假是否计入出勤率分母、请假是否计入异常排行、待报到学员应到课次起算规则等(详见 [考勤统计语义与指标口径规范](07-analytics-attendance-semantics.md))。
|
||||
|
||||
👉 详细确认清单请查阅:[甲方需求确认清单 (P0/P1/P2)](../requirements/甲方需求确认清单.md)。
|
||||
@@ -0,0 +1,41 @@
|
||||
# 05 - 甲方与外部接口状态清单 (Client API Status)
|
||||
|
||||
> **最高原则**:**严禁将模拟桩 (Mock) 误报为真实在线 (REAL_LIVE)!**
|
||||
> 本文件仅收录甲方、外部硬件厂商或第三方提供的外部接口,客观记录网络连通、鉴权及数据可用性真实状态。
|
||||
> **安全红线**:当前阶段**严禁发起任何破坏性写操作 (Mutation)**。
|
||||
|
||||
---
|
||||
|
||||
## 1. 外部接口状态枚举定义
|
||||
|
||||
- **`CLIENT_REAL_LIVE`**:外部真实网络畅通、账号鉴权通过、只读调用成功并返回符合契约的数据结构;
|
||||
- **`CLIENT_REAL_AUTH_BLOCKED`**:外部网络可达,但因密钥错误、账号锁定或缺少权限被 401/403 阻断;
|
||||
- **`CLIENT_REAL_UNREACHABLE`**:外部网络不通、连接超时、域名未解析或接口已被外部下线;
|
||||
- **`NOT_YET_TESTED`**:代码已编写适配器,但尚未在当前真实网络中发起调用,或受安全红线禁止调用;
|
||||
- **`MOCK_SIMULATION`**:无外部真实服务支撑,当前完全由本地假数据桩或仿真测试套件驱动。
|
||||
|
||||
---
|
||||
|
||||
## 2. 外部接口状态全量盘点表
|
||||
|
||||
| 序号 | 外部接口名称 | 协议与端点 (API ENDPOINT) | 提供方 (PROVIDER) | 真实状态判定 (STATUS) | 真实返回特征与依据 | 破坏性风险与限制 |
|
||||
| :---: | :--- | :--- | :--- | :---: | :--- | :--- |
|
||||
| **01** | **DMS 第三方应用凭据获取** | `POST /public/rest/third-party-app/token/get` | DMS 门锁厂商平台 | **`CLIENT_REAL_LIVE`** | 局域网真实环境探测通过;凭据有效返回 Cookie Token 与 7200 秒 TTL,支持并发 DCL 单例刷新。 | 只读鉴权,无破坏性风险。 |
|
||||
| **02** | **DMS 建筑空间列表查询** | `POST /rest/place/building/list` | DMS 门锁厂商平台 | **`CLIENT_REAL_LIVE`** | 鉴权后网络可达;返回 HTTP 200,响应结构包含 code/data,**当前实际返回数据量为 0 (`[]`)**。 | 只读查询,安全。 |
|
||||
| **03** | **DMS 楼层空间列表查询** | `POST /rest/place/floor/list` | DMS 门锁厂商平台 | **`CLIENT_REAL_LIVE`** | 鉴权后网络可达;返回 HTTP 200,**当前实际返回数据量为 0 (`[]`)**。 | 只读查询,安全。 |
|
||||
| **04** | **DMS 房间空间列表查询** | `POST /rest/place/room/list` | DMS 门锁厂商平台 | **`CLIENT_REAL_LIVE`** | 鉴权后网络可达;返回 HTTP 200,**当前实际返回数据量为 0 (`[]`)**。 | 只读查询,安全。 |
|
||||
| **05** | **DMS 智能门锁设备列表查询** | `POST /rest/doorlock/list` | DMS 门锁厂商平台 | **`CLIENT_REAL_LIVE`** | 鉴权后网络可达;按空间 ID 检索返回空列表,**当前挂载门锁数为 0**。 | 只读查询,安全。 |
|
||||
| **06** | **DMS 在线密码下发 (Mutation)** | `POST /rest/doorlock/online-password-key/create`| DMS 门锁厂商平台 | **`NOT_YET_TESTED`**<br>(本地单元测试为 `MOCK_SIMULATION`) | 在本地 MockServer 验证通过并取得 operationId;**真实环境因无指定测试门锁,当前执行禁止策略 (`REAL_DMS_MUTATION_COUNT = 0`)**。 | **写操作**:严禁向未知门锁发起下发,待甲方正式划拨指定硬件后测试。 |
|
||||
| **07** | **DMS 在线密码撤销 (Mutation)** | `POST /rest/doorlock/online-password-key/delete`| DMS 门锁厂商平台 | **`NOT_YET_TESTED`**<br>(本地单元测试为 `MOCK_SIMULATION`) | 在本地 MockServer 验证通过;真实环境禁止调用。 | **写操作**:同上。 |
|
||||
| **08** | **DMS 异步操作状态轮询** | `POST /rest/doorlock/operation/status` | DMS 门锁厂商平台 | **`NOT_YET_TESTED`**<br>(本地单元测试为 `MOCK_SIMULATION`) | 代码具备轮询器 (`DmsOperationPoller`);由于未下发真实密码,无真实 operationId 供轮询。 | 只读轮询,安全。 |
|
||||
| **09** | **DMS 远程开门 (Remote Unlock)** | 门锁远程触发开门接口 | DMS 门锁厂商平台 | **`CLIENT_REAL_UNREACHABLE`**<br>(`OUT_OF_CURRENT_SCOPE`) | 生产与试用安全红线:**系统严禁集成任何远程开锁 API**,未进行任何路由配置与适配器实现。 | **极高危险**:绝对禁止调用。 |
|
||||
| **10** | **电子班牌实时数据推送** | 班牌通信端口与协议 | 电子班牌硬件厂商 | **`MOCK_SIMULATION`** | 甲方现场尚未提供实际联网电子班牌设备;系统当前在数据库记录心跳时间与班牌档案,通信属于模拟桩。 | 无物理设备破坏风险。 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 外部接口联调与解锁条件 (Unblocking Criteria)
|
||||
|
||||
针对当前处于 `NOT_YET_TESTED` 与 `BLOCKED_EXTERNAL` 的接口,解除受限状态必须满足以下前置条件:
|
||||
1. **真实硬件设备划拨**:由沈阳房建公寓段主管领导或厂商指派具体的、通电的、物理隔离的 **真实测试房间与门锁编号**;
|
||||
2. **测试授权协议签署**:明确现场测试期间密码下发与冲正补偿的法律责任边界;
|
||||
3. **禁止自动化无限制重试**:写操作调用必须保持 Single-Flight,超时严禁无限制自动重发,必须走人工或受控冲正通道。
|
||||
@@ -1,38 +0,0 @@
|
||||
# 05. 下一阶段工作模式与行动计划 (Next Actions)
|
||||
|
||||
> **工作模式转型**:随着一期教务核心主链路与三角色工作台全面通过综合验收,项目工作模式已正式由“大规模基础闭环开发”转向**“共享试用驱动、敏捷小版本迭代”**。
|
||||
|
||||
---
|
||||
|
||||
## 1. 敏捷运作机制
|
||||
|
||||
后续研发与交付严格遵循以下反馈流转机制:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Step1["1. 局域网共享试用<br/>业务老师与主管开展教学排课/考勤试用"]
|
||||
Step2["2. 问题归类与定级 (Triage)<br/>🔴 BUG: 阻断缺陷,当日修复回归<br/>🟡 UX: 交互体验,周版本批次优化<br/>🔵 KNOWN_GAP: 归入已知缺口排期<br/>⚪ REQUIREMENT: 登记入甲方清单待批"]
|
||||
Step3["3. 小版本迭代发布 (Release Cycles)<br/>本地构建 → Surefire全量验证 → 部署试用"]
|
||||
|
||||
Step1 -->|"发现问题 / 提出需求"| Step2
|
||||
Step2 -->|"敏捷推进"| Step3
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 下一阶段四大核心开发任务
|
||||
|
||||
| 优先级 | 任务主题 | 核心目标与交付内容 | 负责范围 |
|
||||
| :---: | :--- | :--- | :--- |
|
||||
| **P0** | **响应共享试用现场反馈** | 快速响应业务老师在局域网试用中提出的交互阻滞、文案不准确或表单校验细节问题,保障试用体验平滑顺畅。 | 前端交互、教务微调 |
|
||||
| **P1** | **成绩管理闭环 (C03)** | 完善成绩科目配置、教师端分项打分、加权综合成绩折算与导出台账,完成该模块最后一公里闭环。 | `ruoyi-train` 后端及前端 |
|
||||
| **P2** | **学员画像能力完善 (C05)** | 在基础画像能力已具备的基础上,根据试用反馈和业务确认推进画像完整业务范围与后续增强内容。 | 数据分析、ECharts 视图 |
|
||||
| **P3** | **DMS 真实物理联调准备** | 持续跟踪段内智能门锁测试环境房间划拨与通电进度,一旦资源具备,立即启动现场行级数据验证与物理发码。 | DMS 适配器、现场联调 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 分支与质量纪律
|
||||
|
||||
1. **共享试用分支保护**:`feat/cicd-pipeline` 必须保持随时可试用状态;任何代码合并前必须通过 `mvn clean test`(331 项全绿);
|
||||
2. **Git 中文规范**:所有新提交严格遵循 `<中文类型><可选范围>:<中文说明>` 格式;
|
||||
3. **安全底线**:严禁提交真实密码凭证,严禁执行非备份的清库操作。
|
||||
@@ -0,0 +1,58 @@
|
||||
# 06 - 演示基线准则与重构要求 (Demo Baseline)
|
||||
|
||||
> **最高声明**:
|
||||
> 1. **旧 Demo 当前不可信 (Old Demo Untrustworthy)**:历史 `docs/reports/**` 中记载的旧版端到端演示报告包含多处数据污染、超管代跑掩盖权限缺陷(如使用 `admin` 代跑导致未发现 `ACCOM-PERM-01`)等问题,**其演示结果与截图绝对不得作为当前系统交付的可信证据**。
|
||||
> 2. **新版 Demo 尚未开始 (New Demo Not Yet Started)**:当前系统状态标记为 `NEW_DEMO_STATUS = NOT_YET_STARTED`。
|
||||
> 3. **严禁带病演示**:在已知阻断项修复并完成纯净库重建前,严禁任何人员或 Agent 启动演示脚本。
|
||||
|
||||
---
|
||||
|
||||
## 1. 下一版 Demo 七大重构铁律 (Next Edition Demo Principles)
|
||||
|
||||
为确保下一次业务演示达到面向铁路客户交付的黄金工业级标准,演示重构必须严格贯彻以下七大铁律:
|
||||
|
||||
```text
|
||||
+--------------------------------------------------------------------------------------------------+
|
||||
| NEXT-GENERATION DEMO 7 GOLDEN PRINCIPLES |
|
||||
+--------------------------------------------------------------------------------------------------+
|
||||
| 1. Fresh Clean Demo Database | 绝对不在历史污染库上演示,必须基于全新干净独立数据库重建 |
|
||||
| 2. Deterministic Seed Data | 采用零孤儿、时间线严丝合缝、可完全确定性复现的种子数据包 |
|
||||
| 3. Every demo UI contains meaningful | 每一个受测界面必须呈现生动真实的业务数据,严禁空表与占位符 |
|
||||
| 4. Real client API used whenever live | 外部接口真实可用的必须真实调用(如 DMS 只读),绝不弄虚作假 |
|
||||
| 5. Mock clearly identified | 任何模拟桩必须在界面文案与接口日志中显式标明为 [MOCK_SIMULATION] |
|
||||
| 6. Gemini MCP performs real UI steps | 由 MCP 自动化工具驱动真实无头 Chrome 浏览器执行真实用户交互 |
|
||||
| 7. Every step has evidence screenshot | 每一个有业务意义的操作步骤均留存全屏证据截图与 SHA-256 账本哈希 |
|
||||
+--------------------------------------------------------------------------------------------------+
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 详细执行准则剖析
|
||||
|
||||
### 2.1 铁律 1:纯净独立演示库 (`Fresh Clean Demo Database`)
|
||||
- 在 Kingbase 实例中新建独立演示数据库 `training_demo_clean`;
|
||||
- 严禁包含历史测试遗留的 200+ 张杂乱无序的临时表与脏记录;
|
||||
- 数据库结构 100% 由 `000` 到 `010` 及 `001` 到 `015` 官方迁移脚本构建。
|
||||
|
||||
### 2.2 铁律 2:确定性业务种子 (`Deterministic Seed Data`)
|
||||
- 种子数据必须满足“微型但全生命周期闭环”:
|
||||
- 5 名授课教师(覆盖房建、公寓、暖通、电气专业,全量绑定用户账号);
|
||||
- 30 名参训学员(分为 2 个班级,身份证密文合规,全量绑定用户账号);
|
||||
- 6 门标准培训课程(3 门理论、3 门实作);
|
||||
- 4 间标准教室、2 处实训场地;
|
||||
- 8 间标准宿舍房间(严格区分男女宿舍,床位编号清晰);
|
||||
- 2 期标准培训班(1 期已结训用于展示全流程成果与报表,1 期进行中用于现场动态交互演示)。
|
||||
|
||||
### 2.3 铁律 3:界面数据丰富饱满 (`Every demo UI contains meaningful data`)
|
||||
- 严禁出现“点击进入排课,表格一片空白”、“点击成绩,暂无数据”等半成品现象;
|
||||
- 统计分析驾驶舱必须预置足够跨度(至少连续 14 天)的打卡流水,使得趋势折线图、状态分布饼图与 Top 10 排行榜丰满生动;
|
||||
- 学员成长画像必须具备饱满的课时雷达与打卡足迹。
|
||||
|
||||
### 2.4 铁律 4 与 5:真伪分离透明原则 (`Real vs Mock Transparency`)
|
||||
- **真实调用**:DMS 只读连通接口(Token 鉴权、空间列表)调用真实外部网络,证明系统具备外部集成能力;
|
||||
- **显式 Mock**:在外部无真实通电门锁的情况下,门禁密码下发与电子班牌通信在前端提示与响应报文中均加上 `[SIMULATION / MOCK]` 标识,坦诚沟通,绝不忽悠客户。
|
||||
|
||||
### 2.5 铁律 6 与 7:全过程证据链不可篡改 (`MCP Real Steps & Evidence Capture`)
|
||||
- 演示过程必须使用真实角色账号(`qa_train_admin`、`qa_teacher_a`、`qa_student_a`)在真实浏览器中点击、输入、提交;
|
||||
- 杜绝使用 `admin` 权限伪造通过结论;
|
||||
- 每一个关键交互产出一张带时间戳与 URL 的 PNG 截图,并计算 SHA-256 登记入 `evidence-ledger.csv`。
|
||||
@@ -1,78 +0,0 @@
|
||||
# 共享试用账号
|
||||
|
||||
## 共享试用地址
|
||||
|
||||
- **系统访问地址**:[http://192.168.139.230:8082/](http://192.168.139.230:8082/)
|
||||
- **适用环境**:SYFJGYD学员管理系统 — 局域网共享试用环境
|
||||
- **网页登录测试密码**:`admin123`(全员统一)
|
||||
|
||||
---
|
||||
|
||||
## 正常共享试用账号
|
||||
|
||||
以下账号已在共享试用环境中完成真实全链路核验(状态均为正常可用),推荐供沈阳房建公寓段业务主管、教务人员及骨干教员试用体验:
|
||||
|
||||
| 身份 | 用户名 | 密码 | 主要可见功能 | 适用测试场景 |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| **系统管理员 (Admin)** | `admin` | `admin123` | 人员管理(教师/学员)、教学设施、课程管理(课程/计划)、教学成果、自主学习、统计分析、学员画像、系统工具、系统管理 | 全系统全量功能总览、系统参数设置、用户与角色维护;当前具备教师、学员、课程等档案的安全删除能力(内置业务依赖防误删强拦截) |
|
||||
| **培训管理员 (Train Admin)** | `qa_train_admin` | `admin123` | 人员管理(教师/学员)、教学设施(教室/场地/宿舍/班牌/物联)、课程管理(课程/开班计划)、教学成果、自主学习、统计分析、学员画像 | 日常培训业务核心主流程体验:制定开班计划、课程排课冲突校验、学员报到核验、宿舍床位分配与综合统计(注:该账号不具备教师/学员/课程删除权限,专供安全日常业务流转试用) |
|
||||
| **授课教师 A** | `qa_teacher_a` | `admin123` | 教师工作台(我的授课计划、授课课表日程、任教班级学员名册、课次学员出勤查看) | 授课教师日常自服务场景:查看每周授课日程、查询班级学员花名册(敏感信息已脱敏)、核验课堂出勤流水 |
|
||||
| **授课教师 B** | `qa_teacher_b` | `admin123` | 教师工作台(我的授课计划、授课课表日程、任教班级学员名册、课次学员出勤查看) | 多教师并行授课场景、教师间授课日程与班级数据隔离效果验证 |
|
||||
| **参训学员 A** | `qa_student_a` | `admin123` | 学员中心(我的参训班级、最新开班报到凭据、个人参训课表、考勤打卡记录、累计学时、多维成长画像) | 学员全周期自服务体验:学员到校报到状态查阅、参训课表查看、打卡记录与个人综合素养画像核验 |
|
||||
| **参训学员 B** | `qa_student_b` | `admin123` | 学员中心(我的参训班级、个人参训课表、考勤打卡记录、累计学时、个人画像) | 学员间数据私密性与独立隔离核验、多学员并发体验 |
|
||||
|
||||
---
|
||||
|
||||
## 推荐体验顺序
|
||||
|
||||
建议按照以下业务闭环顺序依次体验,以便建立清晰完整的系统认知:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["1. 管理员视角 (qa_train_admin)"] --> B["2. 教师视角 (qa_teacher_a)"]
|
||||
B --> C["3. 学员视角 (qa_student_a)"]
|
||||
```
|
||||
|
||||
### 1. 管理员视角体验(推荐使用 `qa_train_admin`)
|
||||
- **重点体验**:
|
||||
- **开班计划管理**:在【课程管理 → 开班计划】中查看当前开班列表与各班级生命周期阶段;
|
||||
- **四维排课防冲突**:查看已有课次安排与教师/教室占用时段;
|
||||
- **学员管理与报到核对**:在【人员管理 → 学员信息】查验学员基本档案及报到流水;
|
||||
- **宿舍与资源调配**:在【教学设施 → 宿舍信息】查验房间与床位分配情况;
|
||||
- **统计分析大盘**:查阅开班签到、课程签到、学时统计与学员画像大盘。
|
||||
|
||||
### 2. 教师视角体验(推荐使用 `qa_teacher_a`)
|
||||
- **重点体验**:
|
||||
- **专属教师工作台**:登录后直接进入自服务界面,查看个人本周教学课表与授课日历;
|
||||
- **班级学员名册**:点击所任课次,查看该班级参训学员列表(手机号等敏感信息已自动脱敏);
|
||||
- **课堂出勤核验**:查看所带课次的学员打卡流水与签到比例。
|
||||
|
||||
### 3. 学员视角体验(推荐使用 `qa_student_a`)
|
||||
- **重点体验**:
|
||||
- **学员个人中心**:查阅自身归属的参训班级信息;
|
||||
- **报到凭据**:查看自身报到状态与班级通知;
|
||||
- **参训课表与打卡**:查看个人课表安排以及历史打卡流水;
|
||||
- **多维画像**:查看个人学习时长积累与多维能力分析呈现。
|
||||
|
||||
---
|
||||
|
||||
## 内部QA账号
|
||||
|
||||
以下账号为研发与测试团队专用的边界防护与异常用例验证账号,标记为 **`INTERNAL_QA_ONLY`**。
|
||||
|
||||
> [!WARNING]
|
||||
> **请勿将以下账号提供给普通甲方试用人员使用**。此类账号仅供内部自动化测试与边界防线验证。
|
||||
|
||||
| 账号用户名 | 角色定位 | 内部用途说明 | 状态分类 |
|
||||
| :--- | :--- | :--- | :---: |
|
||||
| `qa_admin_teacher` | 管理员兼任教师 (双角色) | 用于验证具备复合角色时,顶层业务管理菜单与教师工作台的聚合展示与兼容性,验证跨角色场景下的操作边界。 | `INTERNAL_QA_ONLY` |
|
||||
| `qa_role_nobody` | 未绑定档案的孤儿角色 | 具备 `train_teacher` 权限角色,但在业务数据库中故意未关联任何具体教师业务档案。用于自动化验证服务端 `TrainingIdentityService` 的防越权强拦截机制(访问时会正确拦截并提示“未绑定任何教师档案”)。 | `INTERNAL_QA_ONLY` |
|
||||
|
||||
---
|
||||
|
||||
## 使用注意事项
|
||||
|
||||
1. **演示与测试数据保护**:当前共享试用环境已预置完整教学闭环演练数据,请勿随意大批量删除已有班级、课程或历史履约数据,以免打断其他人员试用流程。
|
||||
2. **禁止批量删除**:请在现有数据或新增独立测试计划基础上开展业务验证,禁止针对基础字典、教室资源、既有人员等进行破坏性批量删除。
|
||||
3. **禁止真实 DMS 硬件操作**:当前环境门锁交互处于安全模拟与状态机受控流转模式,严禁对外部物理门锁硬件发起真实 Mutation 操作。
|
||||
4. **账号使用范围限制**:以上测试账号与统一密码仅限用于指定的局域网共享试用系统(`http://192.168.139.230:8082/`),严禁在其他环境复用或外传。
|
||||
@@ -0,0 +1,66 @@
|
||||
# 07 - 内部已知缺口与外部阻塞清单 (Known Gaps)
|
||||
|
||||
> **最高准则**:
|
||||
> 1. 本清单仅记录**经过当前真实代码、测试断言或运行时验证确认的客观事实**;
|
||||
> 2. **严禁自动修复**:本轮任务为 Documentation Bootstrap,严禁擅自修改业务代码或数据库尝试修复这些问题;
|
||||
> 3. 历史已解决的问题已移出本清单,本清单是研发团队排期解决的唯一现行缺陷总账。
|
||||
|
||||
---
|
||||
|
||||
## 1. 内部产品级阻断缺陷 (Internal Product Blockers)
|
||||
|
||||
### 🔴 GAP-01: `ACCOM-PERM-01` — 住宿生命周期操作未授予业务角色
|
||||
- **缺陷标识**:`ACCOM-PERM-01`
|
||||
- **严重等级**:**`BLOCKER` (产品级阻断)**
|
||||
- **发现时间**:2026-09-23
|
||||
- **影响场景**:
|
||||
- 直接影响:`SM-10` (学员入住办理 0→1)、`SM-11` (预分配退宿 0→2)、`SM-12` (在住退宿 1→2 及撤销门锁授权)、`SM-13` (调房换宿);
|
||||
- 间接影响:`BR-11`、`EXT-02`(依赖退宿触发外部撤权);
|
||||
- **累计阻断 6 个业务验收场景**。
|
||||
- **根因技术剖析**:
|
||||
1. **前端门控**:`ruoyi-ui/src/views/train/accommodation/index.vue` 中,“入住”与“删除”按钮由 `v-hasPermi="['train:accommodation:edit', 'train:accommodation:remove']"` 双重权限门控;“调房”与“退宿”由 `train:accommodation:edit` 门控;
|
||||
2. **系统菜单缺失**:数据库 `sys_menu` 中虽然定义了 `train:accommodation:edit`(menu_id: 2263),但 **`train:accommodation:remove` 在 `sys_menu` 中完全不存在 (`count = 0`)**;
|
||||
3. **角色授权不足**:业务管理员角色 `train_admin` 在权限配置中仅被授予了 `train:accommodation:list`、`train:accommodation:query` 与 `train:accommodation:add`,**无 `:edit` 与 `:remove` 权限**;
|
||||
4. **为何前期自测未暴露**:早期自动化测试脚本使用超级管理员 `admin` 运行,RuoYi 框架对 `admin` 账号默认返回 `*:*:*` 全放行,导致非超管角色的权限缺失被严重掩盖。
|
||||
- **当前处置要求**:客观记录于本清单,严禁在文档梳理轮次擅自修改 SQL 或代码;待后续产品修复阶段统一闭环。
|
||||
|
||||
---
|
||||
|
||||
## 2. 外部客观环境阻塞项 (External Environmental Blockers)
|
||||
|
||||
### 🟡 GAP-02: DMS 外部物理房间与通电门锁硬件缺失
|
||||
- **缺陷标识**:`DMS-HARDWARE-01`
|
||||
- **严重等级**:**`BLOCKED_EXTERNAL` (外部客观阻塞)**
|
||||
- **客观事实**:
|
||||
- 局域网内 DMS 厂商测试环境网络畅通,官方账号鉴权与 Token 获取通过(7200秒有效);
|
||||
- 只读 API(建筑、楼层、房间、门锁)接口响应结构解析通过;
|
||||
- 但该测试环境当前**挂载的物理建筑、房间与门锁数量均为 0**;
|
||||
- 现场缺少实体通电门锁设备与物理沙箱,无法验证实际刷卡或密码开锁。
|
||||
- **安全红线**:
|
||||
- 严禁在无客户明确指定真实测试门锁前向未知外部设备发起 Mutation 写操作 (`REAL_DMS_MUTATION_COUNT = 0`);
|
||||
- 生产环境严禁集成远程开锁 (Remote Unlock)。
|
||||
- **解除阻塞条件**:沈阳房建公寓段在现场为系统划分具体的实体测试房间,并完成智能门锁通电上云。
|
||||
|
||||
---
|
||||
|
||||
## 3. 研发推进中与待确认功能缺口 (In-Progress & Pending Gaps)
|
||||
|
||||
### 🔵 GAP-03: 成绩管理动态权重与评定交互闭环 (C03)
|
||||
- **状态**:`PARTIAL` (推进中)
|
||||
- **现状**:物理表 `train_score_info` 已建立,支持基础成绩录入;
|
||||
- **缺口**:
|
||||
- 理论与实作多科目加权汇总计算算法的前端交互尚未收敛;
|
||||
- 教师工作台专属打分视图与成绩单导出功能尚在研发收尾阶段。
|
||||
|
||||
### 🔵 GAP-04: 学员 360 度成长画像多维雷达模型 (C05)
|
||||
- **状态**:`PARTIAL` (部分能力具备)
|
||||
- **现状**:基础档案卡、考勤出勤统计、学习时长累计等数据展现已打通;
|
||||
- **缺口**:五维能力评价模型指标权重、评语自动生成算法尚未获得甲方正式确认,当前维持基础视图呈现。
|
||||
|
||||
### 🔵 GAP-05: 考勤统计指标口径待确认项 (PENDING-01 ~ PENDING-04)
|
||||
- **状态**:`PENDING_CLIENT_CONFIRMATION`
|
||||
- **待确认业务规则**:
|
||||
1. `PENDING-01`:未报到参训学员开班后是否从第一节课起计入应到出勤分母;
|
||||
2. `PENDING-02`:经审批合规的请假人次是否从出勤率分母中扣除;
|
||||
3. `PENDING-03`:放弃参训学员在放弃时间节点前后的历史课次有效性切分;
|
||||
4. `PENDING-04`:请假是否计入考勤异常 Top 10 预警排行榜(当前系统支持通过开关集中控制)。
|
||||
@@ -1,71 +0,0 @@
|
||||
# 07. 考勤统计语义与指标口径规范 (Attendance Analytics Semantics)
|
||||
|
||||
> **版本**:V1.0 (Package C 闭环基线)
|
||||
> **更新日期**:2026-09-21
|
||||
> **适用模块**:管理驾驶舱 (Dashboard)、考勤专题分析 (Attendance Analytics)、学员 360 画像 (Student360)、考勤异常 Top 10
|
||||
> **核心原则**:统一底层 Expected Attendance Universe 聚合语义,严格隔离未来课次,严格区分缺勤与未签到,技术语义守恒闭环。
|
||||
|
||||
---
|
||||
|
||||
## 1. 冻结技术语义 (Frozen Technical Semantics)
|
||||
|
||||
| 技术语义项 | 规范定义 | 技术落地点 | 解决问题 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **已开始课次 (Started Lesson)** | `lesson.start_time <= CURRENT_TIMESTAMP`<br>未来课次打卡记录严格隔离,不得进入任何当前历史统计。 | `TrainAnalysisMapper.xml` 所有考勤聚合统一条件 `l.start_time <= CURRENT_TIMESTAMP` | **C07 关闭**:消除 Dashboard 状态分布泄漏 46 条未来课次打卡记录缺陷。 |
|
||||
| **应到基准集 (Expected Attendance Universe)** | `STARTED_LESSONS × PLAN_COURSES × ELIGIBLE_ENROLLMENTS LEFT JOIN CHECKIN`<br>由计划已开课次与计划参训学员关系形成应到基准,不得由打卡流水作为驱动表。 | 共享查询基准 `expectedAttendanceBase` / `filteredAttendanceConditions` | **C08 关闭**:消除异常 Top 10 仅从打卡流水统计导致未打卡学员不可见缺陷。 |
|
||||
| **显式缺勤 vs 未签到** | - **显式缺勤 (Explicit Absence)**:打卡流水存在且 `attendance_status = 0`。<br>- **未签到 (No Checkin)**:无打卡流水行(`checkin_id IS NULL`)。<br>两者在状态分布、Top 10、学员画像中严格互斥,不得隐式混淆。 | 状态派生:`CASE WHEN c.checkin_id IS NULL THEN 'NO_CHECKIN' ELSE CAST(c.attendance_status AS VARCHAR) END` | 杜绝将无流水学员擅自改写为 status=0,客观反映教务未核验状态。 |
|
||||
| **趋势时间轴 (Trend Time Axis)** | 每日考勤打卡走势时间轴必须锚定 `lesson.start_time`,严禁锚定 `sign_in_time`。<br>确保正常、迟到、早退、请假、明确缺勤、未签到均落入课次排课日期。 | `TO_CHAR(l.start_time, 'YYYY-MM-DD') AS stat_date` 统一分组 | **C06 关闭**:消除因 `sign_in_time IS NULL` 导致缺勤/请假/未签到无法进入走势的缺陷。 |
|
||||
| **状态分布守恒律** | `EXPECTED_PERSON_TIMES = NORMAL + LATE + EARLY + LEAVE + EXPLICIT_ABSENCE + NO_CHECKIN` | Dashboard 与 Attendance 共享 `buildStatusDistribution` | 全局与专题分析在无筛选或相同筛选条件下统计口径严格 1:1 相等。 |
|
||||
| **走势守恒律** | 筛选范围内各日期走势累加 `SUM(normal_count + abnormal_count)` 严格等于该范围内的 `EXPECTED_PERSON_TIMES`。 | `selectFilteredDailyTrend` | 走势无漏项、无未来虚假漂移。 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 待确认业务定义清单 (Business Definitions Pending Confirmation)
|
||||
|
||||
以下规则由于缺乏业务需求权威定论或底层数据表时序字段支撑,代码中均以策略开关或明确常量集中隔离,**严禁作为已定案的最终甲方规则**:
|
||||
|
||||
### 2.1 PENDING-01: 待报到参训学员的应到基准 (`WAITING_ENROLLMENT_EXPECTED_POLICY`)
|
||||
- **状态**:`BUSINESS_DEFINITION_REQUIRED`
|
||||
- **问题说明**:学员参训记录为 `status=0`(待报到)且无报到核验流水时,是否从该培训班开班的第一节课起就计入应到基准分母。
|
||||
- **当前处理**:V1 默认不以 `EXISTS(train_class_report)` 过滤应到集合,确保未到场报到人员可进入缺勤/未签到统计;待甲方确认是否仅针对开班前已完成报名审核的名单起算。
|
||||
|
||||
### 2.2 PENDING-02: 考勤请假是否计入出勤率分母 (`LEAVE_DENOMINATOR_POLICY`)
|
||||
- **状态**:`BUSINESS_DEFINITION_REQUIRED`
|
||||
- **问题说明**:学员在某课次拥有 `attendance_status=4`(请假)流水时,该人次是否从出勤率分母(应到人次)中扣除,还是保留在分母但计为非正常出勤。
|
||||
- **当前处理**:当前系统出勤率公式为 `正常出勤人次 / 应到总人次`(请假保留在分母,但非正常)。页面与 API 返回均携带 `metricDefinitionNotice = BUSINESS_METRIC_DEFINITION_PENDING_CONFIRMATION` 声明。
|
||||
|
||||
### 2.3 PENDING-03: 放弃参训学员的历史课次有效性 (`ABANDON_HISTORICAL_POLICY`)
|
||||
- **状态**:`BUSINESS_DEFINITION_REQUIRED`
|
||||
- **问题说明**:学员参训状态为 `status=3`(放弃)时,由于 `train_enrollment` 表无状态变更生效时间区间(`HISTORICAL_ENROLLMENT_ELIGIBILITY_EXACT = NO`),无法精准切分放弃前与放弃后的课次。
|
||||
- **当前处理**:当前统计按所属计划完整名单统计,不利用当前最终状态逆向重写历史;待建立学员流转审计历史表后重构精确时间切片。
|
||||
|
||||
### 2.4 PENDING-04: 请假是否计入考勤异常排行 (`LEAVE_COUNTS_AS_ABNORMAL`)
|
||||
- **状态**:`BUSINESS_DEFINITION_PENDING_CONFIRMATION`
|
||||
- **问题说明**:请假属于审批合规事项,部分管理制度认为请假不属于“违规异常考勤”,不应计入 Top 10 预警排行榜。
|
||||
- **当前处理**:集中在 `TrainAnalysisServiceImpl.LEAVE_COUNTS_AS_ABNORMAL_DEFAULT = true`(当前预览保持系统现有计入异常口径),并通过 `AttendanceFilterDto.includeLeaveAsAbnormal` 支持单点无缝切换,未散落硬编码。
|
||||
|
||||
---
|
||||
|
||||
## 3. 跨模块考勤统计语义对齐矩阵
|
||||
|
||||
| 功能界面 / API | 基础驱动集 | 正常出勤 | 异常考勤构成 | 未签到 (无打卡) | 未来课次防护 |
|
||||
| :--- | :--- | :---: | :--- | :---: | :---: |
|
||||
| **管理驾驶舱 状态分布**<br>`/train/analysis/dashboard/charts` | 已开始课次 × 班级学员 | 正常出勤 (`1`) | 迟到(`2`)、早退(`3`)、请假(`4`)、缺勤(`0`) | 未签到 (`NO_CHECKIN`) | 隔离(0 泄漏) |
|
||||
| **管理驾驶舱 30天走势**<br>`/train/analysis/dashboard/charts` | 已开始课次 × 班级学员 | 正常人次 (`1`) | 异常人次 (`0,2,3,4,NO_CHECKIN`) | 计入异常人次 | 隔离(0 泄漏) |
|
||||
| **考勤专题 状态构成**<br>`/train/analysis/attendance/charts` | 已开始课次 × 班级学员 | 正常出勤 (`1`) | 迟到(`2`)、早退(`3`)、请假(`4`)、缺勤(`0`) | 未签到 (`NO_CHECKIN`) | 隔离(0 泄漏) |
|
||||
| **考勤专题 每日趋势**<br>`/train/analysis/attendance/charts` | 已开始课次 × 班级学员 | 正常人次 (`1`) | 异常人次 (`0,2,3,4,NO_CHECKIN`) | 计入异常人次 | 隔离(0 泄漏) |
|
||||
| **考勤异常 Top 10**<br>`/train/analysis/attendance/charts` | 已开始课次 × 班级学员 | 不参与排行 | 缺勤(`absentCount`)、迟到(`lateCount`)、早退(`earlyLeaveCount`)、请假(`leaveCount`) | 未签到 (`noCheckinCount`) | 隔离(0 泄漏) |
|
||||
| **学员 360 画像 考勤卡片**<br>`/train/analysis/portrait/student-360/{id}` | 该学员所属计划已开始课次 | 正常出勤 (`normalCount`) | 迟到、早退、请假、明确缺勤 | 未签到 (`noCheckinCount`) | 隔离(0 泄漏) |
|
||||
|
||||
---
|
||||
|
||||
## 4. 数据库只读验证事实 (Kingbase QA Live Snapshot)
|
||||
|
||||
在 `railwaysystem_integrated_qa_20260916` 数据库实例上的只读验证结果:
|
||||
- 课次总数:118,其中已开始课次:1(Lesson 90),未来课次:117。
|
||||
- 考勤打卡记录总数:77,其中已开始课次打卡:31,未来课次打卡:46。
|
||||
- 已开始课次应到人次:31,打卡匹配人次:31,未签到人次:0。
|
||||
- 31 人次考勤分布:正常 31,迟到 0,早退 0,请假 0,缺勤 0,未签到 0。
|
||||
- 守恒断言:`EXPECTED_PERSON_TIMES (31) = NORMAL (31) + ABNORMAL (0)`,`PASS`。
|
||||
- 未来打卡泄漏:`FUTURE_LESSON_ANALYTICS_LEAK_COUNT = 0`,`PASS`。
|
||||
- `DUPLICATE_CHECKIN_KEY_COUNT = 0`,无重复打卡键。
|
||||
@@ -0,0 +1,64 @@
|
||||
# 08 - 下一阶段标准化行动路线图 (Next Actions)
|
||||
|
||||
> **最高原则**:后续工作必须严格按以下 14 步标准流依次推进,每一步必须有前置条件检查与验收断言,**严禁跨阶段盲目跳步**!
|
||||
|
||||
---
|
||||
|
||||
## 1. 严格固定的 14 步行动路线图 (The 14 Mandatory Steps)
|
||||
|
||||
```text
|
||||
================================================================================
|
||||
RAILWAYSYSTEM 14-STEP ROADMAP TO DELIVERY
|
||||
================================================================================
|
||||
1. Freeze old runtime
|
||||
└─ 彻底停止并冻结所有旧测试脚本与临时后台进程,锁定当前代码基线。
|
||||
|
||||
2. Preserve old database as historical evidence
|
||||
└─ 对当前存在脏数据与历史痕迹的数据库执行可验证物理快照备份,作为只读证据封存。
|
||||
|
||||
3. Create CLEAN_DEMO_DATABASE
|
||||
└─ 在 KingbaseES 实例上新建完全独立的纯净演示数据库 (training_demo_clean)。
|
||||
|
||||
4. Rebuild schema from migrations
|
||||
└─ 严格按 000~010 官方迁移链脚本在纯净库中重构全部 21 张表与系统表结构。
|
||||
|
||||
5. Build deterministic demo seed
|
||||
└─ 编制并灌入确定性、零孤儿、时序严丝合缝的黄金业务种子数据集。
|
||||
|
||||
6. Validate 100% UI data coverage
|
||||
└─ 全量核验所有前端业务界面,确保每一个页面均有丰满真实的有效数据,0 空白页。
|
||||
|
||||
7. Probe client APIs
|
||||
└─ 在安全受控网络下对 DMS 等外部系统发起实时探测,验证网络连通与鉴权有效性。
|
||||
|
||||
8. Integrate usable real APIs
|
||||
└─ 将真实可用的外部接口(只读空间/门锁查询)正式接入主业务流。
|
||||
|
||||
9. Resolve product blockers
|
||||
└─ 针对性修复产品级阻断缺陷(首要修复 ACCOM-PERM-01 住宿操作权限缺失)。
|
||||
|
||||
10. Establish one demo candidate baseline
|
||||
└─ 确立全工程唯一的“演示候选基线 (Demo Candidate Baseline)”,冻结代码与数据。
|
||||
|
||||
11. Gemini MCP full scenario demonstration
|
||||
└─ 由 Gemini MCP 工具驱动真实 Chrome 浏览器,以非超管真实角色执行全场景验收。
|
||||
|
||||
12. Freeze final Demo
|
||||
└─ 留存完整全屏截图与 SHA-256 证据账本,签署并冻结最终 Demo 交付成果。
|
||||
|
||||
13. Full Docs Cleanup Phase B
|
||||
└─ 演示完全冻结后,解冻文档治理门禁,正式执行文档目录物理搬迁与归档。
|
||||
|
||||
14. Produce Client Status Report
|
||||
└─ 产出最终面向沈阳房建公寓段主管领导的正式项目交付与系统状态报告。
|
||||
================================================================================
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 阶段准入与准出守卫 (Stage Gates)
|
||||
|
||||
- **进入第 3~6 步守卫**:旧数据库备份未完成前,严禁创建新库;
|
||||
- **进入第 9 步守卫**:阻断项修复必须有专门的单元测试与权限回归契约测试守护;
|
||||
- **进入第 11 步守卫**:`ACCOM-PERM-01` 必须彻底解决,且以 `train_admin` 角色能够在 UI 成功点击入住与退宿;
|
||||
- **进入第 13 步守卫**:演示证据账本彻底封存且后台无任何写入进程前,绝对不启动 Docs Phase B。
|
||||
@@ -1,29 +0,0 @@
|
||||
# SYFJGYD学员管理系统 — 当前项目速览中心 (Current)
|
||||
|
||||
> **核心定位**:专为任何需要“在 3 分钟内快速掌握项目当前实际现状”的读者提供的唯一权威速览入口。
|
||||
> **正式业务名称**:`SYFJGYD学员管理系统`(内部工程代号:RailwaySystem)
|
||||
> **共享试用环境**:[http://192.168.139.230:8082/](http://192.168.139.230:8082/)(部署分支:`feat/cicd-pipeline`)
|
||||
> **当前试用就绪度**:`READY_WITH_EXTERNAL_BLOCKERS`(核心业务全通,具备局域网教学试用条件)
|
||||
|
||||
---
|
||||
|
||||
## 🧭 当前速览文件导航
|
||||
|
||||
本目录包含 6 份精简、客观、直击核心事实的速览文档:
|
||||
|
||||
| 文件 | 核心内容 | 推荐阅读对象 |
|
||||
| :--- | :--- | :--- |
|
||||
| [**01-current-status.md**](01-current-status.md) | **系统当前真实状态速览**(涵盖业务闭环、三角色、测试门禁与试用数据大盘) | 全体项目成员、新接手人员、管理层 |
|
||||
| [**02-phase1-status.md**](02-phase1-status.md) | **一期需求完成度判定**(严格分类 DONE / IN_PROGRESS / PARTIAL / 阻塞项) | 需求分析师、产品经理、验收人员 |
|
||||
| [**03-shared-trial.md**](03-shared-trial.md) | **共享试用环境使用指南**(环境用途、账号类型、试用反馈与问题流转规范) | 试用教师、业务主管、运维测试 |
|
||||
| [**04-known-gaps.md**](04-known-gaps.md) | **内部已知缺口与外部阻塞清单**(C03成绩、C05画像、DMS门锁与待确认项) | 研发人员、外部联调人员 |
|
||||
| [**05-next-actions.md**](05-next-actions.md) | **下一阶段行动路线**(工作模式转变、小版本迭代计划与近期重点) | 研发团队、项目协调人 |
|
||||
| [**06-shared-trial-accounts.md**](06-shared-trial-accounts.md) | **共享试用账号说明**(三类角色测试账号、登录凭据、推荐体验顺序与试用注意事项) | 甲方试用人员、业务主管、测试人员 |
|
||||
|
||||
---
|
||||
|
||||
## 📌 阅读建议
|
||||
- 如果你只想知道**“系统做成啥样了、跑通了哪些功能”**:请直接阅读 [01-current-status.md](01-current-status.md);
|
||||
- 如果你要去和**“沈阳房建公寓段领导/指导老师开会对需求”**:请直接阅读 [02-phase1-status.md](02-phase1-status.md) 并带上需求清单;
|
||||
- 如果你正准备**“在局域网试用系统并提出反馈”**:请直接阅读 [03-shared-trial.md](03-shared-trial.md) 与 [06-shared-trial-accounts.md](06-shared-trial-accounts.md) 获取登录账号与体验指引;
|
||||
- 如果你要**“继续写代码或排期”**:请直接阅读 [04-known-gaps.md](04-known-gaps.md) 与 [05-next-actions.md](05-next-actions.md)。
|
||||
Reference in new issue
Block a user