evmtools-node
Version:
このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
47 lines • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PbevmSummaryUsecase = void 0;
const logger_1 = require("../logger");
const tidy_1 = require("@tidyjs/tidy");
const common_1 = require("../common");
class PbevmSummaryUsecase {
constructor(_creator) {
this._creator = _creator;
this.logger = (0, logger_1.getLogger)('PbevmSummaryUsecase');
}
async execute() {
const rows = await this._creator.createRowData();
const baseDate = new Date('2025-06-13T00:00:00+0900');
const dispRows = rows.map((row) => {
const { id, name, assignee, pv, calculatePV, ev, spi } = row;
return {
id,
name,
assignee,
pv,
calcPv1: calculatePV(baseDate),
ev,
spi,
};
});
console.table(dispRows);
// aggregate の練習
const showAggregate = () => {
const result = (0, tidy_1.tidy)(rows, (0, tidy_1.groupBy)('assignee', [
(0, tidy_1.summarize)({
担当のタスク数: (group) => group.length,
担当の工数の和: (group) => (0, common_1.sum)(group.map((d) => d.workload ?? 0)),
担当の工数の平均: (group) => (0, common_1.average)(group.map((d) => d.workload ?? 0)),
// pv: (group) => group.map((d) => d.pv),
// calcPv_baseDate_の列: (group) => group.map((d) => d.calculatePV(baseDate)),
[`${(0, common_1.dateStr)(baseDate)}までのPV累積`]: (group) => (0, common_1.sum)(group.map((d) => d.calculatePVs(baseDate)), 3),
[`${(0, common_1.dateStr)(baseDate)}のPV`]: (group) => (0, common_1.sum)(group.map((d) => d.calculatePV(baseDate) ?? 0), 3),
}),
]));
console.table(result);
};
showAggregate();
}
}
exports.PbevmSummaryUsecase = PbevmSummaryUsecase;
//# sourceMappingURL=pbevm-summary-usercase.js.map