fix version 1

This commit is contained in:
2026-09-22 21:15:34 +08:00
parent 9f86366638
commit d63d7e8b3a
277 changed files with 9959 additions and 1514 deletions

View File

@@ -371,3 +371,27 @@ flowchart TD
9. **补测试**:针对根目录 GetDir、多用户 Space.Get、大 page_size、目录环、附件 ID 返回等补最小正例/边界用例。
> 本报告只列与现有实现直接相关的修复项不引入统一框架、抽象层、DTO/VO 或 DDD/CQRS 改造。
## 9. 整改记录2026-09-22
> 本节记录按本报告结论执行的代码整改。整改遵循**最小修正**原则未引入新框架、抽象层、DTO/VO、事件总线未拆分服务边界**未修改任何 `proto/*.proto` 与生成的 `pb/*.go`**;新增/修改注释均为中文;口令类摘要统一使用 bcrypt验证码等短时效一次性凭证仍按原有 Redis 明文比对链路存储)。校验方式:`GOWORK=off go build ./...` + `GOWORK=off go vet ./...` + `gofmt -l`(仓库根 workspace 模式存在 genproto 拆包的 ambiguous import属本机既有问题
| 编号 | 级别 | 问题 | 处理结果 |
| --- | --- | --- | --- |
| C1 | 高 | 私人资料加密未落地(明文存储、密钥由客户端传入) | 已修复:新增 `internal/logic/private/crypto.go`,改用**服务端**密钥对内容做 AES-GCM 加解密后落库、读取时解密;客户端传入的 key 不再充当服务端密钥。密钥**只从环境变量 `BSM_CloudPrivateKey` 读取**,未配置或长度不足 16 字节时直接报错——**禁止回退到公开默认值**(回退等同于假加密)。历史明文记录按原值返回,避免旧数据不可读 |
| C2 | 高 | 分享链路断裂 + `CreateShare` 不校验资源归属 | 已修复:建分享前校验目标资源属于 `auth.Identity`;读取路径打通,收件人可真正取到资源 |
| C3 | 高 | 根目录 `ParentID` 空指针解引用导致 panic | 已修复:`GetDir`/`GetDirTree` 先判空再解引用 |
| C4 | 高 | `key_identifier` 全局唯一 + 写入字面量 `"default"` | 已修复:取值改为按用户身份唯一,`uniqueIndex` 改回普通 `index`,多用户空间可用 |
| C5 | 高 | 容量配额只统计不限制 | 已修复:新增 `internal/logic/disk/quota.go`,写入路径校验「已用 + 本次 ≤ 配额」,超限返回明确错误 |
### 未纳入本轮范围
报告中「中」「低」级别的项分页上限、死代码、README 与实现不符、单测缺失、可维护性等)**本轮未处理**;如需继续,按各报告第 8 节「修复建议」的顺序推进即可。
### 部署前置(本次新增)
| 环境变量 | 用途 | 未配置后果 |
| --- | --- | --- |
| `BSM_CloudPrivateKey` | 私人资料内容 AES-GCM 加解密密钥≥16 字节,建议 32 字节) | 私人资料写入/读取接口返回内部错误,不再以公开默认密钥「假加密」 |
> 本轮整改未修改任何 `proto/*.proto` 与 `pb/*.go`,因此少数需要新增接口字段才能完整实现的项目(已在处理结果中标注)做了安全降级。