# EveryPublish EveryPublish 是一个本机部署的多平台内容发布 Web 控制台:用户打开浏览器登录,在网页内完成账号、素材、任务、审核、挑战和结果管理。 > 当前交付边界:Web-only V1。macOS/Windows 客户端、Agent 配对和设备管理暂停,不进入本阶段验收。 ## 当前架构 ```text 浏览器 React + TDesign │ REST / Browser WebSocket ▼ Go server :8090 ├─ MySQL / Redis ├─ 本地素材 StorageDriver ├─ WebExecutor(mock 联调) └─ PlatformAdapter(真实平台逐个接入) ``` 服务器运行在当前设备时,发布执行所需的浏览器 profile、cookie 和素材均留在该设备;不需要安装客户端或输入配对码。 ## 本地启动 ```bash make infra-up make run cd apps/web && npm run dev -- --port 3013 ``` 本地联调默认使用 `EXECUTOR_MODE=mock`,不会访问真实平台。要联调已接入的 B 站 adapter,启动服务前设置 `EXECUTOR_MODE=web`;二维码扫码或 Cookie 导入成功后,任务才会走真实平台链路。没有人工扫码时,使用 adapter HTTP stub 和 mock 账号完成自动化验证,不把 mock URL 当成真实发布。 - Go API/Browser WS:`http://127.0.0.1:8090` - Vite Web:`http://127.0.0.1:3013` - 生产构建:`cd apps/web && npm run build`,设置 `STATIC_DIR=apps/web/dist` 后由 Go server 托管 ## 网页功能 - 工作台:任务统计、执行器状态、挑战和最近任务。 - 账号管理:平台账号、扫码/Cookie 登录、健康检查、重新登录。 - 素材库:上传进度、SHA-256 去重、预览、分组和删除。 - 发布管理:新建、草稿、审核、排期、任务详情、重试和取消。 - 挑战/通知/审计:二维码、验证码、实时状态、历史追踪。 网页端不需要客户端安装、设备配对或 Agent WSS。客户端代码仅作为历史归档保留。 ## 文档入口 | 文档 | 说明 | |---|---| | [docs/web-only-v1-plan.md](docs/web-only-v1-plan.md) | 当前 V1 范围、页面、执行器和验收 | | [docs/web-only-logic-diagrams.md](docs/web-only-logic-diagrams.md) | Web-only 系统、登录、上传、执行、扫码逻辑图 | | [docs/reference-repositories-analysis.md](docs/reference-repositories-analysis.md) | 三个 MIT 参考仓库的拉取记录和借鉴边界 | | [docs/system-design.md](docs/system-design.md) | 当前系统设计 | | [docs/delivery-plan.md](docs/delivery-plan.md) | 当前交付排期 | | [docs/page-wireframes.md](docs/page-wireframes.md) | 网页 ASCII 线框 | | [docs/api.md](docs/api.md) | REST API | | [docs/progress.md](docs/progress.md) | 当前进度和剩余风险 | ## 参考项目 - `references/social-auto-upload`(MIT,dreammis,CLI/uploader/QR 参考) - `references/social-auto-upload-web-ui`(MIT,DevilJie,Web/SSE/任务队列参考) - `references/MediaPublishPlatform`(MIT,funfan0517,批量上传/定时/发布记录参考) 参考代码只读保存,新增实现必须保留 MIT 版权说明;当前工程不混入 Vue/Flask/SQLite 三套运行时。 ## 开发原则 - mock executor 只能证明业务状态机,不冒充真实平台成功。 - 真实扫码无法执行时,状态必须停在“等待扫码”,不能自动标记 active。 - 所有任务、挑战和素材错误必须能在页面和日志中定位。 - 不做刷量、绕过平台风控、矩阵养号、私信轰炸等功能。