Fix add account request metadata handling
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# 添加小号失败修复与 Windows 发布记录
|
||||
|
||||
## 问题与修复
|
||||
|
||||
日志中的真实异常为:
|
||||
|
||||
```text
|
||||
[操作失败] 添加账号:TypeError
|
||||
```
|
||||
|
||||
根因是界面请求统一注入 `_request_id`,账号添加分支却将完整请求字典传给 `Store.add(**data)`;`Store.add()` 不接受 `_request_id`,因此抛出 `TypeError`。
|
||||
|
||||
修复:`src/account_engine.py` 的 `add` 分支改为显式传递 `role`、`name`、`uid`、`owner`,保留请求元数据供 UI 回包,但不传入存储层。`src/test_accounts.py` 增加带 `_request_id` 的回归输入。
|
||||
|
||||
## 本地验证
|
||||
|
||||
- `src/test_accounts.py` + `src/test_plan01.py`:54 项通过。
|
||||
- onboarding UI 相关聚焦测试:1 项通过。
|
||||
- Python 编译、`git diff --check`:通过。
|
||||
- 完整 onboarding UI 测试在当前 Linux offscreen 环境的既有 profile 测试处超时;未将其归因于本次改动。
|
||||
- 其余本地测试 77 项通过,另有 1 项既有日志文案断言与当前文案不一致,未扩大本次修复范围。
|
||||
|
||||
## Windows 原生构建与安装
|
||||
|
||||
- 主机:`10.1.1.101`
|
||||
- 构建目录:`C:\Users\Rogee\douyin-pc-build-20260920-follow`
|
||||
- 安装目录:`C:\Users\Rogee\AppData\Local\Programs\DouyinAccounts`
|
||||
- Windows Python:3.12.10
|
||||
- 构建命令:`python build_windows.py`
|
||||
- PyInstaller、打包离线冒烟、CLI `--help`、Inno Setup:通过。
|
||||
- 安装包:`release/DouyinAccounts-0.1.8-Windows-x64-Setup.exe`
|
||||
- 安装包大小:222,720,245 bytes
|
||||
- SHA-256:`12591caf2359f21a333e3b2a1232265ce0b935c49709280afdf2edf470a9c512`
|
||||
- 安装退出码:`0`
|
||||
- 安装日志:`Installation process succeeded.`
|
||||
- 构建目录与安装目录的 `DouyinAccounts.exe` SHA-256 均为:`6f16dd1818449363be1df262cc5aa0d1b8ac987552ba3ab188cbda769e58821d`
|
||||
- 原有本地数据目录仍存在,未传输、删除或修改登录目录、Cookie、数据库内容。
|
||||
|
||||
源码和构建文件通过 SSH 传输;未传输账号数据。安装后通过 Windows MCP 启动并检查 GUI,窗口及“添加账号/停止全部/设置”等控件正常显示。未自动登录、启动业务规则、关注、私信或标记已读;应用当前保持打开供用户手动验证。
|
||||
@@ -928,7 +928,12 @@ class Engine:
|
||||
|
||||
async def _command(self, name, data):
|
||||
if name == "add":
|
||||
ident = self.store.add(**data)
|
||||
ident = self.store.add(
|
||||
role=data["role"],
|
||||
name=data["name"],
|
||||
uid=data.get("uid"),
|
||||
owner=data.get("owner"),
|
||||
)
|
||||
self.begin_login(ident)
|
||||
return ident
|
||||
if name == "rule":
|
||||
|
||||
@@ -756,7 +756,12 @@ class EngineTest(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_unbound_group_cannot_start_and_add_starts_login_only(self):
|
||||
with patch.object(self.engine, "begin_login") as login:
|
||||
ident = await self.engine.command(
|
||||
"add", {"role": "main", "name": "界面名称"}
|
||||
"add",
|
||||
{
|
||||
"role": "main",
|
||||
"name": "界面名称",
|
||||
"_request_id": "request-1",
|
||||
},
|
||||
)
|
||||
login.assert_called_once_with(ident)
|
||||
with self.assertRaises(ValueError):
|
||||
|
||||
Reference in New Issue
Block a user