Files
Neo-ZQYY/docs/audit/changes/2026-03-22__trace-path-fix-miniprogram-login-race.md
Neo 14a12342b5 chore(audit): 补追 96 份未入仓审计孤本 — 覆盖 2026-02-26 ~ 2026-04-08
这些审计记录原本堆积在 docs/audit/changes/changes/ 嵌套误产物目录下(由开发机迁移
79d3c2e 前后的不明批量操作产生)。由于同期 .gitignore 屏蔽了 docs/audit/ 全目录,
它们从未入过 git 任何分支 history。删除即永久丢失。

按 docs/specs/audit-gap-recovery/tasks.md 阶段 1 执行,将全部 96 份 D 类孤本
(主目录无同名、git history 亦无记录)复制到 docs/audit/changes/ 主目录入仓。

涵盖主题: P1-P18 全栈集成 / 多模块累积变更 / ETL bug 修复 / 业务日切 /
   召回与任务引擎改造 / 租户管理与审批 / 董事会财务 / 客户与助教详情 /
   DDL 基线合并 / Kiro 到 Claude Code 迁移

阶段 2(B 类内容漂移 1 份)和阶段 4(嵌套目录删除)独立推进。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 06:35:42 +08:00

58 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 变更审计记录trace 日志路径修复 + 小程序登录竞态修复
| 字段 | 值 |
|------|-----|
| 日期 | 2026-03-22 23:04:58 |
| Prompt-ID | P20260322-230035 |
| Session-ID | bc69ee78 |
| Session 路径 | docs/audit/session_logs/2026-03/22/85_77a7e7b7_223315 |
## 操作摘要
修复两个独立问题:(1) 后端 trace 日志路径因 cwd 为 `apps/backend/` 导致相对路径解析错误;(2) 小程序端 `checkAuthStatus()` 与登录操作的竞态条件。同时清理临时调试脚本。
## 本次对话文件变更
### 新增文件
- `docs/audit/prompt_logs/prompt_log_20260322_230035.md`
- `docs/audit/session_logs/2026-03/22/85_77a7e7b7_223315/main_01_bc69ee78.md`
- `docs/audit/session_logs/2026-03/22/87_e3ed0bda_224451/main_01_341f2e98.md`
### 删除文件
- `scripts/ops/_tmp_find_login2.py` — 临时调试脚本,已完成使命
- `docs/audit/session_logs/.../main_01_f8989b2e.md` — 被 bc69ee78 supersede
- `docs/audit/session_logs/.../main_01_d4907912.md` — 被 341f2e98 supersede
## 改动注解
### `apps/backend/app/trace/config.py`
- 变更类型:修改
- 原始原因:`DEV_TRACE_LOG_DIR` 默认值 `export/dev-trace-logs` 是相对路径,后端 cwd 为 `apps/backend/`,日志写到了 `apps/backend/export/dev-trace-logs/` 而非项目根
- 思路分析:`_init_from_env()` 中检测相对路径,若 `NEOZQYY_ROOT` 环境变量存在则 `os.path.join(project_root, raw_log_dir)` 转绝对路径。依赖已有环境变量约定,比 `__file__` 回溯更可靠
- 修改结果trace 日志统一写入项目根 `export/dev-trace-logs/`,与 EXPORT-PATHS.md 一致。不影响已设绝对路径的环境
### `apps/miniprogram/miniprogram/app.ts`
- 变更类型:修改
- 原始原因:`onLaunch``checkAuthStatus()` 用旧 token 发 `/api/xcx/me`401 后 `clearTokens()` 清掉用户刚登录获得的新 token
- 思路分析token 快照比对——发起前记录 `tokenAtStart`,返回后若 token 已被 `onLogin` 更新则放弃路由和错误处理。最小侵入,无需锁或信号量
- 修改结果:消除 `checkAuthStatus``onLogin` 竞态窗口
### `apps/miniprogram/miniprogram/utils/request.ts`
- 变更类型:修改
- 原始原因:`tryRefreshToken()` 失败时无条件 `clearTokens()` + `redirectToLogin()`,与 app.ts 竞态联动
- 思路分析:刷新前记录 `tokenBeforeRefresh`,失败时检查 token 是否已变化,已变化则跳过清除
- 修改结果:双重竞态保护,不再盲目清除新 token
### `scripts/ops/_tmp_find_login2.py`
- 变更类型:删除
- 原始原因:临时脚本,定位登录竞态问题后已无用途
## DDL / 迁移检查
- 无新增迁移 SQL
- 无数据库 schema 变更
## 合规状态
- `code_without_docs`: 无缺失
- `api_changed`: false
- `openapi_spec_stale`: false