feat(m0): 后端骨架 + 账号体系(M0 验收 36/36 通过)
技术栈(已在 4.1.1 上实测跑通,非纸面选型)
Java 21 + Spring Boot 4.1.1 + MyBatis-Plus 3.5.17(boot4) + PostgreSQL 16.15
+ Redis 7 + Flyway 12.4 + springdoc 3.1.1;前端定 Vue 3 + Element Plus + uni-app
交付内容
M0-01 基础设施 deploy/docker-compose.yml(PG + Redis + MinIO,容器名与端口避让本机既有项目)
M0-02 后端骨架 xt-common + xt-server;统一响应 / 全局异常 / 58 个错误码 /
多租户拦截 / 软删除 / 字段自动填充 / AES-GCM / HMAC 索引 / RSA / JWT
M0-05 租户 开通租户(一次完成建租户 + 发 6 个内置角色 + 建首个管理员)、列表、详情
M0-06 组织 CRUD + 组织树 + ancestor_path 自动维护 + 占用校验
M0-07 PC 登录 RSA 解密 + 图形验证码 + 失败锁定 + 等时比较防账号枚举 + 审计日志
M0-08 登出/当前用户 Token 黑名单(存 SHA-256,TTL 到自然过期)
M0-01 数据库 Flyway 2 个迁移 → 26 张表(20 业务 + 5 标准 + 1 迁移记录)
安全姿态
· 租户拦截器【默认拒绝】:匿名请求触及租户表直接抛 40101,不做「不加条件放行」
· 权限码定义在代码里(PermissionDef / BuiltinRole),不建 sys_permission 表,杜绝前后端漂移
· 匿名接口只靠 @PublicApi 放行,不做路径白名单,避免两套机制各说各话
· 账号不存在时也跑一次 BCrypt(假哈希),拉平响应时间防枚举
· 登录密码 RSA 传输,防止网关/APM 把明文密码记进日志
脚本
scripts/sync-ddl.py 文档 DDL → Flyway 迁移,带 --check 防漂移
scripts/e2e-m0.py M0 验收 36 项,可进 CI
scripts/verify-docs.py 文档一致性(接口数【逐节】核对、错误码、跨文档数字、表格列数)
scripts/dev-login.py RSA 加密登录助手
scripts/dev-clean-e2e.py 清理 E2E 测试数据
文档修正(实测暴露,非人工审查)
· DDL 缺陷:sys_tenant.contact_phone / sys_user.phone / collect_roster.phone
原 varchar(20) 按明文长度建,装不下 AES-GCM 密文(约 52 字符),改 varchar(128)(PRD V2.4)
· 错误码 40007b/40007c 带字母后缀与「code 为数字」的约定冲突,规范化为 40071/40072
· 07-开发实施计划 新增 §9 版本兼容踩坑记录(10 条实录)与 §10 M0 完成情况
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# 数据信息填报系统 · 文档中心
|
||||
# 数据信息填报系统
|
||||
|
||||
> 职业技能等级认定**报名材料收集 SaaS**
|
||||
> **一期范围**:学校收集 + 自主认定(4 类材料,全部有实测样本)。社会收集 / 社会评价 / 专项职业能力后置二期
|
||||
@@ -146,7 +146,7 @@ docker run -d --name pg-verify -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=fill
|
||||
# 执行 DDL
|
||||
docker exec -i pg-verify psql -U postgres -d filldb < docs/db/schema-postgresql.sql
|
||||
|
||||
# 验证结果:19 张表 / 167 列注释 / 61 索引,零错误
|
||||
# 验证结果:20 张表 / 177 列注释 / 65 索引,零错误
|
||||
docker exec -it pg-verify psql -U postgres -d filldb
|
||||
```
|
||||
|
||||
@@ -162,6 +162,53 @@ python check2.py docs/prototype/admin-web.html
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## 六·二、把系统跑起来(三条命令)
|
||||
|
||||
```bash
|
||||
# 1) 基础设施:PG 16 + Redis 7 + MinIO
|
||||
cd deploy
|
||||
copy .env.example .env # 首次
|
||||
docker compose up -d
|
||||
|
||||
# 2) 后端:Flyway 自动建库 + 自动初始化账号
|
||||
cd ../backend
|
||||
mvn spring-boot:run
|
||||
|
||||
# 3) 验收自测(35 项)
|
||||
cd ..
|
||||
python scripts/e2e-m0.py
|
||||
```
|
||||
|
||||
开发环境初始账号(仅本地,由 `fill.seed.enabled` 控制):
|
||||
|
||||
| 账号 | 密码 | 角色 |
|
||||
|---|---|---|
|
||||
| `admin` | `Admin@123` | 学校管理员(租户 `demo`) |
|
||||
| `platform` | `Platform@123` | 平台运营 |
|
||||
|
||||
接口文档:<http://localhost:8080/doc.html>
|
||||
|
||||
### 代码结构
|
||||
|
||||
```
|
||||
backend/ Java 21 + Spring Boot 4.1.1
|
||||
├── xt-common/ 统一响应 / 58 个错误码 / AES-GCM / HMAC / RSA
|
||||
└── xt-server/ 配置 / 鉴权 / 多租户拦截 / 业务模块
|
||||
deploy/ docker-compose + RSA 开发公钥
|
||||
scripts/ DDL 同步、登录助手、M0 验收测试
|
||||
frontend-pc/ (待建)Vue 3 + Element Plus
|
||||
frontend-mp/ (待建)uni-app
|
||||
```
|
||||
|
||||
### ⚠️ 搭环境前请先读
|
||||
|
||||
**`docs/07-开发实施计划.md` §9「版本兼容踩坑记录」**——
|
||||
那里记了 10 条 Boot 4 / Flyway 10 / MyBatis-Plus 3.5.9 的真实坑,
|
||||
其中多数是「**依赖在、功能不在,且不报错**」的类型,靠读文档和凭经验都躲不掉。
|
||||
|
||||
|
||||
## 七、交付状态
|
||||
|
||||
| 阶段 | 内容 | 状态 |
|
||||
|
||||
Reference in New Issue
Block a user