docs(plan): update planning artifacts for adapter and account-pool work
Desktop Client Build / Resolve Build Metadata (push) Successful in 24s
Frontend CI / Frontend (push) Successful in 2m56s
Backend CI / Backend (push) Failing after 8m6s
Desktop Client Build / Build Desktop Client (push) Successful in 24m4s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 50s

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 14:17:36 +08:00
parent 06dafa88f8
commit a02ed4e79f
3 changed files with 233 additions and 1 deletions
+88
View File
@@ -893,3 +893,91 @@
- `pnpm --filter @geo/desktop-client typecheck`
- `pnpm --filter @geo/desktop-client build`
- `git diff --check`
## 2026-07-12T12:15:00+08:00 - Hunyuan SSE/search and Markdown diagnosis
- Started Phase 50 for the requested Hunyuan collection repair.
- Locked the desired execution order to official API SSE first, page RPA only when SSE is missing or unusable.
- Included explicit web-search enablement and end-to-end Markdown display repair in scope.
- Added an API-priority regression test at the final Yuanbao answer-selection boundary.
- Confirmed the test fails because the current quality score selects a longer DOM/tooling string over valid SSE Markdown.
## 2026-07-12T00:00:00+08:00 - Desktop Hunyuan/Yuanbao CDP diagnosis resumed
- Confirmed `npx` and `playwright-core` are available and connected Playwright to the running Electron CDP endpoint on port 9339.
- Located two authenticated Yuanbao chat pages and inspected the live composer/tool controls.
- Reproduced a web-search verification defect: the page had only `深度思考` active while `联网搜索` remained an unselected tools-menu item, but the adapter can optimistically return enabled when the menu item exposes no ARIA state.
- Captured `apps/desktop-client/output/playwright/yuanbao-tools.png` as local visual evidence.
- Existing API-vs-DOM priority regression test remains red pending the implementation fix.
- Submitted a short search-enabled query through the real desktop Yuanbao page over CDP and captured the safe request/response shape.
- Verified the official chat SSE endpoint, real search request flags, final `meta.endConv`, and the large ratio of `deepSearch` process frames to answer `text` frames.
- Added regression coverage for strict API priority, page fallback, current-chat SSE filtering, Markdown blank-line preservation, and exclusion of nested deep-search text from the final answer.
- Initial live-test attempt selected a stale hard-coded conversation ID and failed before adapter execution. The selector was corrected to any current Yuanbao chat page.
- One CDP probe called `browser.close()` and stopped the attached Electron Chromium. The existing `electron-vite` development process restarted Electron automatically; subsequent probes exit without sending a remote close command.
- Opened the bound Yuanbao account again through the desktop AI-platform card and ran the actual updated adapter through CDP.
- Live adapter verification passed: API SSE source selected, web search verified active, exactly one current chat SSE captured, and answer non-empty.
- Final verification passed:
- `pnpm --filter @geo/desktop-client exec vitest run src/main/adapters/yuanbao.test.ts` (16/16)
- `pnpm --filter @geo/desktop-client typecheck`
- `pnpm --filter admin-web typecheck`
- `pnpm --filter @geo/desktop-client build`
- `pnpm --filter admin-web build` (existing large-chunk warning only)
- targeted Prettier formatting and `git diff --check`
## 2026-07-12T13:30:00+08:00 - AI platform multi-account support started
- Added Phases 53-56 for storage/runtime audit, binding/UI changes, same-platform monitor failover, and verification.
- Initial hypothesis: server uniqueness already permits multiple platform UIDs per desktop client, while desktop projection/binding and monitor task targeting still enforce effective single-account behavior.
- Phase 53 audit completed. No server migration is needed; implementation is scoped to desktop dedupe/binding, platform-blocking, local account-pool failover, diagnostics, and the AI account-management UI.
- Added a tested monitor-account pool with preferred-first/LRU ordering, blocked/cooldown filtering, failover classification, and reason-specific cooldowns.
- Removed desktop AI platform-only deduplication and same-platform replacement cleanup; distinct platform UIDs now retain independent server rows and local session partitions.
- Added same-platform monitor attempts inside one leased task, final-result-only submission diagnostics, account health reporting, runtime switch activities, and per-account risk-control alerts.
- Rebuilt AI Platform Management as a media-account-style multi-account page and verified its desktop layout over Electron CDP.
## 2026-07-12T14:20:00+08:00 - AI platform multi-account server invariant
- Confirmed server monitor targeting remains one target per platform even when several same-platform accounts are bound.
- `uniqueMonitorDesktopTaskPlatformIDs()` de-duplicates requested platforms before account lookup, and `selectMonitorDesktopTaskTargetsWithOptions()` selects a single best target from each platform's account candidates.
- Added focused assertions covering duplicate platform specs and the one-target result for multiple same-platform accounts.
## 2026-07-12T14:35:00+08:00 - AI platform multi-account verification complete
- Focused server targeting tests passed, including duplicate platform de-duplication and one-target selection for multiple same-platform accounts.
- Focused desktop account-pool, account-health, scheduler, and Doubao tests passed: 3 files / 38 tests.
- Full desktop verification passed: 30 files / 206 tests, Vue typecheck, production Electron build, targeted Prettier check, and `git diff --check`.
- Electron CDP UI verification remains valid at 1420x960: six platform selectors, three separately managed AI accounts, add-account choices for all six platforms, working Doubao filtering, and no overflow or overlap.
- Residual live-test limitation: the UI was exercised with real bound accounts, but automatic failover could not be triggered against two simultaneously usable Doubao accounts in this environment. The selection, cooldown, error classification, and final-result-only behavior are covered by deterministic tests.
## 2026-07-12T14:50:00+08:00 - AI/media account UI alignment started
- Added Phases 57-58 after the user clarified that AI Platform Management must visually match Media Account Management, not only expose equivalent account-management functions.
- Audited both live Vue views and identified the mismatch: AI used compact selector cards plus a custom account table, while media uses larger authorization cards and a shared hero-card table shell.
- Locked the change to renderer composition and styles; multi-account runtime behavior and account actions remain unchanged.
- First Electron CDP comparison command failed because `playwright-core` is workspace-local and cannot be resolved from the repository root. The retry runs from `apps/desktop-client`, where the dependency is installed.
## 2026-07-12T15:15:00+08:00 - AI/media account UI alignment implemented
- Removed the global “添加 AI 账号” dropdown; platform cards are now the only binding entry, matching the media account workflow.
- Replaced compact AI selectors with the media page's large card geometry, status dot, bound/unbound treatment, and “新增账号 / 绑定账号” actions.
- Rebuilt the AI authorized-account list with the same hero-card shell, toolbar, filters, transparent table header, row spacing, avatar/platform cells, status tags, and three-action layout used by Media Account Management.
- Retained AI-specific multi-account counts, account health/session data, reauthorization/probe behavior, and row-level risk-control warnings.
- Electron CDP desktop and narrow-width comparisons passed with matching geometry and no page overflow.
## 2026-07-12T15:25:00+08:00 - Missing-citation failover diagnosis
- Confirmed the existing account-pool classifier returned success as soon as any non-empty answer existed, regardless of empty `citations` and `search_results` arrays.
- Added a red regression test proving a source-less successful answer previously returned no failover reason.
- Added `missing_citations` as a current-task failover reason. It has zero account cooldown because missing sources can be question-specific and should not mark the account unhealthy for later tasks.
## 2026-07-12T15:35:00+08:00 - AI account UI and missing-citation failover verified
- Full desktop tests passed: 30 files / 206 tests.
- Desktop Vue typecheck and production Electron build passed.
- Targeted Prettier checks and `git diff --check` passed.
- CDP confirmed AI and media platform cards have matching geometry at 1420x960; the AI page also passed 1024x800 responsive inspection with no page overflow.
- The live DOM contains only the hero actions “一键检测账号” and “刷新状态”; the removed global “添加 AI 账号” button is absent.
- Successful answers now require at least one item in `citations` or `search_results` to stop same-platform account failover. When every account lacks sources, the existing loop preserves and submits the final non-empty answer with attempt diagnostics.
## 2026-07-12T15:50:00+08:00 - Admin AI account management extraction started
- Added Phases 60-62 for a new tracking-side “AI 账号管理” menu after “外部文章标记”.
- Confirmed the existing tracking status panel collapses multiple accounts to the first account per platform even though the API returns every account.
- Confirmed account removal and delete-request APIs can be reused from Media Account Management; implementation needs no server migration.