docs: govern and archive superseded notes

- add documentation governance and cleanup audit documents

- update README and docs index to distinguish current vs historical sources

- move superseded planning, SBAS, Gamma, and experiment notes into docs/archive

- fix remaining archive text garbling in two documents
This commit is contained in:
2026-04-27 08:06:09 +08:00
parent 5a0623fd9b
commit d108b33f80
26 changed files with 487 additions and 27 deletions
+148
View File
@@ -0,0 +1,148 @@
# Codebase Cleanup Audit
Updated: 2026-04-25
## Scope
This audit focuses on three cleanup questions:
1. Which files are clearly transitional or unused?
2. Which documentation files are authoritative versus historical?
3. Are the reported "garbled comments" real source corruption or terminal/display issues?
## Confirmed Cleanup Completed In This Wave
The frontend had active implementations living under transitional filenames while older same-purpose files remained in place.
Completed normalization:
- Promoted active files from transitional names back to canonical names:
- `frontend/src/DinsarProductsPanel.jsx`
- `frontend/src/components/DinsarCatalogPanel.jsx`
- `frontend/src/panels/DinsarResultPanel.jsx`
- `frontend/src/components/ResultExportModal.jsx`
- `frontend/src/components/panels/DinsarResultRow.jsx`
- `frontend/src/LogManagementPanel.jsx`
- Removed superseded duplicate implementations that were no longer referenced.
- Updated imports so runtime entry points no longer depend on `.rewrite` or `.clean` suffixes.
- Updated `INIT.md` so it no longer describes the old temporary naming scheme as current reality.
## High-Confidence Findings
### 1. Transitional frontend files had become the real implementation
Before cleanup, the live entry points imported:
- `DinsarProductsPanel.rewrite.jsx`
- `DinsarResultPanel.rewrite.jsx`
- `LogManagementPanel.clean.jsx`
while older canonical filenames still existed beside them.
This is a maintenance hazard because:
- file names no longer reflect runtime truth
- engineers can patch the wrong file
- stale files increase review and search noise
### 2. Several "unused file" suspicions were correct, but not all of them
Confirmed pattern:
- some canonical frontend files were effectively dead
- some `.rewrite` or `.clean` files were not dead at all; they were the active implementation
Conclusion:
- `rewrite` / `clean` suffix is not enough to classify a file as removable
- reference tracing is required before deletion
### 3. Most observed Chinese garbling is a tooling/display problem, not necessarily source corruption
Key project files such as:
- `README.md`
- `docs/DEPLOYMENT.md`
- `docs/CURRENT_STATUS_20260425.md`
- `backend/app/main.py`
- `backend/app/config.py`
read correctly when opened as UTF-8.
This indicates that a significant part of the reported garbling comes from PowerShell/default encoding behavior rather than broken source text.
### 4. Some operational notes were stale even when the code was fine
`INIT.md` still described the temporary `LogManagementPanel.clean.jsx` workflow after the codebase had already stabilized enough for normalization.
That kind of drift is small, but it compounds quickly in a repo with many dated design notes.
## Remaining Cleanup Candidates
These items were not removed automatically in this wave, but they should be considered next.
### A. Documentation governance
Current situation:
- `docs/INDEX.md` does a reasonable job separating current docs from historical docs
- the repository still contains many dated design, TODO, experiment, and archive documents
Recommended next step:
- keep `docs/INDEX.md` as the contract
- move any newly superseded design notes to `docs/archive/`
- avoid leaving outdated process notes at repo root unless they are still operational
### B. Large-file refactors
Large files remain a maintainability risk even when they are active:
- `frontend/src/App.jsx`
- `backend/app/services/timeseries_service.py`
- `backend/app/models/orm.py`
- `backend/app/services/dinsar_production_service.py`
Recommended next step:
- split by responsibility, not by arbitrary line count
- keep public contracts stable while extracting helpers/modules
### C. Historical compatibility layers
There are still intentional legacy bridges in the backend, for example:
- compatibility catalog/data bridges
- legacy manifest normalization paths
- legacy environment variables in WSL runtime definitions
These should not be removed blindly. They need a separate compatibility retirement review driven by real production usage.
## Recommendations
### Phase 1: Done
- remove dead duplicate frontend files
- normalize active transitional filenames
- correct stale operational notes
### Phase 2: Safe repository hygiene
- review root-level notes such as `INIT.md` for whether they still belong at repo root
- move superseded design/process notes to `docs/archive/`
- add a lightweight naming rule: no long-lived `.rewrite`, `.clean`, `.tmp`, `.bak` files in active UI paths
### Phase 3: Controlled architecture cleanup
- split oversized service files
- document which compatibility layers are still required by production data
- retire legacy code only after proving there is no runtime dependency
## Practical Rule Going Forward
Use this decision order for cleanup:
1. Trace imports or runtime references.
2. Normalize active files back to canonical names.
3. Delete only the files that are both superseded and unreferenced.
4. Update the nearest authoritative document in the same change.
+195
View File
@@ -0,0 +1,195 @@
# 文档治理约定
最后更新:2026-04-25
## 1. 目标
本文件用于定义本仓库的文档治理规则,解决以下问题:
- 哪些文档是当前事实来源
- 哪些文档只是设计过程记录
- 哪些文档应归档而不是继续留在主导航里
- 新文档应如何命名、放置和维护
本文件是长期有效的治理约定,不是一次性的状态快照。
## 2. 事实来源优先级
当多个文档描述同一主题且内容不一致时,按以下优先级判断:
1. `README.md`
项目总览、当前架构收口、启动入口。
2. `docs/INDEX.md`
当前有效文档与历史参考文档的总入口。
3. 当前状态 / 部署 / 审计类文档
例如:
- `CURRENT_STATUS_*`
- `DEPLOYMENT.md`
- `*_AUDIT_*`
4. 当前执行中的设计 / 规格文档
例如:
- `*_DESIGN_*`
- `*_SPEC_*`
5. 计划 / TODO / 实验 / 过程记录
例如:
- `*_PLAN_*`
- `*_TODO_*`
- `*_EXPERIMENT_*`
- 临时工作笔记
6. `docs/archive/`
默认只作为历史参考,不作为现行事实来源。
## 3. 文档分类
### 3.1 长期有效文档
适合长期保留在 `docs/` 根目录并放入 `docs/INDEX.md` 的文档:
- 总览:项目总览、部署说明、运行约束
- 状态:当前状态快照、健康检查摘要
- 审计:数据库、自维护、安全、代码库清理等审计结论
- 设计:当前仍在执行中的架构设计
- 规格:仍然有效的接口、产物、目录或包结构规范
### 3.2 过程型文档
通常不应作为主事实来源,除非 `docs/INDEX.md` 显式列入“当前有效”:
- 实施计划
- TODO 清单
- 阶段性实验记录
- 迁移草案
- 工作过程笔记
### 3.3 历史文档
满足以下任一条件时,应优先考虑归档到 `docs/archive/`
- 已被更新文档明确取代
- 描述的是已结束阶段
- 只保留历史讨论价值,不再指导当前开发或部署
## 4. 放置规则
### 4.1 仓库根目录
根目录只保留高频入口或必须靠近项目根的文件:
- `README.md`
- `.env.example`
- 启动脚本
- 极少数确实需要放在根目录的说明文件
不应在根目录长期堆积阶段性分析、实验记录、临时修复说明。
### 4.2 `docs/`
`docs/` 根目录用于放当前仍有导航价值的正式文档。
### 4.3 `docs/archive/`
`docs/archive/` 用于放:
- 已退役设计
- 已完成修复的过程文档
- 旧版方案
- 只保留追溯价值的材料
当归档材料数量继续增长时,应维护:
- `docs/archive/INDEX.md`
用于提供历史文档的结构化入口。
## 5. 命名规则
建议优先使用以下命名模式:
- `CURRENT_STATUS_YYYYMMDD.md`
当前状态快照
- `*_AUDIT_YYYYMMDD.md`
审计结论
- `*_DESIGN_YYYYMMDD.md`
当前设计
- `*_SPEC.md`
稳定规格
- `*_PLAN_YYYYMMDD.md`
计划文档
- `*_TODO_YYYYMMDD.md``*_TODO.md`
待办事项
- `*_EXPERIMENT_YYYYMMDD.md`
实验记录
规则:
- 有日期的文档应表达“状态时间点”或“阶段结论”。
- 没有日期的文档应尽量只用于长期有效的稳定说明。
- 如果文档已经明显是阶段性材料,不要再继续使用无日期命名。
## 6. 索引维护规则
每次新增或退役正式文档时,至少同步更新以下其中之一:
- `README.md`
- `docs/INDEX.md`
推荐规则:
- 新的正式文档进入 `docs/` 根目录时,必须决定是否加入 `docs/INDEX.md`
- 文档失效时,必须从“当前有效”区移除
- 被取代文档如仍需保留,应移动到 `docs/archive/`
## 7. 语言与编码规则
### 7.1 文档语言
当前项目以中文工程文档为主,这没有问题。
但为了降低终端编码、跨环境协作和代码审阅成本,建议:
- 代码注释与 docstring:默认使用 English
- 用户界面文案:可继续使用中文
- 面向本地团队的正式说明文档:可使用中文
- 如同一主题同时涉及代码约束与面向用户的描述,优先让代码侧说明保持 English
### 7.2 编码
文本文件建议统一使用:
- UTF-8
- 尽量无 BOM
如果 PowerShell 中看到乱码,不应立即判断源码损坏。应先:
1. 在编辑器中确认文件实际编码
2. 再决定是否需要修复源文件
## 8. `INIT.md` 的定位
`INIT.md` 视为“开发/运维工作笔记”,不是系统架构、部署或运行事实的最高依据。
使用原则:
- 可以记录当前机器、本轮修复、局部操作注意事项
- 不应替代 `README.md``docs/INDEX.md`
- 如果其中内容已经成为长期规则,应迁移到正式文档中
## 9. 当前建议的下一步整理方向
后续文档清理建议按以下顺序推进:
1. 保持 `README.md``docs/INDEX.md` 为主导航入口
2. 将明确失效的阶段性文档继续迁入 `docs/archive/`
3. 收紧 `docs/` 根目录,只保留当前仍需导航的文档
4. 逐步减少无明确角色的过程型文件
+40 -19
View File
@@ -1,18 +1,21 @@
# 文档索引
索引用来区分“当前有效文档”和“历史参考文档”。
页用于区分“当前有效文档”和“历史参考文档”。
原则:
- 以本页列为“当前有效”的文档,才作为现网架构、部署运维的事实依据。
- 没有列入“当前有效”区域的文档,默认只作为设计过程记录或历史参考。
- 文档即使保留在 `docs/` 根目录,也不代表它仍然描述当前系统
- 只有列在“当前有效”区域的文档,才作为现网架构、部署运维和产品边界的事实依据。
- 没有列入“当前有效”区域的材料,默认只作为设计过程记录、阶段性任务单或历史参考。
- 历史文档即使保留在仓库中,也不应被当作当前系统的真实规则
## 1. 当前有效
- [../README.md](../README.md)
项目总览、当前架构和启动入口。
- [DOCUMENTATION_GOVERNANCE.md](DOCUMENTATION_GOVERNANCE.md)
文档治理约定,定义事实来源优先级、命名规则、归档规则与语言/编码约束。
- [CURRENT_STATUS_20260425.md](CURRENT_STATUS_20260425.md)
2026-04-25 的项目状态快照,包含结果目录、运行时、健康检查摘要。
@@ -22,6 +25,9 @@
- [DATABASE_SELF_MAINTENANCE_AUDIT_20260425.md](DATABASE_SELF_MAINTENANCE_AUDIT_20260425.md)
当前数据库自维护机制与现场数据库一致性审计结果。
- [CODEBASE_CLEANUP_AUDIT_20260425.md](CODEBASE_CLEANUP_AUDIT_20260425.md)
代码库清理审计,记录过渡文件、文档治理和编码显示问题的判定结果。
- [PROJ_CONFIGURATION.md](PROJ_CONFIGURATION.md)
PROJ / GDAL 相关专项配置说明。
@@ -39,9 +45,6 @@
- [ISCE2_PRODUCTION_RELIABILITY_HARDENING_DESIGN_20260424.md](ISCE2_PRODUCTION_RELIABILITY_HARDENING_DESIGN_20260424.md)
ISCE2 生产链路稳定性修补与约束。
- [DINSAR_ENHANCEMENT_TASKS.md](DINSAR_ENHANCEMENT_TASKS.md)
D-InSAR 生产相关任务清单。
## 3. 时序 InSAR / SBAS
- [ISCE2_SBAS_TIMESERIES_DESIGN.md](ISCE2_SBAS_TIMESERIES_DESIGN.md)
@@ -51,38 +54,56 @@
- 当前前端顶级显示名已经统一为“时序 InSAR”。
- 当前默认接入仍然是 SBAS 路径,因此这两份文档仍然有效。
- `SBAS_*` 命名的一批旧文档大多是阶段性设计材料,不再作为总事实来源
- `SBAS_*` 命名的一批旧文档已经归档,只保留历史追溯价值
## 4. 配对与前端导航
- [PAIRING_ENHANCEMENT_DESIGN.md](PAIRING_ENHANCEMENT_DESIGN.md)
- [PAIRING_SYSTEM_REFACTOR_PLAN_20260413.md](PAIRING_SYSTEM_REFACTOR_PLAN_20260413.md)
- [FRONTEND_NAVIGATION_ARCHITECTURE.md](FRONTEND_NAVIGATION_ARCHITECTURE.md)
## 5. Gamma / PyINT / WSL 预留
说明:
- `PAIRING_ENHANCEMENT_DESIGN.md` 保留配对语义、策略命名和产品交互边界设计价值。
- 当前 pairing cache 的运行态事实,以 `CURRENT_STATUS_20260425.md``DATABASE_SELF_MAINTENANCE_AUDIT_20260425.md` 为准。
## 5. Gamma / PyINT
- [GAMMA_WSL2_INTEGRATION_PLAN.md](GAMMA_WSL2_INTEGRATION_PLAN.md)
- [PYINT_GAMMA_INTEGRATION_DESIGN_20260418.md](PYINT_GAMMA_INTEGRATION_DESIGN_20260418.md)
- [PYINT_INPUT_ASSET_ADAPTATION_DESIGN_20260419.md](PYINT_INPUT_ASSET_ADAPTATION_DESIGN_20260419.md)
- [PYINT_LT1_PRECISE_ORBIT_BRIDGE_DESIGN_20260419.md](PYINT_LT1_PRECISE_ORBIT_BRIDGE_DESIGN_20260419.md)
- [PYINT_GAMMA_AB_FINDINGS_20260420.md](PYINT_GAMMA_AB_FINDINGS_20260420.md)
说明:
- 这部分主要作为 Gamma / PyINT 接入的预留设计和实验记录
- 真正的当前运行时事实,以 `WSL_RUNTIME_REFACTOR_DESIGN_20260422.md``.env` 和健康面板为准
- 这部分保留当前仍有导航价值的 PyINT / Gamma 设计与结论
- 旧的 `GAMMA_WSL2_INTEGRATION_PLAN.md` 已于 2026-04-26 归档,因为它描述的是已被替代的 `/idl` + 独立 Gamma 服务方案
- 真正的当前运行时事实,以 `WSL_RUNTIME_REFACTOR_DESIGN_20260422.md``README.md` 和健康面板为准。
## 6. 安全与审计
- [SECURITY_AUDIT_2026-03-12.md](SECURITY_AUDIT_2026-03-12.md)
## 7. 历史参考
## 7. 工作笔记
- [../INIT.md](../INIT.md)
说明:
- `INIT.md` 视为工作笔记,不是架构、部署和运行事实的最高依据。
- 需要判断“当前真实规则”时,优先看 `README.md`、本页和长期有效文档。
## 8. 历史参考
以下材料默认视为历史设计记录或过程文档:
- [archive/INDEX.md](archive/INDEX.md)
- `docs/archive/`
- `SBAS_*`
- `WSL2_ISCE2_MINTPY_SBAS_INTEGRATION_PLAN_20260412.md`
- `项目汇报.md`
- 各类 `*_EXPERIMENT_*` / `*_PROGRESS_*` / `*_TODO_*`
- 已归档的 `SBAS_*` 阶段文档
- 已归档的 `GAMMA_WSL2_INTEGRATION_PLAN.md`
- 已归档的 `PAIRING_SYSTEM_REFACTOR_PLAN_20260413.md`
- 已归档的 `DINSAR_ENHANCEMENT_TASKS.md`
- 已归档的 `WSL2_ISCE2_MINTPY_SBAS_INTEGRATION_PLAN_20260412.md`
- 已归档的 `项目汇报.md`
- 已归档的各类 `*_EXPERIMENT_*` / `*_PROGRESS_*` / `*_TODO_*`
最后更新:2026-04-25
最后更新:2026-04-26
+4 -2
View File
@@ -2,13 +2,15 @@
**版本**: v2.0
**日期**: 2026-03-08
**状态**: 设计阶段
**状态**: 概念设计,部分能力已落地
> 更新说明(2026-04-26):截至 2026-04-25pairing cache、pairing health 状态和基础指标统计已经在现网落地。当前运行态事实请优先参考 `CURRENT_STATUS_20260425.md`、`DATABASE_SELF_MAINTENANCE_AUDIT_20260425.md` 和健康检查接口;本文档保留配对语义、策略命名、产品交互和后续演进方向的设计价值。
---
## 一、背景与目标
### 1.1 现有系统局限
### 1.1 设计起点(2026-03-08 基线)
当前配对系统采用**单池全组合**模式:
- 所有影像放入同一个池子,两两组合,用时间基线范围过滤
+1 -1
View File
@@ -164,7 +164,7 @@ GET /api/ai-diagnosis?page=1&limit=20&result_id=123&risk_level=HIGH&sort=-create
GET /api/ai-diagnosis/{id}
```
**响**
**响**
```json
{
"id": 42,
+1 -1
View File
@@ -121,7 +121,7 @@
|------|------|
| `backend/app/services/envi_service.py` | ENVI 工作流核心(6 步流程、GCP 生成、文件稳定等待) |
| `backend/app/services/envi_runner_cli.py` | 子进程入口(加载 .env、调用 run_workflow |
| `backend/app/services/job_handlers.py` | Job handler(子进程监控、keepalive、文件稳定检查 |
| `backend/app/services/job_handlers.py` | Job handler(子进程监控、keepalive、文件稳定检查 |
| `backend/app/services/job_worker.py` | Worker 主循环(心跳、stale 检测) |
| `backend/app/services/task_service.py` | Task 管理(僵尸检测在 get_active_tasks 中) |
| `backend/app/routers/tasks.py` | Task API(含 force-cancel 端点) |
+85
View File
@@ -0,0 +1,85 @@
# 历史文档索引
最后更新:2026-04-26
本页用于组织 `docs/archive/` 下的历史文档。
原则:
- 本目录中的材料默认不作为当前系统事实来源。
- 它们保留用于追溯设计演进、阶段性判断和历史决策背景。
- 当前真实规则优先看:
- [../../README.md](../../README.md)
- [../INDEX.md](../INDEX.md)
- [../DOCUMENTATION_GOVERNANCE.md](../DOCUMENTATION_GOVERNANCE.md)
## 1. 2026-04-26 归档批次
### 1.1 旧 Gamma 直连方案
- [GAMMA_WSL2_INTEGRATION_PLAN.md](GAMMA_WSL2_INTEGRATION_PLAN.md)
说明:
- 这份文档描述的是旧的 `/idl/jobs/dinsar` + 独立 Gamma service / status 端点方案。
- 当前代码和文档已经转向多引擎生产中心、共享 WSL 运行时和 `pyint`/Gamma 集成路径,因此该文档只保留历史参考价值。
### 1.2 旧配对重构计划与任务板
- [PAIRING_SYSTEM_REFACTOR_PLAN_20260413.md](PAIRING_SYSTEM_REFACTOR_PLAN_20260413.md)
- [DINSAR_ENHANCEMENT_TASKS.md](DINSAR_ENHANCEMENT_TASKS.md)
说明:
- 这两份材料保留分阶段计划和当时边界判断的价值,但不再作为当前系统事实来源。
- 当前 pairing 运行态事实以 `CURRENT_STATUS_20260425.md``DATABASE_SELF_MAINTENANCE_AUDIT_20260425.md` 和健康检查为准。
- 当前 D-InSAR 生产设计以 `PRODUCTION_RESULTS_MULTI_ENGINE_DESIGN_20260423.md``ISCE2_MANAGED_DINSAR_IMPLEMENTATION_20260424.md``ISCE2_PRODUCTION_RELIABILITY_HARDENING_DESIGN_20260424.md` 为准。
## 2. 2026-04-25 归档批次
### 2.1 SBAS 阶段文档
- [SBAS_FRONTEND_UX_SPEC_20260406.md](SBAS_FRONTEND_UX_SPEC_20260406.md)
- [SBAS_IMPLEMENTATION_TODO_20260406.md](SBAS_IMPLEMENTATION_TODO_20260406.md)
- [SBAS_PROGRESS_STATUS_20260406.md](SBAS_PROGRESS_STATUS_20260406.md)
- [SBAS_RESULT_MANAGEMENT_AND_DISPLAY_SPEC_20260406.md](SBAS_RESULT_MANAGEMENT_AND_DISPLAY_SPEC_20260406.md)
- [SBAS_SYSTEM_CHANGE_RISK_ASSESSMENT_20260406.md](SBAS_SYSTEM_CHANGE_RISK_ASSESSMENT_20260406.md)
- [SBAS_SYSTEM_EMBEDDING_DESIGN_20260406.md](SBAS_SYSTEM_EMBEDDING_DESIGN_20260406.md)
- [SBAS_SYSTEM_INTEGRATION_AUDIT_20260406.md](SBAS_SYSTEM_INTEGRATION_AUDIT_20260406.md)
- [SBAS_TASK_PATH_MODE_EVALUATION_20260406.md](SBAS_TASK_PATH_MODE_EVALUATION_20260406.md)
说明:
- 这批文档描述的是时序 InSAR / SBAS 接入初期的阶段方案。
- 当前仍有效的时序主文档保留在 `docs/` 根目录:
- [../ISCE2_SBAS_TIMESERIES_DESIGN.md](../ISCE2_SBAS_TIMESERIES_DESIGN.md)
- [../ISCE2_SBAS_PRODUCT_SPEC.md](../ISCE2_SBAS_PRODUCT_SPEC.md)
### 2.2 旧集成方案与汇报材料
- [WSL2_ISCE2_MINTPY_SBAS_INTEGRATION_PLAN_20260412.md](WSL2_ISCE2_MINTPY_SBAS_INTEGRATION_PLAN_20260412.md)
- [项目汇报.md](项目汇报.md)
### 2.3 PyINT 过程型材料
- [PYINT_GAMMA_IMPLEMENTATION_TODO_20260418.md](PYINT_GAMMA_IMPLEMENTATION_TODO_20260418.md)
- [PYINT_LT1_COREG_ORBIT_HYPOTHESIS_EXPERIMENT_20260420.md](PYINT_LT1_COREG_ORBIT_HYPOTHESIS_EXPERIMENT_20260420.md)
- [PYINT_LT1_DEM_GEOMETRY_CHAIN_EXPERIMENT_20260420.md](PYINT_LT1_DEM_GEOMETRY_CHAIN_EXPERIMENT_20260420.md)
- [PYINT_LT1_DEM_SOURCE_EXPERIMENT_RESULTS_20260420.md](PYINT_LT1_DEM_SOURCE_EXPERIMENT_RESULTS_20260420.md)
- [PYINT_LT1_PAIR_SELECTION_EXPERIMENT_20260421.md](PYINT_LT1_PAIR_SELECTION_EXPERIMENT_20260421.md)
说明:
- 这批文档保留实验和实施过程价值,但不再放在主导航中。
- 当前仍有导航价值的 PyINT 文档保留在 `docs/` 根目录。
## 3. 更早的历史文档
本目录还保留以下较早批次的历史材料:
- 安全审计与修复过程
- 热修复记录
- 旧版 AI / ENVI / 日志管理设计
- 历史 TODO 与阶段性工作单
如需判断它们是否仍然有效,以 `docs/INDEX.md` 的“当前有效”区为准。