t-comm
Version:
专业、稳定、纯粹的工具库
322 lines (319 loc) • 11.4 kB
JavaScript
import { b as __awaiter, c as __generator } from '../../tslib.es6-096fffdd.js';
import { compareTwoList, getMaxAndMinIdx } from '../../list/parse-list.mjs';
import { createCanvasTable } from '../../canvas/table.mjs';
import { saveJsonToLog } from '../../node/fs-util.mjs';
import { timeStampFormat } from '../../time/time.mjs';
import { batchSendWxRobotBase64Img } from '../../wecom-robot/batch-send.mjs';
import { getRUMScores } from '../api/rum-score.mjs';
import { getTAMSummaryScoreByGroupIdList } from '../api/summary-score.mjs';
import { parseSummaryScore } from '../parse/summary.mjs';
import { getTableHeaders } from '../parse/header.mjs';
import '../../number/number.mjs';
import '../../list/list.mjs';
import '../../canvas/get-canvas.mjs';
import 'fs';
import 'path';
import '../../fs/fs.mjs';
import '../../wecom-robot/base.mjs';
import '../../wecom-robot/helper.mjs';
import 'axios';
import '../../wecom-robot/send-img.mjs';
import '../../node-img/img.mjs';
import '../../tencent-cloud/base/base.mjs';
import '../api/credential.mjs';
function getRUMScoreList(_a) {
var secretInfo = _a.secretInfo,
parsedDate = _a.parsedDate,
parsedPreDate = _a.parsedPreDate,
date = _a.date;
return __awaiter(this, void 0, void 0, function () {
var parsedPostDate, rumScores, preRumScores;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!secretInfo.rumSecretId || !secretInfo.rumSecretKey) {
return [2 /*return*/, {}];
}
parsedPostDate = timeStampFormat(new Date(date).getTime() + 1 * 24 * 60 * 60 * 1000, 'yyyyMMdd');
return [4 /*yield*/, getRUMScores({
secretId: secretInfo.rumSecretId,
secretKey: secretInfo.rumSecretKey,
startTime: "".concat(parsedDate, "00"),
endTime: "".concat(parsedPostDate, "00")
})];
case 1:
rumScores = _b.sent();
return [4 /*yield*/, getRUMScores({
secretId: secretInfo.rumSecretId,
secretKey: secretInfo.rumSecretKey,
startTime: "".concat(parsedPreDate, "00"),
endTime: "".concat(parsedDate, "00")
})];
case 2:
preRumScores = _b.sent();
console.log('[getRUMScoreList] parsedPostDate: ', parsedPostDate);
saveJsonToLog(rumScores, 'rum-score.json');
saveJsonToLog(preRumScores, 'rum-score-pre.json');
return [2 /*return*/, {
rumScores: rumScores,
preRumScores: preRumScores
}];
}
});
});
}
/**
* 生成TAM汇总数据图
* @ignore
* @param {object} options 配置
* @param {string} options.date 日期,yyyyMMdd格式
* @param {Array<number>} options.groupIdList groupId列表
*
* @param {object} options.secretInfo 密钥信息
* @param {string} options.secretInfo.apiKey apiKey
* @param {string} options.secretInfo.loginName loginName
* @param {Function} options.secretInfo.getPwdCode getPwdCode
* @param {Function} options.secretInfo.encrypt encrypt
*
* @param {object} options.extraDataMap 额外数据Map
* @param {object} options.ignoreProjectIdList 忽略的projectIdList
*
* @param {object} options.tableHeaderMap 表格头部Map
* @returns {string} 图片base64
* @example
* const requestSummaryScoreDate = Date.now() - 1 * 24 * 60 * 60 * 1000;
*
* const tamGroupIdList = [1, 2, 3];
*
* const summaryScoreTableHeaderMap = {
* ProjectName: {
* name: '项目名称',
* tableWidth: 95,
* },
* PagePv: {
* name: 'PV',
* tableWidth: 65,
* },
* };
*
* await genSummaryData({
* date: requestSummaryScoreDate,
* groupIdList: tamGroupIdList,
* secretInfo: {
* getPwdCode,
* encrypt,
* apiKey: process.env.AEGIS_APP_KEY,
* loginName: 'lee',
* },
* tableHeaderMap: summaryScoreTableHeaderMap,
* });
*/
function genSummaryData(_a) {
var date = _a.date,
groupIdList = _a.groupIdList,
secretInfo = _a.secretInfo,
_b = _a.extraDataMap,
extraDataMap = _b === void 0 ? {} : _b,
_c = _a.ignoreProjectIdList,
ignoreProjectIdList = _c === void 0 ? [] : _c,
_d = _a.tableHeaderMap,
tableHeaderMap = _d === void 0 ? {} : _d,
_e = _a.rumSecretList,
rumSecretList = _e === void 0 ? [] : _e;
return __awaiter(this, void 0, void 0, function () {
var parsedDate, headerDate, parsedPreDate, sortKeyList, data, preData, _i, rumSecretList_1, item, _f, rumScores, preRumScores, parsedData, parsedPreData, tableData, img;
var _g, _h;
return __generator(this, function (_j) {
switch (_j.label) {
case 0:
parsedDate = timeStampFormat(new Date(date).getTime(), 'yyyyMMdd');
headerDate = timeStampFormat(new Date(date).getTime(), 'yyyy-MM-dd');
parsedPreDate = timeStampFormat(new Date(date).getTime() - 1 * 24 * 60 * 60 * 1000, 'yyyyMMdd');
console.log('[genSummaryData] parsedDate: ', parsedDate);
console.log('[genSummaryData] parsedPreDate: ', parsedPreDate);
sortKeyList = Object.keys(tableHeaderMap);
if (!sortKeyList.length) {
return [2 /*return*/];
}
return [4 /*yield*/, getTAMSummaryScoreByGroupIdList({
date: parsedDate,
groupIdList: groupIdList,
secretInfo: secretInfo
})];
case 1:
data = _j.sent();
return [4 /*yield*/, getTAMSummaryScoreByGroupIdList({
date: parsedPreDate,
groupIdList: groupIdList,
secretInfo: secretInfo
})];
case 2:
preData = _j.sent();
console.log('[genSummaryData.rumSecretList]', rumSecretList);
if (!(rumSecretList === null || rumSecretList === void 0 ? void 0 : rumSecretList.length)) return [3 /*break*/, 6];
_i = 0, rumSecretList_1 = rumSecretList;
_j.label = 3;
case 3:
if (!(_i < rumSecretList_1.length)) return [3 /*break*/, 6];
item = rumSecretList_1[_i];
return [4 /*yield*/, getRUMScoreList({
secretInfo: item,
parsedDate: parsedDate,
parsedPreDate: parsedPreDate,
date: date
})];
case 4:
_f = _j.sent(), rumScores = _f.rumScores, preRumScores = _f.preRumScores;
console.log('[genSummaryData.rumScores?.length]', rumScores === null || rumScores === void 0 ? void 0 : rumScores.length);
if (rumScores) {
(_g = data.data).push.apply(_g, rumScores);
}
if (preRumScores) {
(_h = preData.data).push.apply(_h, preRumScores);
}
_j.label = 5;
case 5:
_i++;
return [3 /*break*/, 3];
case 6:
parsedData = parseSummaryScore({
data: data.data,
extraDataMap: extraDataMap,
ignoreProjectIdList: ignoreProjectIdList,
sortKeyList: sortKeyList
});
parsedPreData = parseSummaryScore({
data: preData.data,
extraDataMap: extraDataMap,
ignoreProjectIdList: ignoreProjectIdList,
sortKeyList: sortKeyList
});
saveJsonToLog(parsedData, 'summary.parsed-data.json');
saveJsonToLog(parsedPreData, 'summary.parsed-data-pre.json');
compareTwoList(parsedData, parsedPreData, 'ProjectName');
tableData = getMaxAndMinIdx(parsedData);
saveJsonToLog(tableData, 'summary.table-data.json');
img = '';
try {
img = createCanvasTable({
data: tableData,
headers: getTableHeaders(tableData, tableHeaderMap),
title: "TAM\u65E5\u62A5 ".concat(headerDate),
cellWidthList: Object.values(tableHeaderMap).map(function (item) {
return item.tableWidth || 65;
})
});
} catch (err) {
console.log('[genSummaryData.createCanvasTable.error]', err);
}
return [2 /*return*/, {
img: img,
data: data
}];
}
});
});
}
/**
* 生成TAM汇总数据并发送到机器人
* @param {object} options 配置
* @param {string} options.date 日期,yyyyMMdd格式
* @param {Array<number>} options.groupIdList groupId列表
*
* @param {object} options.secretInfo 密钥信息
* @param {string} options.secretInfo.apiKey apiKey
* @param {string} options.secretInfo.loginName loginName
* @param {Function} options.secretInfo.getPwdCode getPwdCode
* @param {Function} options.secretInfo.encrypt encrypt
*
* @param {object} options.extraDataMap 额外数据Map
* @param {object} options.ignoreProjectIdList 忽略的projectIdList
* @param {object} options.tableHeaderMap 表格头部Map
*
* @param {object} options.webhookUrl 机器人回调地址
* @param {object} options.chatId 会话Id
*
* @example
* const requestSummaryScoreDate = Date.now() - 1 * 24 * 60 * 60 * 1000;
*
* const tamGroupIdList = [1, 2, 3];
*
* const summaryScoreTableHeaderMap = {
* ProjectName: {
* name: '项目名称',
* tableWidth: 95,
* },
* PagePv: {
* name: 'PV',
* tableWidth: 65,
* },
* };
*
* await genSummaryDataAndSendRobot({
* date: requestSummaryScoreDate,
* groupIdList: tamGroupIdList,
* secretInfo: {
* getPwdCode,
* encrypt,
* apiKey: process.env.AEGIS_APP_KEY,
* loginName: 'lee',
* },
* webhookUrl: tamRobotWebhook,
* chatId: tamRobotChatId,
* tableHeaderMap: summaryScoreTableHeaderMap,
* });
*/
function genSummaryDataAndSendRobot(_a) {
var date = _a.date,
groupIdList = _a.groupIdList,
secretInfo = _a.secretInfo,
_b = _a.extraDataMap,
extraDataMap = _b === void 0 ? {} : _b,
_c = _a.ignoreProjectIdList,
ignoreProjectIdList = _c === void 0 ? [] : _c,
_d = _a.tableHeaderMap,
tableHeaderMap = _d === void 0 ? {} : _d,
webhookUrl = _a.webhookUrl,
chatId = _a.chatId,
_e = _a.rumSecretList,
rumSecretList = _e === void 0 ? [] : _e;
return __awaiter(this, void 0, void 0, function () {
var result, img, data;
return __generator(this, function (_f) {
switch (_f.label) {
case 0:
if (!rumSecretList.length && secretInfo.rumSecretId && secretInfo.rumSecretKey) {
rumSecretList = [{
rumSecretId: secretInfo.rumSecretId,
rumSecretKey: secretInfo.rumSecretKey
}];
}
return [4 /*yield*/, genSummaryData({
date: date,
groupIdList: groupIdList,
secretInfo: secretInfo,
extraDataMap: extraDataMap,
ignoreProjectIdList: ignoreProjectIdList,
tableHeaderMap: tableHeaderMap,
rumSecretList: rumSecretList
})];
case 1:
result = _f.sent();
if (!result) return [2 /*return*/];
img = result.img, data = result.data;
if (!img || !chatId) {
return [2 /*return*/, data];
}
return [4 /*yield*/, batchSendWxRobotBase64Img({
img: img,
webhookUrl: webhookUrl,
chatId: chatId
})];
case 2:
_f.sent();
return [2 /*return*/, data];
}
});
});
}
export { genSummaryData, genSummaryDataAndSendRobot };