chore: initialize insar management system v2

This commit is contained in:
2026-04-14 13:16:01 +08:00
commit ecc72ec9cd
361 changed files with 2142522 additions and 0 deletions
+278
View File
@@ -0,0 +1,278 @@
# 安全问题修复进度跟踪
## 修复状态图例
- ✅ 已完成
- 🚧 进行中
- ⏸️ 暂缓
- ⏳ 待开始
- ❌ 已回滚
---
## 第一阶段:明确 Bug 修复
### 1.1 ENVI 主流程返回值缺失
- **状态**:✅ 已完成
- **修改文件**`backend/app/services/envi_service.py:1630`
- **修改内容**:添加 `return record`
- **提交时间**2026-03-04
- **测试状态**:⏳ 待测试
**测试清单**
- [ ] 运行完整的 D-InSAR 工作流(dinsar_custom
- [ ] 检查任务状态是否为 SUCCESS
- [ ] 检查日志是否包含 `workflow=dinsar_custom duration=XXXs`
- [ ] 验证前端显示是否正常
**测试结果**
```
待填写...
```
---
### 1.2 失败计数重复累加
- **状态**:✅ 已完成
- **修改文件**`backend/app/services/envi_service.py:1717, 1726`
- **修改内容**:删除重复的 `failed += 1`(两处)
- **提交时间**2026-03-04
- **测试状态**:⏳ 待测试
**测试清单**
- [ ] 运行 `extract_disp_results` 功能
- [ ] 故意触发失败(如权限问题)
- [ ] 验证 `failed` 计数是否准确
**测试结果**
```
待填写...
```
---
### 1.3 PowerShell 编码问题
- **状态**:✅ 已完成(已增强)
- **修改文件**`scripts/start_app.ps1:388`
- **修改内容**:使用 UTF-8 无 BOM 编码写入
- **提交时间**2026-03-04
- **测试状态**:✅ 已验证
**额外修复**
- 发现 `nginx.conf` 文件包含 UTF-8 BOM,导致 Nginx 启动失败
- 已删除 BOM(使用 `tail -c +4`
- 修改脚本使用 `[System.IO.File]::WriteAllText()` 确保无 BOM
**测试清单**
- [ ] 在 PowerShell 5 环境运行启动脚本
- [ ] 检查 nginx.conf 文件编码
- [ ] 验证 Nginx 是否正常启动
**测试结果**
```
待填写...
```
---
**第一阶段总结**
- 完成度:3/3 (100%) ✅
- 完成时间:2026-03-04
- 遇到的问题:无
- 回滚记录:无
- **状态**:代码修改已完成,等待测试验证
---
## 第二阶段:防御性增强
### 2.1 AOI token 容量上限
- **状态**:⏳ 待开始
- **修改文件**`backend/app/routers/dependencies.py`
- **修改内容**:添加 `AOI_TOKEN_MAX_STORE_SIZE` 配置和容量检查
- **提交时间**-
- **测试状态**-
**测试清单**
- [ ] 创建 1000+ 个 AOI token
- [ ] 验证内存占用是否稳定
- [ ] 检查日志是否有清理记录
- [ ] 验证被清理的 token 无法使用
- [ ] 验证新 token 仍可用
**测试结果**
```
待填写...
```
---
### 2.2 AOI 解析异常处理
- **状态**:⏳ 待开始
- **修改文件**`backend/app/routers/dependencies.py`
- **修改内容**:添加统一异常处理(400 vs 500)
- **提交时间**-
- **测试状态**-
**测试清单**
- [ ] 上传无效 GeoJSON 文件
- [ ] 验证返回 400 而非 500
- [ ] 验证错误消息清晰
- [ ] 验证前端能正确处理
**测试结果**
```
待填写...
```
---
### 2.3 路径归属判断优化
- **状态**:⏳ 待开始
- **修改文件**`backend/app/services/data_service.py:530`
- **修改内容**:使用 `is_subpath` 替代 `startswith`
- **提交时间**-
- **测试状态**-
**测试清单**
- [ ] 创建 `MONITOR_RADAR_DIRS_backup` 目录
- [ ] 放入测试文件
- [ ] 运行数据扫描
- [ ] 验证 backup 目录文件不被误判
**测试结果**
```
待填写...
```
---
**第二阶段总结**
- 完成度:0/3 (0%)
- 预计完成时间:-
- 遇到的问题:-
- 回滚记录:无
---
## 第三阶段:安全加固
### 3.1 解包安全校验增强
- **状态**:⏳ 待开始
- **修改文件**`scripts/unpack_archives.py`
- **修改内容**:添加符号链接检查,使用逐个提取
- **提交时间**-
- **测试状态**-
**测试清单**
- [ ] 创建包含符号链接的 tar 文件
- [ ] 验证被拒绝解包
- [ ] 创建正常 tar 文件
- [ ] 验证正常解包
- [ ] 对比解包性能
**测试结果**
```
待填写...
```
---
**第三阶段总结**
- 完成度:0/1 (0%)
- 预计完成时间:-
- 遇到的问题:-
- 回滚记录:无
---
## 第四阶段:权限重构
### 4.1 只读用户权限控制
- **状态**:⏸️ 暂缓
- **原因**:需要明确需求和前端配合
- **待讨论问题**
- [ ] 系统中是否有只读用户?
- [ ] 只读用户的使用场景?
- [ ] 是否可以接受只读用户无法查看预览图?
- [ ] 是否需要前端配合?
---
## 总体进度
| 阶段 | 状态 | 完成度 | 预计时间 | 实际时间 |
|------|------|--------|---------|---------|
| 第一阶段 | ✅ 已完成 | 3/3 (100%) | 1 天 | 2026-03-04 |
| 第二阶段 | ⏳ 待开始 | 0/3 (0%) | 2-3 天 | - |
| 第三阶段 | ⏳ 待开始 | 0/1 (0%) | 2-3 天 | - |
| 第四阶段 | ⏸️ 暂缓 | - | 待定 | - |
**总完成度**3/7 (43%)
---
## 问题记录
### 问题 #1Nginx 启动失败 - UTF-8 BOM 问题
- **发现时间**2026-03-04
- **问题描述**:Nginx 启动失败,错误信息 `unknown directive "worker_processes"`,发现 `nginx.conf` 文件包含 UTF-8 BOM`ef bb bf`
- **影响范围**:Nginx 无法启动,整个系统无法访问
- **解决方案**
1. 使用 `tail -c +4` 删除现有文件的 BOM
2. 修改 PowerShell 脚本使用 `[System.IO.File]::WriteAllText()` 确保写入时无 BOM
- **状态**:✅ 已解决
### 问题 #2:PROJ 数据库版本冲突
- **发现时间**2026-03-05
- **问题描述**:扫描 D-InSAR 结果时出现 PROJ 警告 `DATABASE.LAYOUT.VERSION.MINOR = 2 whereas >= 3 is expected`PostgreSQL 自带的 PROJ 数据库版本过旧
- **影响范围**:不影响功能,但产生大量警告日志
- **解决方案**
1.`run_backend.py` 中自动检测并设置 `PROJ_LIB` 环境变量
2. 指向 GDAL 自带的新版 PROJ 数据库
- **状态**:✅ 已修复,待测试验证
### 问题 #3:扫描任务时前端未锁定
- **发现时间**2026-03-05
- **问题描述**:D-InSAR 结果扫描任务运行时前端没有锁定
- **影响范围**:用户可能在扫描过程中进行其他操作,导致数据不一致
- **可能原因**
1. 扫描任务执行太快(< 3 秒),前端轮询间隔(3 秒)来不及捕获
2. 任务状态更新有延迟
- **解决方案**:待确认是否需要修复(可能是正常行为)
- **状态**:⏳ 待分析
---
## 回滚记录
### 回滚 #1
- **回滚时间**-
- **回滚内容**-
- **回滚原因**-
- **影响范围**-
---
## 下一步行动
1. **立即行动**
- [ ] 测试 1.1 ENVI 主流程返回值修复
- [ ] 如果测试通过,继续修复 1.2 和 1.3
2. **本周计划**
- [ ] 完成第一阶段所有修复
- [ ] 充分测试第一阶段
- [ ] 提交第一阶段代码
3. **下周计划**
- [ ] 根据第一阶段测试结果决定是否继续
- [ ] 如果继续,开始第二阶段
---
## 备注
- 每次修复后立即更新此文档
- 测试结果详细记录,包括成功和失败的情况
- 遇到问题及时记录到"问题记录"区域
- 回滚操作必须记录原因和影响范围