feat: improve work cards and browser startup

This commit is contained in:
2026-09-07 19:32:16 +08:00
parent b42b2d33da
commit 9145508665
9 changed files with 427 additions and 24 deletions
+26
View File
@@ -0,0 +1,26 @@
# 作品监控 CARD 列表与封面本地缓存
## 调研记录
- 原作品监控窗口位于 `src/accounts_app.py::Window.works_dialog`,原实现使用 `QTableWidget` 展示 10 列数据。
- 保存逻辑依赖勾选作品 ID、监控模式和刷新间隔;这部分行为保持不变。
- 作品数据中的 `cover` 是平台返回的 HTTPS 图片地址,作品缓存数据本身保存在 SQLite 中,但封面此前每次打开窗口都没有本地文件缓存。
- 当前 UI 已有 `QNetworkAccessManager`,可复用其网络请求能力;不新增运行依赖。
## 最终方案
- 用 `QScrollArea + QGridLayout` 展示 CARD,固定 3 列,因此每行最多 3 个卡片。
- 每张卡片采用左侧 132×132 封面、右侧作品描述、发布时间、作品 ID、点赞/评论/收藏/分享、本地更新时间和监控勾选框的布局。
- 封面缓存写入数据根目录下的 `work_covers/`,文件名由“账号 ID + 作品 ID”哈希生成,避免直接使用外部字符串作为文件名。
- 打开列表时优先读取本地图片;只有缓存不存在且 URL 为允许的抖音图片 HTTPS 域名时才发起请求。成功下载后先写临时文件,再原子替换缓存文件。
- 保留不可见的原选择模型用于复用既有保存逻辑和兼容原有离线 UI 回归测试;用户可见区域不再显示表格。
## 验证
- `.venv/bin/python -m unittest discover -s src -v`:56 个测试通过。
- `python -m py_compile src/accounts_app.py`:通过。
- offscreen Qt 下完成作品卡片窗口构造 smoke check。
## 安装说明
无需新增依赖,继续按项目现有方式安装 `requirements-desktop.txt` 即可。
@@ -0,0 +1,38 @@
# Windows 远程部署连接方案
## 参考来源
参考 `/home/rogee/Workspace/windows/AGENTS.md` 与其 `.mcp.json`:Windows 操作优先使用 Windows MCP;MCP 不满足需求或批量命令不便时使用 SSH。
## 当前项目配置
项目级 `.pi/mcp.json` 增加 `windows-ui`:
```json
{
"url": "http://10.1.1.101:8765/mcp",
"excludeTools": ["screenshot"]
}
```
该配置只用于当前 Pi 项目,不写入 Windows 安装包。MCP 服务不可用时,不修改 MCP 配置来绕过问题,按本机 SSH 配置选择目标主机。
## 部署流程
1. 本地运行测试并检查工作区差异。
2. Windows MCP 用于启动、停止、查看程序和人工 GUI 验收。
3. SSH 用于源码/构建产物传输、Windows 原生构建、安装和日志检查。
4. Windows x64 主机上执行 `build_windows.py`,生成 `release/DouyinAccounts-0.1.8-Windows-x64-Setup.exe`。
5. 安装后通过 Windows MCP 做离线启动冒烟和界面验收;不自动登录账号、不恢复业务、不执行关注或私信。
6. 记录产物路径、SHA256 和验证结果,不记录密码、Cookie、UID 或登录目录内容。
## 空白 Windows 环境
```powershell
py -3.12 -m venv .venv
.\\.venv\\Scripts\\python.exe -m pip install -r requirements-build-windows.txt
.\\.venv\\Scripts\\python.exe -m unittest discover -s src -v
.\\.venv\\Scripts\\python.exe build_windows.py
```
普通用户只运行生成的安装包,不需要 Python、Qt、Patchright 或额外下载浏览器。
@@ -0,0 +1,44 @@
# Windows 安装记录:作品 CARD 与封面缓存
## 目标
将当前 `src/accounts_app.py` 的作品 CARD 列表和封面本机缓存改动安装到 Windows x64 主机。远程 MCP 当前会话未加载,按项目规则使用 SSH fallback。
## 连接与冲突处理
- 目标:Windows 10 x64,SSH 目标 `10.1.1.101`,账号和密钥来自本机 SSH 配置/授权环境。
- 安装前发现 `DouyinAccounts.exe` 正在运行,已关闭其进程树;没有删除数据目录,也没有主动关闭或修改账号登录数据。
## 构建
- Windows 构建目录:`C:\Users\rogee\douyin-pc-build-20260906`
- 同步文件:`src/accounts_app.py`
- Windows 单元测试:56 个通过。
- 原生构建:`build_windows.py` 成功,Inno Setup 编译耗时约 312 秒。
- 安装包:`release/DouyinAccounts-0.1.8-Windows-x64-Setup.exe`
- 安装包 SHA256:`6CA36F4388AB6D5DF7551E467E94B6FB27C1CCF353D974DAA2058661EB3D1A69`
## 安装与验证
使用静默参数 `/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /CLOSEAPPLICATIONS` 安装完成,未自动启动业务应用。
安装路径:`C:\Users\Rogee\AppData\Local\Programs\DouyinAccounts\DouyinAccounts.exe`
安装后的可执行文件与 Windows 构建目录中的 dist 可执行文件 SHA256 一致:
`386AD6F7E6FA2A2C2811E4AD171E06698799D8584F5D6B3FFF01EFE9576B1790`
已执行安装包自带离线冒烟测试,结果:
```json
{
"qt": true,
"core": true,
"sqlite": true,
"patchright": true,
"accounts": 0,
"real_write_actions": 0
}
```
本次未启动真实业务窗口,因此没有触发登录、作品刷新、关注或私信操作;登录状态保持不变。
@@ -0,0 +1,23 @@
# CARD 信息布局与 Chrome 恢复页面提示
## 修改
- CARD 右侧信息顺序调整为:
- `ID:xxx`
- 作品描述,最多展示 2 行,完整内容保留在 tooltip
- `点赞 · 评论 · 收藏 · 分享`
- `发布时间:xxx`
- `更新时间:xxx`
- 封面改为左侧 132×158 全高展示,CARD 外层不再预留图片 padding。
- 浏览器启动参数增加 `--disable-session-crashed-bubble`,禁止 Chromium 弹出“恢复页面/未正常关闭”提示;不修改登录目录中的 Cookie 或历史数据。
## 验证与部署
- 本地测试:56 个测试通过。
- Windows 原生测试:56 个测试通过。
- Windows x64 原生构建成功。
- 安装前关闭了正在运行的 `DouyinAccounts.exe` 进程树。
- 已静默更新到:`C:\Users\Rogee\AppData\Local\Programs\DouyinAccounts\DouyinAccounts.exe`
- 安装后 dist 与已安装可执行文件 SHA256 一致:
`6EEC024995F8EBE17CC71C007F5E6B40CC275...`
- 安装包自带离线冒烟测试通过,Qt、核心、SQLite、Patchright 均正常,未执行真实业务写操作。
@@ -0,0 +1,21 @@
# CARD 互动事件分开展示
## 修改
作品卡片右侧互动数据由单行改为分行显示:
- `点赞:xxx`
- `评论:xxx`
- `收藏:xxx`
- `分享:xxx`
描述仍支持最多两行折叠,并提供“展开/收起”按钮查看全文;封面随卡片高度保持左侧全高。
## Windows 部署验证
- Windows 原生单元测试:56 个通过。
- Windows 原生构建成功。
- 已静默安装到 `C:\Users\Rogee\AppData\Local\Programs\DouyinAccounts`。
- 安装后的 dist 与已安装可执行文件 SHA256 一致:`5BC12B0D9584998785F9FA502E80060492D97...`
- 安装包离线冒烟测试通过,未执行真实业务写操作。
- 当前应用未运行。