From a617d39a4a03694179d0ac84e27ff4feac8ec16a Mon Sep 17 00:00:00 2001 From: liangxu Date: Mon, 20 Apr 2026 09:52:48 +0800 Subject: [PATCH] feat(desktop): drop parked review flow, add publish management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SaaS 侧人工审核后才创建 publish job,desktop 不再做二次审核:移除 manual/waiting_user/parked/from_parked 状态机与 LeaseFromParked 查询, desktop client 只执行发布并新增"发布管理"页(待发布队列 / 历史 / 再次 发送)。同时抽离 @geo/publisher-platforms 共享适配器包、新增 Redis-based desktop_presence 与 publish_record_support,刷新 admin-web 发布弹窗与 媒体库;plan A / spec 文档同步口径。 --- .gitignore | 1 + .../admin-web/public/logos/logo_baijiahao.png | Bin 0 -> 1868 bytes apps/admin-web/public/logos/logo_bilibili.png | Bin 0 -> 3034 bytes .../admin-web/public/logos/logo_dongchedi.svg | 11 + apps/admin-web/public/logos/logo_jianshu.svg | 4 + apps/admin-web/public/logos/logo_juejin.png | Bin 0 -> 12121 bytes apps/admin-web/public/logos/logo_qiehao.png | Bin 0 -> 2836 bytes apps/admin-web/public/logos/logo_smzdm.svg | 8 + apps/admin-web/public/logos/logo_souhu.png | Bin 0 -> 5117 bytes apps/admin-web/public/logos/logo_toutiao.png | Bin 0 -> 4527 bytes .../admin-web/public/logos/logo_wangyihao.png | Bin 0 -> 2126 bytes .../public/logos/logo_weixin_gzh.svg | 5 + apps/admin-web/public/logos/logo_zhihu.png | Bin 0 -> 1373 bytes apps/admin-web/public/logos/logo_zol.png | Bin 0 -> 1913 bytes .../src/components/ArticlePublishStatus.vue | 24 +- .../src/components/GenerateTaskDrawer.vue | 6 +- .../src/components/PublishArticleModal.vue | 920 +++++++------ apps/admin-web/src/i18n/messages/en-US.ts | 2 +- apps/admin-web/src/i18n/messages/zh-CN.ts | 2 +- apps/admin-web/src/lib/api.ts | 21 +- apps/admin-web/src/lib/errors.ts | 4 + apps/admin-web/src/lib/publish-platforms.ts | 10 +- .../admin-web/src/views/ArticleEditorView.vue | 6 +- apps/admin-web/src/views/MediaView.vue | 1138 ++++++++--------- apps/browser-extension/package.json | 1 + .../src/adapters/toutiaohao.ts | 235 +--- apps/desktop-client/package.json | 4 +- .../desktop-client/src/main/account-binder.ts | 214 +++- apps/desktop-client/src/main/adapters/base.ts | 11 +- .../src/main/adapters/common.ts | 16 +- .../src/main/adapters/doubao.ts | 21 +- .../src/main/adapters/toutiao.ts | 291 +---- apps/desktop-client/src/main/bootstrap.ts | 52 +- apps/desktop-client/src/main/lease-manager.ts | 2 +- .../src/main/renderer-devtools-proxy.ts | 74 ++ .../src/main/runtime-controller.ts | 615 +++------ .../src/main/runtime-snapshot.ts | 295 +---- .../src/main/session-registry.ts | 44 + .../src/main/transport/api-client.ts | 183 ++- apps/desktop-client/src/main/tray.ts | 22 +- apps/desktop-client/src/preload/bridge.ts | 22 +- .../src/renderer/components/DesktopShell.vue | 259 ++-- .../src/renderer/components/MetricCard.vue | 89 +- .../src/renderer/components/StatusBadge.vue | 8 +- .../src/renderer/components/SurfaceCard.vue | 72 +- .../renderer/composables/useDesktopRuntime.ts | 28 +- .../renderer/composables/useDesktopSession.ts | 67 +- apps/desktop-client/src/renderer/env.d.ts | 15 +- .../src/renderer/lib/client-errors.ts | 32 +- .../src/renderer/lib/runtime-ui.ts | 4 +- apps/desktop-client/src/renderer/routes.ts | 5 +- apps/desktop-client/src/renderer/types.ts | 5 +- .../src/renderer/views/AccountsView.vue | 69 +- .../src/renderer/views/AiPlatformsView.vue | 37 +- .../src/renderer/views/HomeView.vue | 474 ++----- .../src/renderer/views/LoginView.vue | 2 +- .../renderer/views/PublishManagementView.vue | 617 +++++++++ .../src/renderer/views/TasksView.vue | 146 +-- .../src/shared/account-identity.ts | 35 + .../2026-04-18-plan-a-desktop-skeleton.md | 161 +-- ...26-04-18-electron-desktop-client-design.md | 144 +-- packages/publisher-platforms/package.json | 9 + packages/publisher-platforms/src/index.ts | 1 + packages/publisher-platforms/src/toutiao.ts | 320 +++++ packages/shared-types/src/index.ts | 33 +- pnpm-lock.yaml | 11 + .../tenant/app/desktop_account_service.go | 175 ++- .../app/desktop_account_service_test.go | 119 ++ .../tenant/app/desktop_client_service.go | 73 +- .../internal/tenant/app/desktop_presence.go | 251 ++++ .../tenant/app/desktop_task_service.go | 401 +++++- server/internal/tenant/app/media_service.go | 65 +- .../tenant/app/publish_job_service.go | 208 ++- .../tenant/app/publish_record_support.go | 358 ++++++ .../tenant/repository/desktop_account_repo.go | 23 +- .../tenant/repository/desktop_client_repo.go | 12 + .../tenant/repository/desktop_task_repo.go | 31 - .../generated/desktop_account.sql.go | 58 +- .../generated/desktop_client.sql.go | 49 + .../repository/generated/desktop_task.sql.go | 158 +-- .../tenant/repository/generated/models.go | 1 - .../tenant/repository/generated/querier.go | 5 +- .../repository/queries/desktop_account.sql | 16 +- .../repository/queries/desktop_client.sql | 21 + .../repository/queries/desktop_task.sql | 48 +- .../transport/desktop_account_handler.go | 13 +- .../transport/desktop_client_auth_test.go | 4 + .../transport/desktop_client_handler.go | 10 + .../tenant/transport/desktop_task_handler.go | 91 +- .../tenant/transport/publish_job_handler.go | 2 +- server/internal/tenant/transport/router.go | 8 +- .../internal/tenant/transport/router_test.go | 3 + ...20260421100020_create_desktop_tasks.up.sql | 3 +- 93 files changed, 5519 insertions(+), 3594 deletions(-) create mode 100644 apps/admin-web/public/logos/logo_baijiahao.png create mode 100644 apps/admin-web/public/logos/logo_bilibili.png create mode 100644 apps/admin-web/public/logos/logo_dongchedi.svg create mode 100644 apps/admin-web/public/logos/logo_jianshu.svg create mode 100644 apps/admin-web/public/logos/logo_juejin.png create mode 100644 apps/admin-web/public/logos/logo_qiehao.png create mode 100644 apps/admin-web/public/logos/logo_smzdm.svg create mode 100644 apps/admin-web/public/logos/logo_souhu.png create mode 100644 apps/admin-web/public/logos/logo_toutiao.png create mode 100644 apps/admin-web/public/logos/logo_wangyihao.png create mode 100644 apps/admin-web/public/logos/logo_weixin_gzh.svg create mode 100644 apps/admin-web/public/logos/logo_zhihu.png create mode 100644 apps/admin-web/public/logos/logo_zol.png create mode 100644 apps/desktop-client/src/main/renderer-devtools-proxy.ts create mode 100644 apps/desktop-client/src/renderer/views/PublishManagementView.vue create mode 100644 apps/desktop-client/src/shared/account-identity.ts create mode 100644 packages/publisher-platforms/package.json create mode 100644 packages/publisher-platforms/src/index.ts create mode 100644 packages/publisher-platforms/src/toutiao.ts create mode 100644 server/internal/tenant/app/desktop_account_service_test.go create mode 100644 server/internal/tenant/app/desktop_presence.go create mode 100644 server/internal/tenant/app/publish_record_support.go diff --git a/.gitignore b/.gitignore index 5216aee..c4929d7 100644 --- a/.gitignore +++ b/.gitignore @@ -16,5 +16,6 @@ apps/*/firefox-mv*/ .claude .superpowers/* .playwright-mcp/* +.playwright-cli/* *.log *.tmp diff --git a/apps/admin-web/public/logos/logo_baijiahao.png b/apps/admin-web/public/logos/logo_baijiahao.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc5602e6a419bae420a4ab5297c3c821e39abc1 GIT binary patch literal 1868 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 literal 0 HcmV?d00001 diff --git a/apps/admin-web/public/logos/logo_dongchedi.svg b/apps/admin-web/public/logos/logo_dongchedi.svg new file mode 100644 index 0000000..a397c81 --- /dev/null +++ b/apps/admin-web/public/logos/logo_dongchedi.svg @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/apps/admin-web/public/logos/logo_jianshu.svg b/apps/admin-web/public/logos/logo_jianshu.svg new file mode 100644 index 0000000..656b6dd --- /dev/null +++ b/apps/admin-web/public/logos/logo_jianshu.svg @@ -0,0 +1,4 @@ + + + 简书 + \ No newline at end of file diff --git a/apps/admin-web/public/logos/logo_juejin.png b/apps/admin-web/public/logos/logo_juejin.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee5fc02155db7fafadb549a8246139086aa2127 GIT binary patch literal 12121 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 literal 0 HcmV?d00001 diff --git a/apps/admin-web/public/logos/logo_qiehao.png b/apps/admin-web/public/logos/logo_qiehao.png new file mode 100644 index 0000000000000000000000000000000000000000..744bcc7e603442502174b4dd0f0d6a3c78d725a0 GIT binary patch literal 2836 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 + + + \ No newline at end of file diff --git a/apps/admin-web/public/logos/logo_souhu.png b/apps/admin-web/public/logos/logo_souhu.png new file mode 100644 index 0000000000000000000000000000000000000000..9a63b32be2c5289413667e56515d14e3be006b96 GIT binary patch literal 5117 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 N002ovPDHLkV1lE7;{E^t literal 0 HcmV?d00001 diff --git a/apps/admin-web/public/logos/logo_wangyihao.png b/apps/admin-web/public/logos/logo_wangyihao.png new file mode 100644 index 0000000000000000000000000000000000000000..bdcef0537e04fa57bd861f32514739561956b9d9 GIT binary patch literal 2126 zcmV-U2(kBxP)HWU58gC@gf3>>(qs(e-E&FmgX z*30gV|L;k_8y|q(a{`_d@WvTv)641gw=K{QyZ1l+e2a{$1pHY61RJRRtzh3;ui(?}^us;(47=0rgWM6f<+DkE z;&&Bba;*KeK(S-9hUmX!l?&|lyI*#N*Zs?n$4|fR*FXpR-TwF7^|#aML-zA^lYn0Q zzJdw*_m3Z^paLlr!yUS`hS(TQe*EvjDEzehus`kpas2q}&oIxU$DxD6r%yl1n{G^l z%?eft7?+-n6)u>dXVJ90>|R&L(ZzGbNiqm}goOBJ`uO2a~b_frlbn9CwP% zj*dJH&^$7B6Dof`)44Va0!lVME)`tjU_TV~HSa82iAu!2Os0=B&}DMQd9qm9)bvF< zil}o6Pl0lB=ZIB$#m6T_k{xRr_(nJ06*<(pAfS)w2wtp7-d-|-C5aSNaV|dWV2oiU zXXQ61?!u`ZbWh@NsBSywPQ`hq<-|o?dV2^ly7FP?jm?P|47j z=<-uV4x6)-9Y`#g`zhpXe%HcYQM%5-eTqul=tE3zB>OEa2w*5!5kD@{0Q}>E+Ii+}cMeqJjOw!nz)&&6x=5o%?V4oMG=O{9Ai6Ftg zLkwVR?Ye7w_J~eVDLln#M*NYJM$mU+*i7&!PlwN&1px^*nQ(*>tc{gROErCxtRfTu zVj^uas?AnMO0^5o_TUa(?ZqJ!Nx9GCO3!`{xlFQ}o@rm33j!_-OX-qYrjJfbW{mrp zl(8=hI!VyiaZyC<=wMzXSukuXQALBoM*K36ldcb9>zq%YipZ>^rgN^&^GUrRpeL0J zIdw>;pZi`C(OZx8{+LkzK5r{#k6|wkum?p$3QyOOjUZ4c@MjC`O&{4nkt*KUpT8~$ zNMN0$pBs}wh?0Or$sWaY*A>SUq1$lbQ^g$W1myBt ztD@kRUDrQq|9?$DFYH_G2Lax;UOLb(+LCvhFWtLq3tt-ZOZ)}_<5yYz3Gp{`{OvqP z>hiPbt1O6h*CxKoE%yZ(1awn>J4b?D*!FZ=V78@;oK1(f^&DNF{g(e+&n~j8WLsDe zz-j)woh&dF{ywk4C4AR(ktI%6zbOv&r?(@ztR9v4_X&-jEPAUSLwxAvM7D;JE2BAX zO~GXE$4rAau!7Rj*yU`EEURCYlI@6YT0NfU!#p>BWYqoyPCwe34;_sATfTlftWE%9 zj9IV2kChI#`H>{JGaw}$cJ3I-OZE(ebiD#|9tG4v=V}?BZf`mX5drpd^n5jJNdSi8 zC8_LJRwQ+-nA{YNqTG2#Cyw(}VCkb9q)`^gMvU5fslv!<<-c9vH+1L!zGyri{5mi+ z1?-BoeI+$UF6)}j4VmdMHG!^l7fCxKA{};?yp_G_n(`ooYF=y{VbqmeYvsF~fU+C` zYrXYJ(phiWujv(L%sY}eS$qZ&RaDM-47>on^vLDWN52zBKPQ`Pl>myt=-6z3x%dJr z|Hs3&_g|W+FvSIbsdmQMR_6j|;1{Bt*&-vvkeO!dgo@wuWxq)PHt!)}3jUQh7v0~V z{xFr$JM2obf8}cspx9&m6Bl%+E>DauV}F7Aw?45GXVNt}{e|v)?_^u& zp)a3FR(pOhbY(+lPqv!V*@q3=H5}^q#~?tEw~8kLZ?*HO`#Aw&;;pXF33#iWPu + + \ No newline at end of file diff --git a/apps/admin-web/public/logos/logo_zhihu.png b/apps/admin-web/public/logos/logo_zhihu.png new file mode 100644 index 0000000000000000000000000000000000000000..b5381c234b69b34b29be4df7e35c24cb42cfc49c GIT binary patch literal 1373 zcmV-j1)}Px)7fD1xRA@u(ntxDKRTRg+=Pkh~7_KE0l$7yn1p6V4$~HC-YU-qojifk@Xr&J5 zh=4?-6-X1>B&bQIHd$jcP1XQb#AJnpVpD?(g-i)#nKc73;tzha`)=L6i@VD%%RXj@ z-8a+wYxmuE?>V1y&pq$lb01;ImHa-7I^BZj+dDB|Hn1rS%x~y3WBH#zosxzw-R_6u zy8H0%2dnA4rFNfgMp=hF=;H7bXpdXtkKZ^v}ci#8%_PZpAmp7Uv!97 zFvcEpdN4OWNJN$CYiS{eFal^Z*gk_^-rz=^6pPk)NyQz7w2`>am!4xkd92$EhejkX zeTeR-u$Ng;>os|^ViR~khd_U6H)+$^d4oZo<^lRBRzahY8p(f?e8b(LQnBWy4m`xt zt(y!?=>TyNghkPWWAzL*&5FA#73c7I#Q=p*OL*=P;7S(|mCMlGuOfhzvk3cFig(}J zRX|Ru>{4rvW-vuFP`gz^Sbz|dP{dICyL+u~d=opn1|GPJP@Q!%^T22Ifb2kjy$m$B zF%+KwuJh}c;Y6kYINbs)+&lbqTe{E_ z`+)MF?E}mS1FE;U5Wv@m(3nS)x99>$cTpu+k^Hl|^8RV?AH70PoMOOyxm8FnSo%~WDc0gi2u5ErgI zg|O_Q+sTmsq?-UHPat?}>;vR2Atc6#ws*b*_Ey?YPup$)AFp#0fFs+NrAmm85Kkl@ zW+D_zzQ9tGg-MQF?=Or9VB_bjt~IIC%wkVmbpiP6DzN4zGytu%eU-8J5U(Vknwg6SXIxe0$RTsK@5}_=G z5NfK*4H$ss2N}No#s1)aK7=1~2pS29e8qN?Gd)EXG9I8KJQvD&H>W^9Zf>8BAHwRGtrv`%%s{Po* fGOnuabDMtw%cH}IdV|a800000NkvXXu0mjfN4I(v literal 0 HcmV?d00001 diff --git a/apps/admin-web/public/logos/logo_zol.png b/apps/admin-web/public/logos/logo_zol.png new file mode 100644 index 0000000000000000000000000000000000000000..64432a232a96a7e5b502a90b3803499828bb4367 GIT binary patch literal 1913 zcmV-<2Zs2GP)Px+Gf6~2RA@uxn`vwmWf;f*&&+Jw-P#BW7Ex-!KnO(Cc<{k!G#&&Efe&irh=$?^ zG$I&d(5N4cSBxf@_=T!bNtDBYs8KwE(L_Kaf+gIFR~zeDx9uJ?^Seakh8>7axS^{-5}fuP#dId$+a0($3$^J{sf7Sq#4=R(nyEG z{*gX7BxOT;!hH@T?}?aXnx+9F0%a^l6;{R>DFG=ZTvxz$r3*6)5Lv^4dz(n%JVsucHz2su{ma~ zAvIIiOzi_~2XI`_1yg|b z){6c%SJ%Om6Xy_>&Cy87i{-(?kdHoH(r!othEb~#Y`KW5RbS6v#I}M0IYuHULr5ahlNv+W1&WyAcK~qsX{i zSX3D;y3je3L2o`$$_%FgP*=-vQSmD&7aC~;vWSA*%c2p`)t7v_ye3qo8GrLDyX|1^^57LBTB|q@ra4XEb_X6Jo%$sh|fsP|okT(-5Ks z6wK>`Y?A~G3B(wz$phmx+6-EC2he(UN%h#EGQgj^fz3P1x^Y1x)ecBKe#vhS0gm(@ zR5l_$58VY?cvZzNjHrTg?;gnQJ3Kh8 zTv$a`kIy?ItH#iZTR-1G)y(kTv@6QXp(e9$B1Rm?&oFft1E_CUVY z2^mj>lq(XVtfB;H-Yn3w>wt(gEcHf4!Tx_CH*Ey|{0A}|j-_(&yeTkVTo1G~4;!xj zfOZ;k+pEB@-I<~yS)F1z$RQeQ25op4G<9-SaPaPDmDhGxwKtzQlBuZ9{gwd;e)IOLaa0`a&Xl5SRU$x<*>WN7j^pvTq% zv1pCayxY|V&`AUPw?h8an*+s=*+nLJL=!+`48|jCfk~xj$A(K^Js?jn9DWbzJ>}(C zs3imiCZ|ns4#EW8zZ%ruHeBD!x~_V_Q=b7nU0&%A6%>_oe9YmP(+A0xz>4LdOD-zQ z$!d(M1MJxk{IW;=a8>FlC>@fy$3Y*Y1q*>|uc^lGvacOJ;NK^K6T7@Wf89>upES zb>v+1^*6&XB$^u1Fd)1s6@Il~1k)-!y`s;Fi4!3#L;brj2*Lzh-iD6Vd3EgD@V$87 z49?#=o3OCGyaB2RF#cB>n>P&LkKW)_8_z+rqmBuf{91v5Ov-Y~im#k^eQ<5Z#e~~t))?^kH-mV))0^sIl^m1cSb!7Zt-o&(VuJ!rNf|h&oz!8b z!m>QjJOzD4>!RSNTN2o}+f||F0r{)1o<5E^0+W7shXzz|0btQkRX{qtgKO#n_)h0P z__izJsWt>0pEq5JX+PVUkjf6#Q0V3;nGYJ|U~X8~1@MC%34FdsdZDSpQiFzp3DJZ= z+mH5;3JzUtG>{&I{34?Vp)P=jzZ*d3RztyYVX;Gbrxf)=b!xYRNxwV!Rn)JLx`22^ zqgXY~2h}-Q7eFp9FT5Pb(LWmkK!(aFO0XP>iw-2!>xb;pAL@C2XnLTPw2L4Y>jv1@ zm&Wtk9eh8)xtJZQmIKV`N}?$#MqwW;_d_6l@#DDIb import { QuestionCircleOutlined, UserOutlined } from "@ant-design/icons-vue"; import { useQuery } from "@tanstack/vue-query"; -import type { MediaPlatform, PlatformAccount } from "@geo/shared-types"; +import type { MediaPlatform } from "@geo/shared-types"; import { computed, ref } from "vue"; import { useI18n } from "vue-i18n"; -import { articlesApi, mediaApi, resolveApiURL } from "@/lib/api"; +import { articlesApi, mediaApi } from "@/lib/api"; import { getPublishStatusMeta } from "@/lib/display"; import { getPublishPlatformMeta, normalizePublishPlatformId } from "@/lib/publish-platforms"; @@ -49,13 +49,6 @@ const platformsQuery = useQuery({ staleTime: 5 * 60 * 1000, }); -const accountsQuery = useQuery({ - queryKey: ["media", "platform-accounts", "publish-status"], - enabled: computed(() => popoverOpen.value && shouldLoadPlatforms.value), - queryFn: () => mediaApi.accounts(), - staleTime: 5 * 60 * 1000, -}); - const publishRecordsQuery = useQuery({ queryKey: computed(() => ["articles", "publish-records", props.articleId, "publish-status"]), enabled: computed(() => popoverOpen.value && shouldLoadPlatforms.value), @@ -73,12 +66,6 @@ const platformMap = computed(() => { ); }); -const accountMap = computed(() => { - return new Map( - (accountsQuery.data.value ?? []).map((account: PlatformAccount) => [account.id, account]), - ); -}); - const platformEntries = computed(() => { const seen = new Set(); const entries: PublishPlatformEntry[] = []; @@ -92,7 +79,6 @@ const platformEntries = computed(() => { const normalizedId = normalizePublishPlatformId(record.platform_id); const platform = platformMap.value.get(normalizedId); - const account = accountMap.value.get(record.platform_account_id); const fallback = getPublishPlatformMeta(normalizedId); entries.push({ @@ -100,8 +86,8 @@ const platformEntries = computed(() => { name: record.platform_name || platform?.name || fallback.name, shortName: platform?.short_name || fallback.shortName, accent: platform?.accent_color || fallback.accent, - accountName: account?.nickname || record.platform_nickname || "--", - avatarUrl: resolveApiURL(account?.avatar_url), + accountName: record.platform_nickname || "--", + avatarUrl: "", status: normalizePublishRecordStatus(record.status), }); } @@ -251,7 +237,7 @@ function getAccountInitial(accountName: string): string {