# 2026-06-02 Windows/Ubuntu 编码换行深挖

## 日期
2026-06-02

## 变更摘要
第二轮 CRLF/UTF-8 深挖：新增 `text_io` 工具层、Git 索引 EOL 门控、安装向导与 MCP 脚本写文件统一 LF+UTF-8。

## 动机
工作区在 Windows 上可能显示 CRLF，但 Ubuntu 部署以 Git 索引为准；需在运行时杜绝 BOM/CRLF 写入 `.env` 与 shell 脚本，并防止 `sync_mysql_mcp_env` 把 CRLF 写回 `.env`。

## 涉及文件
- `server/utils/text_io.py`（新）
- `server/api/install.py`
- `server/api/sync_v2.py`（`detect_text_eol`）
- `scripts/sync_mysql_mcp_env.py`
- `scripts/check_text_eol.py`（新）
- `deploy/pre_deploy_check.sh`
- `.gitattributes`、`.editorconfig`（新）
- `tests/test_text_io.py`（新）
- `docs/audit/2026-06-02-windows-ubuntu-encoding-deep-dive.md`

## 迁移 / 重启
无 DB 迁移。后端改 `install.py` 仅影响安装向导写盘；已部署实例无需重启除非正在跑安装流程。

## 验证方式
```bash
python scripts/check_text_eol.py
bash deploy/check_shell_eol.sh
pytest tests/test_text_io.py -q
```

## 部署记录（2026-06-02）
- 前端：`vite build` → `index-DBKIQT7H.js`，已 tar+scp 至生产 `web/app/`
- 后端：scp `text_io.py`、`install.py`、`sync_v2.py`、门控脚本；`supervisorctl restart nexus`
- `/health` → `ok`，`/app/` → 200
