feat(发布计划): 改按名字发(文件名 名字_日期_编号)+ 账号管理整页下线 + 自动切号一轮发完
发布计划不再绑设备、不再依赖账号台账:上传文件名 `名字_日期_编号`(标题行 `标题 || 正文_名字_日期_编号`),运行时读本机当前抖音昵称取计划;靠循环块 「一轮把本机待发的号跑完」自动切号,一直发到发完。 · 解析/配对换键:右锚定认名字(不许含下划线、不许纯数字 —— 不合法直接拒收并说清原因), 删掉三处"手机号必须命中台账"的校验,加索引 ix_video_plan_name_date(启动时补建) · 新步骤三个:读本机账号名字 / 切换账号(**按名字点控件**、切完回读校验、遇登录页停本设备)/ 循环本机待发的号(试过不回头、跑一轮没进展就换号、停止·超时·上限三个干净出口) · 发布骨架改 18 步:读名字 → 校验账号(cmp_source=account_target)→ 推送(**推送前重读昵称核对**) → 抖音流程 → 标记结果;push_release 的 account 默认 name · 账号管理整页下线:删 core/ledger.py(serial_of 迁到 core/device_pool.py)、6 个 /api/ledger*、 「账号」页与 ledger.js、设备池「账号」列、设备端账号块;发布计划升为一级页签; device_account 表与 42 行历史数据保留、仍在备份清单内(**停用不等于删数据**) · 人工入口「按名字找设备」:新增 core/account_probe.py(只读探测、跳过在跑任务的设备) + POST /api/video_plan/push_by_account,没设备登着的号逐条报出来; 推送时把"实际是谁发的"写进 posted_serial / posted_device_name · 通知:新增 task.account.switch_failed / task.account.need_login · schema v12(posted_*)/ v13(device.cur_account_name / cur_name_at) · 文档同步:TASK_DEV / API / DATA_MODEL / ARCHITECTURE / NOTIFY / DEVICE_AGENT / DEPLOY / DEVELOPMENT / README / .env.example(两个抖音控件选择器抓一次填 .env) · 新增 scripts/tests/:6 套用例 + run_all.py(临时库 + 假设备,不碰真实数据、不连真机)
This commit is contained in:
+10
-1
@@ -71,8 +71,17 @@ DB_NAME=auto_control
|
||||
# USB_ADB_HOST=100.100.10.1 # USB 设备所在的部署机(默认值通常可用)
|
||||
# TAILSCALE_API_KEY=<...> # 需要 Tailscale 管理功能时
|
||||
# MCP_PLATFORM_PASS=<admin 的密码> # 改过 admin 密码必须同步,否则 MCP 登录失败
|
||||
|
||||
# 发布计划按名字发:抖音「我」页面上的**昵称控件**(用「抓取元素」抓一次,见 .env.example)
|
||||
# DOUYIN_NAME_SELECTOR_VALUE=
|
||||
# 自动切号:进「账号切换」列表那个入口(同样抓一次)
|
||||
# DOUYIN_SWITCH_SELECTOR_VALUE=
|
||||
```
|
||||
|
||||
> ⚠ **发布计划相关的两个选择器必须抓一次**(`DOUYIN_NAME_SELECTOR_VALUE` /
|
||||
> `DOUYIN_SWITCH_SELECTOR_VALUE`):不填时「读取本机账号名字」「切换账号」会**明确报错并跳过**
|
||||
> (不会瞎点、不会发错号),但也就发不出视频。改完 `.env` 要重启容器生效。
|
||||
|
||||
**防混库**(`DEPLOY_ENV` 与库名/库标签双向校验,配置项说明见 [DEVELOPMENT.md](DEVELOPMENT.md) §4.2
|
||||
与 `.env.example` 的「数据库」段):启动时若
|
||||
「`.env` 声明的环境」与「库名」或「库中登记的 `app_meta.deployment_env`」不符,**直接拒绝启动**并打印
|
||||
@@ -215,7 +224,7 @@ SUMMARY_TABLES = tuple(sorted(t.name for t in db.metadata.tables.values()))
|
||||
当前 17 张表:`app_meta` / `user` / `device_group` / `task_job` / `custom_action` /
|
||||
`apk_file` / `device` / `pending_device` / `agent_conversation` / `agent_experience` /
|
||||
`experience_audit` / `agent_action` / `device_install_log` / `task_step_log` / `done_mark` /
|
||||
`device_account`(账号台账)/ `video_plan`(视频发布计划)。
|
||||
`device_account`(账号台账,**已停用但仍在备份内**——停用不等于删数据)/ `video_plan`(视频发布计划)。
|
||||
完整说明见 [DATA_MODEL.md](DATA_MODEL.md) §6。
|
||||
|
||||
> ⚠ **视频素材(`data/videos/`)不进备份包**(几十 GB 会把备份搞坏):manifest 里有
|
||||
|
||||
Reference in New Issue
Block a user