后端迁移云触手后台编排
This commit is contained in:
+34
-51
@@ -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 个用例通过
|
||||||
|
|
||||||
## 下一步建议
|
## 下一步建议
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user