后端迁移云触手后台编排

This commit is contained in:
yml
2026-05-21 16:16:14 +08:00
parent a09b2d38de
commit 889be72125
2 changed files with 42 additions and 51 deletions
@@ -1,5 +1,3 @@
// @ts-check
import { import {
getCloudtentaclesSourceByKey, getCloudtentaclesSourceByKey,
getCloudtentaclesSourcesFilePath, getCloudtentaclesSourcesFilePath,
@@ -56,15 +54,19 @@ import {
maskPhone, maskPhone,
} from "./mappers.js"; } from "./mappers.js";
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSourceConfigInput} AdminCloudtentaclesSourceConfigInput */ import type {
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSendSmsCodeInput} AdminCloudtentaclesSendSmsCodeInput */ AdminCloudtentaclesCatalogQueryInput,
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesTestLoginInput} AdminCloudtentaclesTestLoginInput */ AdminCloudtentaclesFullFlowInput,
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesValidateSessionInput} AdminCloudtentaclesValidateSessionInput */ AdminCloudtentaclesSendSmsCodeInput,
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesCatalogQueryInput} AdminCloudtentaclesCatalogQueryInput */ AdminCloudtentaclesSkuBuyInput,
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSkuBuyInput} AdminCloudtentaclesSkuBuyInput */ AdminCloudtentaclesSkuUseInput,
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSkuUseInput} AdminCloudtentaclesSkuUseInput */ AdminCloudtentaclesSourceConfigInput,
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesVirtualNumberInput} AdminCloudtentaclesVirtualNumberInput */ AdminCloudtentaclesTestLoginInput,
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesFullFlowInput} AdminCloudtentaclesFullFlowInput */ AdminCloudtentaclesValidateSessionInput,
AdminCloudtentaclesVirtualNumberInput,
} from "../../../types/admin-write-inputs.js";
type JsonObject = Record<string, any>;
export function listAdminCloudtentaclesSources() { export function listAdminCloudtentaclesSources() {
const list = listCloudtentaclesSources(); const list = listCloudtentaclesSources();
@@ -74,7 +76,7 @@ export function listAdminCloudtentaclesSources() {
? list.sources.map((s) => mapAdminCloudtentaclesSourceConfig(s)) ? list.sources.map((s) => mapAdminCloudtentaclesSourceConfig(s))
: []; : [];
const mappedSessions = {}; const mappedSessions: JsonObject = {};
for (const [key, session] of Object.entries(sessions.sessions || {})) { for (const [key, session] of Object.entries(sessions.sessions || {})) {
mappedSessions[key] = mapAdminCloudtentaclesSession(session); mappedSessions[key] = mapAdminCloudtentaclesSession(session);
} }
@@ -88,9 +90,8 @@ export function listAdminCloudtentaclesSources() {
}; };
} }
/** @param {AdminCloudtentaclesSourceConfigInput} [payload] */
export function updateAdminCloudtentaclesSourceConfig( export function updateAdminCloudtentaclesSourceConfig(
payload = /** @type {AdminCloudtentaclesSourceConfigInput} */ ({}) payload: AdminCloudtentaclesSourceConfigInput = {}
) { ) {
// Batch save: if payload.sources is an array, save the whole list // Batch save: if payload.sources is an array, save the whole list
if (Array.isArray(payload.sources)) { if (Array.isArray(payload.sources)) {
@@ -106,7 +107,7 @@ export function updateAdminCloudtentaclesSourceConfig(
const sources = Array.isArray(savedList.sources) const sources = Array.isArray(savedList.sources)
? savedList.sources.map((s) => mapAdminCloudtentaclesSourceConfig(s)) ? savedList.sources.map((s) => mapAdminCloudtentaclesSourceConfig(s))
: []; : [];
const mappedSessions = {}; const mappedSessions: JsonObject = {};
for (const [key, session] of Object.entries(sessions.sessions || {})) { for (const [key, session] of Object.entries(sessions.sessions || {})) {
mappedSessions[key] = mapAdminCloudtentaclesSession(session); mappedSessions[key] = mapAdminCloudtentaclesSession(session);
} }
@@ -145,8 +146,7 @@ export function updateAdminCloudtentaclesSourceConfig(
}; };
} }
/** @param {string} sourceKey */ export function deleteAdminCloudtentaclesSource(sourceKey: string) {
export function deleteAdminCloudtentaclesSource(sourceKey) {
const key = String(sourceKey || "").trim(); const key = String(sourceKey || "").trim();
if (!key) { if (!key) {
throw new Error("sourceKey is required for deletion"); throw new Error("sourceKey is required for deletion");
@@ -155,9 +155,8 @@ export function deleteAdminCloudtentaclesSource(sourceKey) {
deleteCloudtentaclesSourceByKey(key); deleteCloudtentaclesSourceByKey(key);
} }
/** @param {AdminCloudtentaclesSendSmsCodeInput} [payload] */
export async function sendAdminCloudtentaclesSmsCode( export async function sendAdminCloudtentaclesSmsCode(
payload = /** @type {AdminCloudtentaclesSendSmsCodeInput} */ ({}) payload: AdminCloudtentaclesSendSmsCodeInput = {}
) { ) {
const result = await sendCloudtentaclesSmsCode( const result = await sendCloudtentaclesSmsCode(
resolveAdminCloudtentaclesCredentialPayload(payload) resolveAdminCloudtentaclesCredentialPayload(payload)
@@ -169,9 +168,8 @@ export async function sendAdminCloudtentaclesSmsCode(
}; };
} }
/** @param {AdminCloudtentaclesTestLoginInput} [payload] */
export async function testAdminCloudtentaclesLogin( export async function testAdminCloudtentaclesLogin(
payload = /** @type {AdminCloudtentaclesTestLoginInput} */ ({}) payload: AdminCloudtentaclesTestLoginInput = {}
) { ) {
const sourceKey = String(payload.sourceKey || "").trim() || "default"; const sourceKey = String(payload.sourceKey || "").trim() || "default";
const savedSource = getCloudtentaclesSourceByKey(sourceKey) || {}; const savedSource = getCloudtentaclesSourceByKey(sourceKey) || {};
@@ -194,9 +192,8 @@ export async function testAdminCloudtentaclesLogin(
return buildAdminCloudtentaclesLoginResult(session, savedSession, sourceKey); return buildAdminCloudtentaclesLoginResult(session, savedSession, sourceKey);
} }
/** @param {AdminCloudtentaclesValidateSessionInput} [payload] */
export async function validateAdminCloudtentaclesSession( export async function validateAdminCloudtentaclesSession(
payload = /** @type {AdminCloudtentaclesValidateSessionInput} */ ({}) payload: AdminCloudtentaclesValidateSessionInput = {}
) { ) {
const sourceKey = String(payload.sourceKey || "").trim() || "default"; const sourceKey = String(payload.sourceKey || "").trim() || "default";
const savedSource = getCloudtentaclesSourceByKey(sourceKey) || {}; const savedSource = getCloudtentaclesSourceByKey(sourceKey) || {};
@@ -226,36 +223,32 @@ export async function validateAdminCloudtentaclesSession(
); );
} }
/** @param {AdminCloudtentaclesCatalogQueryInput} [payload] */
export async function getAdminCloudtentaclesAsset( export async function getAdminCloudtentaclesAsset(
payload = /** @type {AdminCloudtentaclesCatalogQueryInput} */ ({}) payload: AdminCloudtentaclesCatalogQueryInput = {}
) { ) {
return getCloudtentaclesAsset( return getCloudtentaclesAsset(
resolveAdminCloudtentaclesSessionPayload(payload) resolveAdminCloudtentaclesSessionPayload(payload)
); );
} }
/** @param {AdminCloudtentaclesCatalogQueryInput} [payload] */
export async function getAdminCloudtentaclesCategories( export async function getAdminCloudtentaclesCategories(
payload = /** @type {AdminCloudtentaclesCatalogQueryInput} */ ({}) payload: AdminCloudtentaclesCatalogQueryInput = {}
) { ) {
return getCloudtentaclesCategories( return getCloudtentaclesCategories(
resolveAdminCloudtentaclesSessionPayload(payload) resolveAdminCloudtentaclesSessionPayload(payload)
); );
} }
/** @param {AdminCloudtentaclesCatalogQueryInput} [payload] */
export async function getAdminCloudtentaclesSkuList( export async function getAdminCloudtentaclesSkuList(
payload = /** @type {AdminCloudtentaclesCatalogQueryInput} */ ({}) payload: AdminCloudtentaclesCatalogQueryInput = {}
) { ) {
return listCloudtentaclesSku( return listCloudtentaclesSku(
resolveAdminCloudtentaclesSessionPayload(payload) resolveAdminCloudtentaclesSessionPayload(payload)
); );
} }
/** @param {AdminCloudtentaclesSkuBuyInput} [payload] */
export async function buyAdminCloudtentaclesSku( export async function buyAdminCloudtentaclesSku(
payload = /** @type {AdminCloudtentaclesSkuBuyInput} */ ({}) payload: AdminCloudtentaclesSkuBuyInput = {}
) { ) {
const context = resolveAdminCloudtentaclesSessionPayload(payload); const context = resolveAdminCloudtentaclesSessionPayload(payload);
return buyCloudtentaclesSku({ return buyCloudtentaclesSku({
@@ -265,9 +258,8 @@ export async function buyAdminCloudtentaclesSku(
}); });
} }
/** @param {AdminCloudtentaclesSkuUseInput} [payload] */
export async function useAdminCloudtentaclesSku( export async function useAdminCloudtentaclesSku(
payload = /** @type {AdminCloudtentaclesSkuUseInput} */ ({}) payload: AdminCloudtentaclesSkuUseInput = {}
) { ) {
const context = resolveAdminCloudtentaclesSessionPayload(payload); const context = resolveAdminCloudtentaclesSessionPayload(payload);
return useCloudtentaclesSku({ return useCloudtentaclesSku({
@@ -278,18 +270,16 @@ export async function useAdminCloudtentaclesSku(
}); });
} }
/** @param {AdminCloudtentaclesCatalogQueryInput} [payload] */
export async function getAdminCloudtentaclesKnapsack( export async function getAdminCloudtentaclesKnapsack(
payload = /** @type {AdminCloudtentaclesCatalogQueryInput} */ ({}) payload: AdminCloudtentaclesCatalogQueryInput = {}
) { ) {
return getCloudtentaclesKnapsack( return getCloudtentaclesKnapsack(
resolveAdminCloudtentaclesSessionPayload(payload) resolveAdminCloudtentaclesSessionPayload(payload)
); );
} }
/** @param {AdminCloudtentaclesVirtualNumberInput} [payload] */
export async function listAdminCloudtentaclesVirtualNumbers( export async function listAdminCloudtentaclesVirtualNumbers(
payload = /** @type {AdminCloudtentaclesVirtualNumberInput} */ ({}) payload: AdminCloudtentaclesVirtualNumberInput = {}
) { ) {
const context = resolveAdminCloudtentaclesSessionPayload(payload); const context = resolveAdminCloudtentaclesSessionPayload(payload);
return listCloudtentaclesVirtualNumbers({ return listCloudtentaclesVirtualNumbers({
@@ -298,9 +288,8 @@ export async function listAdminCloudtentaclesVirtualNumbers(
}); });
} }
/** @param {AdminCloudtentaclesVirtualNumberInput} [payload] */
export async function appointAdminCloudtentaclesVirtualNumber( export async function appointAdminCloudtentaclesVirtualNumber(
payload = /** @type {AdminCloudtentaclesVirtualNumberInput} */ ({}) payload: AdminCloudtentaclesVirtualNumberInput = {}
) { ) {
const context = resolveAdminCloudtentaclesSessionPayload(payload); const context = resolveAdminCloudtentaclesSessionPayload(payload);
return appointCloudtentaclesVirtualNumber({ return appointCloudtentaclesVirtualNumber({
@@ -309,9 +298,8 @@ export async function appointAdminCloudtentaclesVirtualNumber(
}); });
} }
/** @param {AdminCloudtentaclesVirtualNumberInput} [payload] */
export async function generateAdminCloudtentaclesLoginCode( export async function generateAdminCloudtentaclesLoginCode(
payload = /** @type {AdminCloudtentaclesVirtualNumberInput} */ ({}) payload: AdminCloudtentaclesVirtualNumberInput = {}
) { ) {
const context = resolveAdminCloudtentaclesSessionPayload(payload); const context = resolveAdminCloudtentaclesSessionPayload(payload);
return generateCloudtentaclesLoginCode({ return generateCloudtentaclesLoginCode({
@@ -321,9 +309,8 @@ export async function generateAdminCloudtentaclesLoginCode(
}); });
} }
/** @param {AdminCloudtentaclesVirtualNumberInput} [payload] */
export async function fetchAdminCloudtentaclesVirtualNumberCode( export async function fetchAdminCloudtentaclesVirtualNumberCode(
payload = /** @type {AdminCloudtentaclesVirtualNumberInput} */ ({}) payload: AdminCloudtentaclesVirtualNumberInput = {}
) { ) {
const context = resolveAdminCloudtentaclesSessionPayload(payload); const context = resolveAdminCloudtentaclesSessionPayload(payload);
return fetchCloudtentaclesVirtualNumberCode({ return fetchCloudtentaclesVirtualNumberCode({
@@ -333,9 +320,8 @@ export async function fetchAdminCloudtentaclesVirtualNumberCode(
}); });
} }
/** @param {AdminCloudtentaclesVirtualNumberInput} [payload] */
export async function verifyAdminCloudtentaclesLoginCode( export async function verifyAdminCloudtentaclesLoginCode(
payload = /** @type {AdminCloudtentaclesVirtualNumberInput} */ ({}) payload: AdminCloudtentaclesVirtualNumberInput = {}
) { ) {
const context = resolveAdminCloudtentaclesSessionPayload(payload); const context = resolveAdminCloudtentaclesSessionPayload(payload);
return verifyCloudtentaclesLoginCode({ return verifyCloudtentaclesLoginCode({
@@ -346,9 +332,8 @@ export async function verifyAdminCloudtentaclesLoginCode(
}); });
} }
/** @param {AdminCloudtentaclesVirtualNumberInput} [payload] */
export async function getAdminCloudtentaclesBindUrl( export async function getAdminCloudtentaclesBindUrl(
payload = /** @type {AdminCloudtentaclesVirtualNumberInput} */ ({}) payload: AdminCloudtentaclesVirtualNumberInput = {}
) { ) {
const context = resolveAdminCloudtentaclesSessionPayload(payload); const context = resolveAdminCloudtentaclesSessionPayload(payload);
return getCloudtentaclesBindUrl({ return getCloudtentaclesBindUrl({
@@ -358,9 +343,8 @@ export async function getAdminCloudtentaclesBindUrl(
}); });
} }
/** @param {AdminCloudtentaclesVirtualNumberInput} [payload] */
export async function backAdminCloudtentaclesVirtualNumber( export async function backAdminCloudtentaclesVirtualNumber(
payload = /** @type {AdminCloudtentaclesVirtualNumberInput} */ ({}) payload: AdminCloudtentaclesVirtualNumberInput = {}
) { ) {
const context = resolveAdminCloudtentaclesSessionPayload(payload); const context = resolveAdminCloudtentaclesSessionPayload(payload);
return backCloudtentaclesVirtualNumber({ return backCloudtentaclesVirtualNumber({
@@ -370,9 +354,8 @@ export async function backAdminCloudtentaclesVirtualNumber(
}); });
} }
/** @param {AdminCloudtentaclesFullFlowInput} [payload] */
export async function runAdminCloudtentaclesFullFlow( export async function runAdminCloudtentaclesFullFlow(
payload = /** @type {AdminCloudtentaclesFullFlowInput} */ ({}) payload: AdminCloudtentaclesFullFlowInput = {}
) { ) {
const context = resolveAdminCloudtentaclesSessionPayload(payload); const context = resolveAdminCloudtentaclesSessionPayload(payload);
return runCloudtentaclesFullDebugFlow({ return runCloudtentaclesFullDebugFlow({
@@ -628,6 +628,14 @@
- `npm run typecheck` - `npm run typecheck`
- `npm run build` - `npm run build`
- `npm test` 共 139 个用例通过 - `npm test` 共 139 个用例通过
150. 后台 Cloudtentacles 配置编排服务迁移到 `.ts`
- `src/services/admin/platform-config/cloudtentacles-service.ts`
151. Cloudtentacles 来源列表 / 批量保存 / 单来源保存 / 删除、短信登录、会话校验、商品目录、背包、虚拟号、完整调试流程后台入口已进入 TS 编译链路;各入口 payload 与 session map 补齐类型
152. Docker 内验证通过:
- `src/services/admin/platform-config/*.test.js` 共 37 个用例通过
- `npm run typecheck`
- `npm run build`
- `npm test` 共 139 个用例通过
## 下一步建议 ## 下一步建议