Files
CloudSearch/source_clean/docs/superpowers/plans/2026-05-23-single-container-drive-p0.md

59 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CloudSearch 单容器网盘能力 P0 实现计划
> **面向 AI 代理的工作者:** 必需子技能:使用 superpowers:subagent-driven-development(推荐)或 superpowers:executing-plans 逐任务实现此计划。步骤使用复选框(`- [ ]`)语法来跟踪进度。
**目标:** 将 UC 网盘转存能力和主应用云盘 driver 分发能力集成进 `source_clean`,由现有 `CloudSearch_App` 单容器构建和运行,不新增长期 transfer 容器。
**架构:** 在 Node/TypeScript 主应用内新增 `UcDriver` 和轻量 driver factory。`saveFromShare()`、凭据验证、连接测试仍走现有 `cloud_configs``save_records``/api/save` 路径,只扩展 `uc` 类型,不改变前端主流程。
**技术栈:** Node 20 fetch、TypeScript commonjs、Express、better-sqlite3、Vitest、Docker Compose。
---
## 文件结构
- 创建:`src/cloud/drivers/uc-api.ts` — UC API 常量、请求头、URL 解析、任务轮询辅助。
- 创建:`src/cloud/drivers/uc.driver.ts` — UC Cookie 验证、7 步转存、创建新分享,对齐现有 driver 返回结构。
- 创建:`src/cloud/drivers/uc.driver.test.ts` — UC driver 红绿回归测试,mock fetch 验证 API 流程。
- 创建:`src/cloud/driver-factory.ts` — 根据 `cloud_type` 创建 driver,避免 `credential.service.ts``cloud.service.ts` 分散 switch。
- 创建:`src/cloud/driver-factory.test.ts` — 验证 `uc` 使用 `UcDriver`,未知类型返回 `null`
- 修改:`src/cloud/cloud.service.ts` — 保存入口支持 `uc`,复用统一 driver factory。
- 修改:`src/cloud/credential.service.ts` — Cookie 测试和运行前凭据验证支持 `uc`
## 任务 1:写失败测试
- [ ] 编写 `src/cloud/driver-factory.test.ts`:断言 `createCloudDriver(uc, {cookie})` 产物 class 为 `UcDriver``unknown``null`
- [ ] 编写 `src/cloud/drivers/uc.driver.test.ts`:断言 UC URL 解析、Cookie 长度校验、mock fetch 的完整转存链路。
- [ ] 运行:`npm test -- src/cloud/driver-factory.test.ts src/cloud/drivers/uc.driver.test.ts`
- [ ] 预期:失败,原因是 `driver-factory``uc.driver` 不存在。
## 任务 2:实现 UC driver 和 factory
- [ ] 新增 `uc-api.ts``UC_API_BASE=https://pc-api.uc.cn``UC_SHARE_API``getUcHeaders()``parseUcShareUrl()`
- [ ] 新增 `uc.driver.ts`:实现 `validate()``saveFromShare()`,流程为 stoken、detail、save、poll save task、create share、poll share task、set password。
- [ ] 新增 `driver-factory.ts`:支持 `quark``baidu``aliyun``uc`
- [ ] 运行同一组测试,预期通过。
## 任务 3:接入主保存和凭据验证路径
- [ ] 修改 `cloud.service.ts`:用 factory 创建 driver`uc` 调用 `saveFromShare()`,返回字段写入现有 `save_records`
- [ ] 修改 `credential.service.ts``testCloudConnectionWithCookie(uc)``getAndValidateCredential(uc)` 使用 `UcDriver.validate()`
- [ ] 新增或扩展测试覆盖 factory 接入。
- [ ] 运行:`npm test -- src/cloud/driver-factory.test.ts src/cloud/drivers/uc.driver.test.ts`
## 任务 4:构建与单容器部署验证
- [ ] 运行:`npm run build`
- [ ] 运行:`docker compose build app`
- [ ] 运行:`docker compose up -d app`
- [ ] 验证:`docker compose ps` 只有 `app/redis/pansou`,没有 transfer 容器。
- [ ] 验证:`curl -fsS http://127.0.0.1:9527/health`
- [ ] 验证:`curl -fsS http://127.0.0.1:9527/api/admin/cloud-types` 能看到 `uc`
## 验收标准
- `CloudSearch_App` 单容器内的主应用构建包含 `UcDriver`
- `/api/save``target_cloud=uc` 不再返回“暂不支持”。
- 无长期 `cloudsearch-transfer``cloud-auto-save-test` 容器。
- 没有收益上报、签到、独立 transfer 服务集成。