# 自动化边界：什么能自动，什么必须人工

**结论日期**：2026-09-15
**背景**：用户要求「每天自动打开通达信下载数据」，实测后确定**做不到**。

## ✅ 已验证可自动化

| 环节 | 手段 | 实测结果 |
| --- | --- | --- |
| 启动通达信 | `Start-Process TdxW.exe` | ✅ |
| 自动登录 | 强制激活登录框 + **真实鼠标点击**红色「登录」按钮 | ✅ 可重复，约 6 秒进主界面 |
| 登录后关闭客户端 | `CloseMainWindow()` | ✅ |
| 日更链路 | `run_daily_update.cmd` | ✅ 端到端 exit 0 |
| 重建全市场目录 | `build_full_market_catalog.py` | ✅ |
| 看板刷新 | `run_dashboard.py`（链内含） | ✅ |
| 看板公网分发 | cloudflared 隧道 + 看门狗 | ✅ |
| 数据新鲜度校验 | 解析 `.day` 最后交易日 | ✅ |

## ❌ 无法自动化（实测穷尽手段）

| 环节 | 试过的手段 | 结果 |
| --- | --- | --- |
| **打开「选项」菜单** | 鼠标点击（3 倍放大图校准坐标 ±5px） | ❌ |
| | `mouse_event` 注入 | ❌ |
| | **`SendInput`**（更底层） | ❌ |
| | `Alt` / `Alt+S` 菜单激活 | ❌ |
| | **UI Automation** 枚举并 Invoke | ❌ 菜单项未暴露（窗口仅 34 个后代元素） |
| | `Ctrl+D` | ❌ 那是「系统设置」 |
| **经由「键盘精灵」调功能** | 输入 `.96` 等编号 | ❌ 只认股票代码与周期功能键，不支持功能命令 |

### 关键对照证据

**同一个进程内**：

- 登录按钮的**合成鼠标点击完全有效** → 说明注入通道本身没问题
- 菜单栏对**所有**合成输入免疫 → 说明是菜单栏**主动过滤**

结论：通达信顶部菜单栏是**自绘控件 + 主动拒绝注入输入**。
这是该客户端的设计，不是坐标或注入方式的问题。

## 因此：数据下载必须人工

正确的人工步骤（用户确认）：

1. 打开通达信 → 登录
2. **选项** → **盘后数据下载** → 勾选「**日线和实时行情数据**」→ 点「**开始下载**」
3. **选项** → **专业财务数据** → **三个**「开始下载」按钮依次点击
4. 全部完成后**关闭通达信**

> 官方提示：交易日在 **15:45** 后才能下载到当天沪深港数据。

## 人工下载完成后，可自动接续

按顺序执行即可（`deploy\daily_all.cmd` 已封装前两步）：

```cmd
C:\FundamentalWorkbench\deploy\daily_all.cmd
```

它内部依次做：

1. `run_daily_update.cmd` → M1 → M2 → 看板
2. `build_full_market_catalog.py` → 重建全市场目录

之后看板自动通过隧道对外提供，页面每分钟轮询 `version.json`，
发现新版本会提示「发现新数据」。

## 曾误判的两点（已纠正）

1. **`Ctrl+D` ≠ 盘后数据下载**。它是「系统设置」的快捷键。
2. **`user.ini` 的 `TimeDown=1` ≠ 启用定时自动下载**。
   2026-09-15 17:00 实测无任何动作，`.day` 文件时间戳未推进。
   该设置项在界面上确实存在，但**不能依赖它**。

## 相关文件

- `deploy\通达信自动登录方法.md` —— 可用的登录流程（含三个坑）
- `deploy\tdx_e2e_download.ps1` —— 启动/登录部分可用，**菜单部分无效**
- `deploy\daily_all.cmd` —— 日更 + 目录重建（人工下载后运行）
- `deploy\断点记录.md` —— 历史断点
