evmtools-node 0.0.25 → 0.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,311 +1,320 @@
1
- <h1 align="center">Welcome to evmtools-node</h1>
2
- <p>
3
- <a href="#" target="_blank">
4
- <img alt="License: ISC" src="https://img.shields.io/badge/License-ISC-yellow.svg" />
5
- </a>
6
- <a href="https://twitter.com/masatomix" target="_blank">
7
- <img alt="Twitter: masatomix" src="https://img.shields.io/twitter/follow/masatomix.svg?style=social" />
8
- </a>
9
- </p>
10
-
11
- ## evmtools-node
12
-
13
- このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
14
-
15
- ### [サンプルサイト](https://masatomix.github.io/copy-utils-generator-webui/#/gamen3)
16
-
17
-
18
- WEBアプリ等で先のExcelファイルを読み書きできるように開発していますが、下記の通りコマンドラインから呼び出せるようにもしてあります。
19
-
20
-
21
- ## インストール
22
-
23
- ```bash
24
- npm install evmtools-node
25
- ```
26
-
27
- インストール後、以下のコマンドが使用可能になります。
28
-
29
- > **注記**: `npm install evmtools-node` せずに直接実行する場合は、`npx -p evmtools-node <command>` の形式で実行できます。
30
- > 例: `npx -p evmtools-node pbevm-show-project --path ./now.xlsm`
31
-
32
-
33
- ## コマンド
34
-
35
-
36
- ### プロジェクトの情報を表示・Excel出力する
37
-
38
- ```console
39
- $ npx pbevm-show-project --help
40
- Usage: npx pbevm-show-project [options]
41
-
42
- Options:
43
- --version Show version number [boolean]
44
- --path Excel file Path [string] [default: "./now.xlsm"]
45
- --help Show help [boolean]
46
-
47
- Examples:
48
- npx pbevm-show-project --path ./now.xlsm
49
- ```
50
-
51
- 例:
52
-
53
- ```console
54
- $ npx pbevm-show-project --path ./now.xlsm
55
- プロジェクト名: now
56
- 開始日: 2025/07/01
57
- 終了日: 2025/08/26
58
- 基準日: 2025/07/25
59
- タスク数:19件
60
- 先頭19行データ:
61
- ┌─────────┬───────┬────┬───────┬──────────────┬───────────┬──────────┬──────────────┬───────────────────┬─────┬─────┬─────┬───────────┬───────────┬───────────┬────────┬──────────────┬──────────────┬──────────────┬──────────────┬──────────────┐
62
- (index) │ sharp │ id │ level │ name │ assignee │ workload │ progressRate │ scheduledWorkDays │ pv │ ev │ spi │ delayDays │ remarks │ parentId │ isLeaf │ 予定開始日 │ 予定終了日 │ 実績開始日 │ 実績終了日 │ 進捗応当日 │
63
- ├─────────┼───────┼────┼───────┼──────────────┼───────────┼──────────┼──────────────┼───────────────────┼─────┼─────┼─────┼───────────┼───────────┼───────────┼────────┼──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
64
- │ 0 │ 1 │ 1 │ 1 │ '要件定義' │ undefined │ 4 │ 1 │ 4 │ 4 │ 4 │ 1 │ undefined │ undefined │ undefined │ false │ '2025/07/01' │ '2025/07/04' │ '2025/07/01' │ '2025/07/04' │ '' │
65
- │ 1 │ 2 │ 2 │ 2 │ '機能全体' │ '要員A' │ 4 │ 1 │ 4 │ 4 │ 4 │ 1 │ undefined │ undefined │ 1 │ true │ '2025/07/01' │ '2025/07/04' │ '2025/07/01' │ '2025/07/04' │ '' │
66
- │ 2 │ 3 │ 3 │ 1 │ '設計' │ undefined │ 15 │ 1 │ 12 │ 15 │ 15 │ 1 │ undefined │ undefined │ undefined │ false │ '2025/07/07' │ '2025/07/18' │ '2025/07/04' │ '2025/07/16' │ '' │
67
- │ 3 │ 4 │ 4 │ 2 │ '機能1' │ '要員A' │ 3 │ 1 │ 5 │ 3 │ 3 │ 1 │ undefined │ undefined │ 3 │ true │ '2025/07/07' │ '2025/07/11' │ '2025/07/07' │ '2025/07/11' │ '' │
68
- │ 4 │ 5 │ 5 │ 2 │ '機能2' │ '要員A' │ 2 │ 1 │ 5 │ 2 │ 2 │ 1 │ undefined │ undefined │ 3 │ true │ '2025/07/07' │ '2025/07/11' │ '2025/07/04' │ '2025/07/10' │ '' │
69
- 5 6 6 2 '機能3' '要員B' 5 1 5 5 5 1 │ undefinedundefined 3 │ true'2025/07/14' '2025/07/18' '2025/07/04' '2025/07/10' ''
70
- │ 6 │ 7 │ 7 │ 2 │ '機能4' │ '要員A' │ 5 │ 1 │ 5 │ 5 │ 5 │ 1 │ undefined │ undefined │ 3 │ true │ '2025/07/14' │ '2025/07/18' │ '2025/07/14' │ '2025/07/16' │ '' │
71
- 788 │ 1 │ '開発' │ undefined │ 30 │ 0.25 12 15 7.5 0.5 -2 │ undefined │ undefined │ false │ '2025/07/21' │ '2025/08/01' │ '2025/07/21' │ '' │ '2025/07/27' │
72
- 899 │ 2 │ '機能1' │ '要員A' │ 10 0.1 105 │ 1 │ 0.2 3 │ undefined │ 8 │ true │ '2025/07/21' │ '2025/08/01' │ '2025/07/21' │ '' │ '2025/07/22' │
73
- 9 1010 2 '機能2' │ '要員B' 5 0.2102.5 │ 1 │ 0.4 2 │ undefined │ 8 │ true │ '2025/07/21' │ '2025/08/01' │ '2025/07/21' │ '' │ '2025/07/23' │
74
- 10 1111 │ 2 │ '機能3' │ '要員B' │ 5 0.3 10 │ 2.5 1.5 0.6 1 │ undefined │ 8 │ true │ '2025/07/21' │ '2025/08/01' │ '2025/07/21' │ '' │ '2025/07/24' │
75
- 11 1212 │ 2 │ '機能4' │ '要員C' │ 10 0.4 10540.8 0 │ undefined │ 8 │ true │ '2025/07/21' │ '2025/08/01' │ '2025/07/21' │ '' │ '2025/07/25' │
76
- 12 1313 1 │ 'テスト' undefined 15 0 19000 │ undefined │ undefined │ undefined false │ '2025/08/04' │ '2025/08/22' │ '' '' │ '' │
77
- 13 1414 │ 2 │ '単体テスト' │ '要員A' │ 5 │ undefined │ 5 │ 000 │ undefined │ undefined │ 13 │ true │ '2025/08/04' │ '2025/08/08' │ '' '' │ '' │
78
- 14 1515 2 '連結テスト' │ '要員A' 5undefined 5 0 0 0 │ undefined │ undefined │ 13 │ true │ '2025/08/11' │ '2025/08/15' │ '' │ '' │ ''
79
- 15 1616 │ 2 │ '総合テスト' │ '要員A' │ 5 undefined │ 5 00 0 undefined │ undefined │ 13 │ true │ '2025/08/18' │ '2025/08/22' │ '' │ '' │ ''
80
- 1617171 │ 'リリース' │ undefined │ 20 │ 2 0 0 0 │ undefined │ undefined undefined │ false │ '2025/08/25' │ '2025/08/26' │ '' │ '' │ ''
81
- 171818 │ 2 │ '準備' │ '要員C' │ 1 undefined 1 0 0 0 undefined │ undefined │ 17 │ true │ '2025/08/25' │ '2025/08/25' │ '' │ '' │ ''
82
- 181919 │ 2 │ '作業' │ '要員C' │ 1 undefined │ 1 00 0 undefined │ undefined │ 17 │ true │ '2025/08/26' │ '2025/08/26' │ '' │ '' │ ''
83
- └─────────┴───────┴────┴───────┴──────────────┴───────────┴──────────┴──────────────┴───────────────────┴─────┴─────┴─────┴───────────┴───────────┴───────────┴────────┴──────────────┴──────────────┴──────────────┴──────────────┴──────────────┘
84
- プロジェクト情報
85
- ┌─────────┬─────────────┬──────────────┬──────────────┬─────────────────┬────────────────────┬─────────────────────────┬─────────────────┬──────────────┬──────────────┬───────────────────┬─────────┬────────────────────┐
86
- (index)projectNamestartDate endDate totalTasksCount totalWorkloadExcel totalWorkloadCalculatedaverageWorkload baseDate totalPvExcel totalPvCalculatedtotalEv spi
87
- ├─────────┼─────────────┼──────────────┼──────────────┼─────────────────┼────────────────────┼─────────────────────────┼─────────────────┼──────────────┼──────────────┼───────────────────┼─────────┼────────────────────┤
88
- 0 │ 'now' │ '2025/07/01' │ '2025/08/26' │ 14 │ 66 │ 66 │ 4.714 │ '2025/07/25' │ 34 34 26.5 0.7794117647058824 │
89
- └─────────┴─────────────┴──────────────┴──────────────┴─────────────────┴────────────────────┴─────────────────────────┴─────────────────┴──────────────┴──────────────┴───────────────────┴─────────┴────────────────────┘
90
- 要員ごと統計
91
- ┌─────────┬──────────┬─────────────────┬────────────────────┬─────────────────────────┬─────────────────┬──────────────┬──────────────┬───────────────────┬─────────┬────────────────────┐
92
- │ (index) │ assignee │ totalTasksCount │ totalWorkloadExcel │ totalWorkloadCalculated │ averageWorkload │ baseDate │ totalPvExcel │ totalPvCalculated │ totalEv │ spi │
93
- ├─────────┼──────────┼─────────────────┼────────────────────┼─────────────────────────┼─────────────────┼──────────────┼──────────────┼───────────────────┼─────────┼────────────────────┤
94
- │ 0 │ '要員A' │ 8 │ 39 │ 39 │ 4.875 │ '2025/07/25' │ 19 │ 19 │ 15 │ 0.7894736842105263 │
95
- 1 │ '要員B' 3 1515 5 │ '2025/07/25' │ 1010 7.5 │ 0.75
96
- │ 2 │ '要員C' │ 3 │ 12 │ 12 │ 4 │ '2025/07/25' │ 5 │ 5 │ 4 │ 0.8 │
97
- └─────────┴──────────┴─────────────────┴────────────────────┴─────────────────────────┴─────────────────┴──────────────┴──────────────┴───────────────────┴─────────┴────────────────────┘
98
-
99
-
100
- $ ls -lrt
101
- -rw-r--r-- 1 sysmgr sysmgr 468256 Jul 9 15:24 now.xlsm
102
- -rw-r--r-- 1 sysmgr sysmgr 50950 Jul 11 16:00 now-summary.xlsx <-上記情報
103
- $
104
- ```
105
-
106
- ### 指定した期間における、指定した担当者のタスクを表示する
107
-
108
-
109
- ```console
110
- $ npx pbevm-show-pv --help
111
- Usage: npx pbevm-show-pv [options]
112
-
113
- Options:
114
- --version Show version number [boolean]
115
- --path Excel file Path [string] [default: "./now.xlsm"]
116
- --fromDate From Date [string] [default: "2025-07-01"]
117
- --toDate To Date [string]
118
- --assignee Assignee [string]
119
- --help Show help [boolean]
120
-
121
- Examples:
122
- npx pbevm-show-pv --path now.xlsm --fromDate 2025-07-07 --toDate 2025-07-11
123
- --assignee '要員A'
124
- ```
125
-
126
-
127
- 例:
128
-
129
- ```
130
- $ npx pbevm-show-pv --path now.xlsm \
131
- --fromDate 2025-07-07 \
132
- --toDate 2025-07-11 \
133
- --assignee '要員A'
134
- (toDate未指定時はfromDateの日のみ、assignee未指定時は全員)
135
- ┌─────────┬───────┬────┬───────┬─────────┬──────────┬──────────┬──────────────┬───────────────────┬────┬────┬─────┬───────────┬───────────┬──────────┬────────┬──────────────┬──────────────┬──────────────┬──────────────┬────────────┐
136
- │ (index) │ sharp │ id │ level │ name │ assignee │ workload │ progressRate │ scheduledWorkDays │ pv │ ev │ spi │ delayDays │ remarks │ parentId │ isLeaf │ 予定開始日 │ 予定終了日 │ 実績開始日 │ 実績終了日 │ 進捗応当日 │
137
- ├─────────┼───────┼────┼───────┼─────────┼──────────┼──────────┼──────────────┼───────────────────┼────┼────┼─────┼───────────┼───────────┼──────────┼────────┼──────────────┼──────────────┼──────────────┼──────────────┼────────────┤
138
- │ 0 │ 4 │ 4 │ 2 │ '機能1' │ '要員A' │ 3 │ 1 │ 5 │ 3 │ 3 │ 1 │ undefined │ undefined │ 3 │ true │ '2025/07/07' │ '2025/07/11' │ '2025/07/07' │ '2025/07/11' │ '' │
139
- │ 1 │ 5 │ 5 │ 2 │ '機能2' │ '要員A' │ 2 │ 1 │ 5 │ 2 │ 2 │ 1 │ undefined │ undefined │ 3 │ true │ '2025/07/07' │ '2025/07/11' │ '2025/07/04' │ '2025/07/10' │ '' │
140
- └─────────┴───────┴────┴───────┴─────────┴──────────┴──────────┴──────────────┴───────────────────┴────┴────┴─────┴───────────┴───────────┴──────────┴────────┴──────────────┴──────────────┴──────────────┴──────────────┴────────────┘
141
-
142
- $ ls -lrt
143
- -rw-r--r-- 1 sysmgr sysmgr 468256 Jul 9 15:24 now.xlsm
144
- -rw-r--r-- 1 sysmgr sysmgr 7183 Jul 11 16:07 now-pv.xlsx
145
- $
146
- ```
147
-
148
- ### 指定したファイル間のDIFFをとる
149
-
150
-
151
- ```
152
- $ npx pbevm-diff --help
153
- Usage: npx pbevm-diff [options]
154
-
155
- Options:
156
- --version Show version number [boolean]
157
- --path Excel file Path [string] [default: "./now.xlsm"]
158
- --prevPath Excel file Path [string] [default: "./prev.xlsm"]
159
- --help Show help [boolean]
160
-
161
- Examples:
162
- npx pbevm-diff --path now.xlsm --prevPath prev.xlsm
163
- ```
164
-
165
-
166
- 例:
167
-
168
- ```
169
- $ npx pbevm-diff \
170
- --path now.xlsm \
171
- --prevPath prev.xlsm
172
- プロジェクトDiff
173
- ┌─────────┬─────────┬─────────┬────────┬────────┬───────────┬───────────┬───────────────┬────────────┬──────────────┬─────────┬──────────┐
174
- │ (index) │ deltaPV │ deltaEV │ prevPV │ prevEV │ currentPV │ currentEV │ modifiedCount │ addedCount │ removedCount │ hasDiff │ finished │
175
- ├─────────┼─────────┼─────────┼────────┼────────┼───────────┼───────────┼───────────────┼────────────┼──────────────┼─────────┼──────────┤
176
- │ 0 │ 30 │ 19.6 │ 0 │ 2.9 │ 30 │ 22.5 │ 8 │ 0 │ 0 │ true │ false │
177
- └─────────┴─────────┴─────────┴────────┴────────┴───────────┴───────────┴───────────────┴────────────┴──────────────┴─────────┴──────────┘
178
- 担当Diff
179
- ┌─────────┬──────────┬─────────┬─────────┬────────┬────────┬───────────┬───────────┬───────────────┬────────────┬──────────────┬─────────┬──────────┐
180
- │ (index) │ assignee │ deltaPV │ deltaEV │ prevPV │ prevEV │ currentPV │ currentEV │ modifiedCount │ addedCount │ removedCount │ hasDiff │ finished │
181
- ├─────────┼──────────┼─────────┼─────────┼────────┼────────┼───────────┼───────────┼───────────────┼────────────┼──────────────┼─────────┼──────────┤
182
- │ 0 │ '要員A' │ 15 │ 10.6 │ 0 │ 0.4 │ 15 │ 11 │ 4 │ 0 │ 0 │ true │ false │
183
- 1 '要員B' │ 10 5 │ 0 │ 2.510 7.5 │ 3 │ 0 │ 0 │ true │ false │
184
- │ 2 │ '要員C' │ 5 │ 4 │ 0 │ 0 │ 5 │ 4 │ 1 │ 0 │ 0 │ true │ false │
185
- └─────────┴──────────┴─────────┴─────────┴────────┴────────┴───────────┴───────────┴───────────────┴────────────┴──────────────┴─────────┴──────────┘
186
- タスクDiff
187
- ┌─────────┬────┬─────────┬──────────────┬──────────┬──────────┬───────────────────┬─────────┬─────────┬────────┬────────┬───────────┬───────────┬──────────────────┬─────────────────────┬─────────┬─────────────────────┬───────────┬───────────┬────────────┬──────────┬─────────────┬──────────┬──────────────────────────┬──────────────────────────┬──────────────────────────┬───────────────┬──────────────────┐
188
- │ (index) │ id │ name │ fullName │ assignee │ parentId │ deltaProgressRate │ deltaPV │ deltaEV │ prevPV │ prevEV │ currentPV │ currentEV │ prevProgressRate │ currentProgressRate │ hasDiff │ hasProgressRateDiff │ hasPvDiff │ hasEvDiff │ diffType │ finished │ isOverdueAt │ workload │ prevBaseDate │ currentBaseDate │ baseDate │ daysOverdueAt │ daysStrOverdueAt │
189
- ├─────────┼────┼─────────┼──────────────┼──────────┼──────────┼───────────────────┼─────────┼─────────┼────────┼────────┼───────────┼───────────┼──────────────────┼─────────────────────┼─────────┼─────────────────────┼───────────┼───────────┼────────────┼──────────┼─────────────┼──────────┼──────────────────────────┼──────────────────────────┼──────────────────────────┼───────────────┼──────────────────┤
190
- 04 │ '機能1' │ '設計/機能1' │ '要員A' │ 3 1 │ 3 3 │ 0 │ 0 3 3 undefined 1 │ true │ true │ true true │ 'modified' │ true │ false │ 3 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ -14 │ '14 日前' │
191
- 15 │ '機能2' │ '設計/機能2' │ '要員A' │ 3 0.8 │ 21.6 │ 0 │ 0.4 │ 22 │ 0.2 1 │ true │ true │ true true │ 'modified' │ true │ false │ 2 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ -14 │ '14 日前' │
192
- │ 2 │ 6 │ '機能3' │ '設計/機能3' │ '要員B' │ 3 │ 0.5 │ 5 │ 2.5 │ 0 │ 2.5 │ 5 │ 5 │ 0.5 │ 1 │ true │ true │ true │ true │ 'modified' │ true │ false │ 5 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ -7 │ '7 日前' │
193
- │ 3 │ 7 │ '機能4' │ '設計/機能4' │ '要員A' │ 3 │ 1 │ 5 │ 5 │ 0 │ 0 │ 5 │ 5 │ undefined │ 1 │ true │ true │ true │ true │ 'modified' │ true │ false │ 5 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ -7 │ '7 日前' │
194
- │ 4 │ 9 │ '機能1' │ '開発/機能1' │ '要員A' │ 8 │ 0.1 │ 5 │ 1 │ 0 │ 0 │ 5 │ 1 │ undefined │ 0.1 │ true │ true │ true │ true │ 'modified' │ false │ false │ 10 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 7 │ '7 日後' │
195
- 5 10'機能2''開発/機能2''要員B' 8 0.2 2.5 1 0 0 2.5 1 undefined 0.2 true true │ true │ true │ 'modified'false false │ 5 │ 2025-07-03T15:00:00.000Z2025-07-24T15:00:00.000Z2025-07-24T15:00:00.000Z7'7 日後'
196
- │ 6 │ 11 │ '機能3' │ '開発/機能3' │ '要員B' │ 8 │ 0.3 │ 2.5 │ 1.5 │ 0 │ 0 │ 2.5 │ 1.5 │ undefined │ 0.3 │ true │ true │ true │ true │ 'modified' │ false │ false │ 5 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 7 │ '7 日後' │
197
- 712 │ '機能4' │ '開発/機能4' │ '要員C' │ 8 0.4 54 │ 0 │ 0 │ 54 │ undefined │ 0.4 │ true │ true │ true │ true │ 'modified' │ false │ false │ 10 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 7 '7 日後' │
198
- └─────────┴────┴─────────┴──────────────┴──────────┴──────────┴───────────────────┴─────────┴─────────┴────────┴────────┴───────────┴───────────┴──────────────────┴─────────────────────┴─────────┴─────────────────────┴───────────┴───────────┴────────────┴──────────┴─────────────┴──────────┴──────────────────────────┴──────────────────────────┴──────────────────────────┴───────────────┴──────────────────┘
199
-
200
- $ ls -lrt
201
- -rw-r--r-- 1 sysmgr sysmgr 463539 Jul 9 15:24 prev.xlsm
202
- -rw-r--r-- 1 sysmgr sysmgr 468256 Jul 9 15:24 now.xlsm
203
- -rw-r--r-- 1 sysmgr sysmgr 15937 Jul 11 16:14 now-diff.xlsx
204
- ```
205
-
206
-
207
-
208
-
209
-
210
- ## Author
211
-
212
- 👤 **Masatomi KINO**
213
-
214
- <!-- * Twitter: [@masatomix](https://twitter.com/masatomix) -->
215
- * Github: [@masatomix](https://github.com/masatomix)
216
-
217
- ## 🤝 Contributing
218
-
219
- Contributions, issues and feature requests are welcome!<br />Feel free to check [issues page](https://github.com/masatomix/evmtools-node/issues).
220
-
221
- ## Show your support
222
-
223
- Give a ⭐️ if this project helped you!
224
-
225
-
226
- ## 開発者向け
227
-
228
- ### ドキュメント
229
-
230
- 詳細なドキュメントは [docs/README.md](docs/README.md) を参照してください。
231
-
232
- - [コア用語集](docs/GLOSSARY.md) - Project, TaskRow, EVM指標などの用語定義
233
- - 開発ワークフロー
234
- - 仕様書(要件定義・設計書)
235
- - コーディング標準
236
- - トレーサビリティの事例
237
-
238
- ### テスト実行
239
-
240
- ```bash
241
- npm test # 全テストを実行
242
- npm test -- --watch # ウォッチモードで実行
243
- npm run test:coverage # カバレッジレポート付きで実行
244
- ```
245
-
246
- ### ビルド
247
-
248
- ```bash
249
- npm run build # クリーン、TypeScriptコンパイル、.hbsテンプレートのコピー
250
- npm run lint # ESLintチェック
251
- npm run format # Prettierチェック
252
- ```
253
-
254
- 詳細な開発フローは [DEVELOPMENT_WORKFLOW.md](docs/workflow/DEVELOPMENT_WORKFLOW.md) を参照してください。
255
-
256
- ## 改訂履歴
257
- - 0.0.25 タスクフィルタリングと統計情報機能(filterTasks, getStatistics, getStatisticsByName)、型チェック自動化
258
- - 0.0.24 pv-today機能、遅延タスク取得機能、EVM指標拡張(ETC'・完了予測日)
259
- - 0.0.20 タスク管理機能、仕様書テンプレート統一化
260
- - 0.0.19 CLI出力整形(pbevm-diff, pbevm-show-pvから不要プロパティ除去)、ドキュメント相対リンク化
261
- - 0.0.18 CsvProjectCreator追加、VersionInfo追加、excludedTasks追加、Jest環境導入、仕様駆動開発導入
262
- - 0.0.17 正しいデータかを表す「validStatus」プロパティを追加
263
- - 0.0.15 微調整
264
- - 0.0.14 もろもろリファクタリング。要員計画を読み込むコードのβ版リリース
265
- - 0.0.13 Diffのプロパティに工数(workload)を追加。
266
- - 0.0.12 時系列の統計データを読み込む ProjectStatisticsCreator を追加。
267
- - 0.0.11 指定した基準日のSPI/SV(EV-PV)を返すメソッドをTaskRowに追加。
268
- - 0.0.10 内部処理の見直し(ログ関連)。
269
- - 0.0.8 Projectに休日データを保持するプロパティを追加。Projectに日付を指定して祝日かを返すメソッドを追加。
270
- - 0.0.7 内部のリファクタリング(キャッシュして処理改善)
271
- - 0.0.6 README.md(このファイル)を更新。Project#getTaskRows で、条件に合致するTaskRowを返すメソッドを追加
272
- - 0.0.5 初回リリース(絶賛開発中)
273
-
274
-
275
- ## 🔧 Logger 設定のカスタマイズ
276
-
277
- このライブラリは `pino` を使ってログを出力しています。
278
- ログ出力レベルやフォーマットを変更したい場合は、``config/default.json`` を作成して設定を記述してください。
279
-
280
-
281
- ```json
282
- {
283
- "evmtools-node-logger": {
284
- "level": "warn",
285
- "moduleLogLevels": {
286
- "main": "info"
287
- },
288
- "transport": {
289
- "target": "pino-pretty",
290
- "options": {
291
- "translateTime": "SYS:standard",
292
- "ignore": "id,hostname",
293
- "levelFirst": true
294
- }
295
- }
296
- }
297
- }
298
- ```
299
-
300
-
301
- ```
302
- "level": "warn", // 全体のログレベルを指定
303
- "moduleLogLevels": // ソースごとにlevelを変えたい場合、この中に記述
304
- "transport": // pino のtransport設定などを記述
305
- "target": "pino-pretty", // この場合は npm install --save-dev pino-pretty すること
306
- ```
307
-
308
-
309
-
310
- ***
1
+ <h1 align="center">Welcome to evmtools-node</h1>
2
+ <p>
3
+ <a href="#" target="_blank">
4
+ <img alt="License: ISC" src="https://img.shields.io/badge/License-ISC-yellow.svg" />
5
+ </a>
6
+ <a href="https://twitter.com/masatomix" target="_blank">
7
+ <img alt="Twitter: masatomix" src="https://img.shields.io/twitter/follow/masatomix.svg?style=social" />
8
+ </a>
9
+ </p>
10
+
11
+ ## evmtools-node
12
+
13
+ このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
14
+
15
+ ### [サンプルサイト](https://masatomix.github.io/copy-utils-generator-webui/#/gamen3)
16
+
17
+
18
+ WEBアプリ等で先のExcelファイルを読み書きできるように開発していますが、下記の通りコマンドラインから呼び出せるようにもしてあります。
19
+
20
+
21
+ ## インストール
22
+
23
+ ```bash
24
+ npm install evmtools-node
25
+ ```
26
+
27
+ インストール後、以下のコマンドが使用可能になります。
28
+
29
+ > **注記**: `npm install evmtools-node` せずに直接実行する場合は、`npx -p evmtools-node <command>` の形式で実行できます。
30
+ > 例: `npx -p evmtools-node pbevm-show-project --path ./now.xlsm`
31
+
32
+ ## サンプル集
33
+
34
+ ライブラリの使い方は [サンプル集](docs/examples/README.md) を参照してください。
35
+
36
+ - [基本的な使い方](docs/examples/01-basic-usage.md) - Excel読込、タスク一覧、EVM指標
37
+ - [プロジェクト統計](docs/examples/02-project-statistics.md) - BAC/PV/EV/SPI、担当者別統計
38
+ - [完了予測](docs/examples/04-completion-forecast.md) - spiOverride、シナリオ分析
39
+
40
+ ## コマンド
41
+
42
+
43
+ ### プロジェクトの情報を表示・Excel出力する
44
+
45
+ ```console
46
+ $ npx pbevm-show-project --help
47
+ Usage: npx pbevm-show-project [options]
48
+
49
+ Options:
50
+ --version Show version number [boolean]
51
+ --path Excel file Path [string] [default: "./now.xlsm"]
52
+ --help Show help [boolean]
53
+
54
+ Examples:
55
+ npx pbevm-show-project --path ./now.xlsm
56
+ ```
57
+
58
+ 例:
59
+
60
+ ```console
61
+ $ npx pbevm-show-project --path ./now.xlsm
62
+ プロジェクト名: now
63
+ 開始日: 2025/07/01
64
+ 終了日: 2025/08/26
65
+ 基準日: 2025/07/25
66
+ タスク数:19件
67
+ 先頭19行データ:
68
+ ┌─────────┬───────┬────┬───────┬──────────────┬───────────┬──────────┬──────────────┬───────────────────┬─────┬─────┬─────┬───────────┬───────────┬───────────┬────────┬──────────────┬──────────────┬──────────────┬──────────────┬──────────────┐
69
+ (index) sharp id level name assignee workload progressRate scheduledWorkDays pv evspidelayDaysremarksparentId isLeaf 予定開始日 予定終了日 実績開始日 実績終了日 │ 進捗応当日 │
70
+ ├─────────┼───────┼────┼───────┼──────────────┼───────────┼──────────┼──────────────┼───────────────────┼─────┼─────┼─────┼───────────┼───────────┼───────────┼────────┼──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
71
+ 011 │ 1 │ '要件定義' │ undefined │ 4 1 │ 4 4 4 1 │ undefined │ undefined │ undefined │ false │ '2025/07/01' │ '2025/07/04' │ '2025/07/01' │ '2025/07/04' │ '' │
72
+ 122 │ 2 │ '機能全体' │ '要員A' │ 4 1 4 44 │ 1 │ undefined │ undefined │ 1 │ true │ '2025/07/01' │ '2025/07/04' │ '2025/07/01' │ '2025/07/04' │ '' │
73
+ 23 3 1 '設計' │ undefined 15 1 1215 │ 15 │ 1 │ undefined undefined │ undefined │ false │ '2025/07/07' │ '2025/07/18' │ '2025/07/04' │ '2025/07/16' │ '' │
74
+ 3 4 4 │ 2 │ '機能1' │ '要員A' │ 31 │ 5 3 │ 3 │ 1 undefined │ undefined │ 3 │ true │ '2025/07/07' │ '2025/07/11' │ '2025/07/07' │ '2025/07/11' │ '' │
75
+ 4 5 5 │ 2 │ '機能2' │ '要員A' │ 2 1 5 22 1 │ undefined │ undefined │ 3 │ true │ '2025/07/07' │ '2025/07/11' │ '2025/07/04' │ '2025/07/10' │ '' │
76
+ 5 6 6 2 │ '機能3' '要員B' 5 15 551 │ undefined │ undefined │ 3 true │ '2025/07/14' │ '2025/07/18' │ '2025/07/04' '2025/07/10' │ '' │
77
+ 6 7 7 │ 2 │ '機能4' │ '要員A' │ 5 │ 1 │ 5 │ 551 │ undefined │ undefined │ 3 │ true │ '2025/07/14' │ '2025/07/18' │ '2025/07/14' '2025/07/16' │ '' │
78
+ 7 8 8 1 '開発' undefined 30 0.25 12 │ 15 7.5 0.5 -2 │ undefined │ undefined │ false │ '2025/07/21' │ '2025/08/01' │ '2025/07/21' │ '' │ '2025/07/27'
79
+ 8 9 9 │ 2 │ '機能1' │ '要員A' │ 10 │ 0.1 1051 0.2 3 │ undefined │ 8 │ true │ '2025/07/21' │ '2025/08/01' │ '2025/07/21' │ '' │ '2025/07/22'
80
+ 9 10102 '機能2' │ '要員B' │ 5 0.2 10 2.5 1 0.4 2 │ undefined │ 8 true │ '2025/07/21' │ '2025/08/01' │ '2025/07/21' │ '' │ '2025/07/23'
81
+ 101111 │ 2 │ '機能3' │ '要員B' │ 5 0.3 10 2.5 1.5 0.6 1 │ undefined │ 8 │ true │ '2025/07/21' │ '2025/08/01' │ '2025/07/21' │ '' │ '2025/07/24'
82
+ 111212 │ 2 │ '機能4' │ '要員C' │ 10 │ 0.4 1054 0.8 0 │ undefined │ 8 │ true │ '2025/07/21' │ '2025/08/01' │ '2025/07/21' │ '' │ '2025/07/25'
83
+ │ 12 │ 13 │ 13 │ 1 │ 'テスト' │ undefined │ 15 │ 0 │ 19 │ 0 │ 0 │ 0 │ undefined │ undefined │ undefined │ false │ '2025/08/04' │ '2025/08/22' │ '' │ '' │ '' │
84
+ │ 13 │ 14 │ 14 │ 2 │ '単体テスト' │ '要員A' │ 5 │ undefined │ 5 │ 0 │ 0 │ 0 │ undefined │ undefined │ 13 │ true │ '2025/08/04' │ '2025/08/08' │ '' │ '' │ '' │
85
+ │ 14 │ 15 │ 15 │ 2 │ '連結テスト' │ '要員A' │ 5 │ undefined │ 5 │ 0 │ 0 │ 0 │ undefined │ undefined │ 13 │ true │ '2025/08/11' │ '2025/08/15' │ '' │ '' │ '' │
86
+ 15 │ 16 │ 16 2 │ '総合テスト''要員A' 5 undefined 5 0 │ 0 │ 0 │ undefinedundefined 13 true '2025/08/18''2025/08/22' '' '' │ '' │
87
+ │ 16 │ 17 │ 17 │ 1 │ 'リリース' │ undefined │ 2 │ 0 │ 2 │ 0 │ 0 │ 0 │ undefined │ undefined │ undefined │ false │ '2025/08/25' │ '2025/08/26' │ '' │ '' │ '' │
88
+ 17 18 │ 18 │ 2 │ '準備' │ '要員C' │ 1 │ undefined │ 1 │ 0 │ 0 │ 0 │ undefined undefined │ 17 │ true │ '2025/08/25' │ '2025/08/25' │ '' '' ''
89
+ │ 18 │ 19 │ 19 │ 2 │ '作業' │ '要員C' │ 1 │ undefined │ 1 │ 0 │ 0 │ 0 │ undefined │ undefined │ 17 │ true │ '2025/08/26' │ '2025/08/26' │ '' │ '' │ '' │
90
+ └─────────┴───────┴────┴───────┴──────────────┴───────────┴──────────┴──────────────┴───────────────────┴─────┴─────┴─────┴───────────┴───────────┴───────────┴────────┴──────────────┴──────────────┴──────────────┴──────────────┴──────────────┘
91
+ プロジェクト情報
92
+ ┌─────────┬─────────────┬──────────────┬──────────────┬─────────────────┬────────────────────┬─────────────────────────┬─────────────────┬──────────────┬──────────────┬───────────────────┬─────────┬────────────────────┐
93
+ │ (index) │ projectName │ startDate │ endDate │ totalTasksCount │ totalWorkloadExcel │ totalWorkloadCalculated │ averageWorkload │ baseDate │ totalPvExcel │ totalPvCalculated │ totalEv │ spi │
94
+ ├─────────┼─────────────┼──────────────┼──────────────┼─────────────────┼────────────────────┼─────────────────────────┼─────────────────┼──────────────┼──────────────┼───────────────────┼─────────┼────────────────────┤
95
+ 0 'now' │ '2025/07/01' '2025/08/26' │ 146666 4.714 │ '2025/07/25' │ 3434 26.5 │ 0.7794117647058824
96
+ └─────────┴─────────────┴──────────────┴──────────────┴─────────────────┴────────────────────┴─────────────────────────┴─────────────────┴──────────────┴──────────────┴───────────────────┴─────────┴────────────────────┘
97
+ 要員ごと統計
98
+ ┌─────────┬──────────┬─────────────────┬────────────────────┬─────────────────────────┬─────────────────┬──────────────┬──────────────┬───────────────────┬─────────┬────────────────────┐
99
+ │ (index) │ assignee │ totalTasksCount │ totalWorkloadExcel │ totalWorkloadCalculated │ averageWorkload │ baseDate │ totalPvExcel │ totalPvCalculated │ totalEv │ spi │
100
+ ├─────────┼──────────┼─────────────────┼────────────────────┼─────────────────────────┼─────────────────┼──────────────┼──────────────┼───────────────────┼─────────┼────────────────────┤
101
+ │ 0 │ '要員A' │ 8 │ 39 │ 39 │ 4.875 │ '2025/07/25' │ 19 │ 19 │ 15 0.7894736842105263 │
102
+ 1 '要員B' │ 3 │ 15 │ 15 │ 5 │ '2025/07/25' │ 10 │ 10 │ 7.5 │ 0.75 │
103
+ │ 2 │ '要員C' │ 3 │ 12 │ 12 │ 4 │ '2025/07/25' │ 5 │ 5 │ 4 │ 0.8 │
104
+ └─────────┴──────────┴─────────────────┴────────────────────┴─────────────────────────┴─────────────────┴──────────────┴──────────────┴───────────────────┴─────────┴────────────────────┘
105
+
106
+
107
+ $ ls -lrt
108
+ -rw-r--r-- 1 sysmgr sysmgr 468256 Jul 9 15:24 now.xlsm
109
+ -rw-r--r-- 1 sysmgr sysmgr 50950 Jul 11 16:00 now-summary.xlsx <-上記情報
110
+ $
111
+ ```
112
+
113
+ ### 指定した期間における、指定した担当者のタスクを表示する
114
+
115
+
116
+ ```console
117
+ $ npx pbevm-show-pv --help
118
+ Usage: npx pbevm-show-pv [options]
119
+
120
+ Options:
121
+ --version Show version number [boolean]
122
+ --path Excel file Path [string] [default: "./now.xlsm"]
123
+ --fromDate From Date [string] [default: "2025-07-01"]
124
+ --toDate To Date [string]
125
+ --assignee Assignee [string]
126
+ --help Show help [boolean]
127
+
128
+ Examples:
129
+ npx pbevm-show-pv --path now.xlsm --fromDate 2025-07-07 --toDate 2025-07-11
130
+ --assignee '要員A'
131
+ ```
132
+
133
+
134
+ 例:
135
+
136
+ ```
137
+ $ npx pbevm-show-pv --path now.xlsm \
138
+ --fromDate 2025-07-07 \
139
+ --toDate 2025-07-11 \
140
+ --assignee '要員A'
141
+ (toDate未指定時はfromDateの日のみ、assignee未指定時は全員)
142
+ ┌─────────┬───────┬────┬───────┬─────────┬──────────┬──────────┬──────────────┬───────────────────┬────┬────┬─────┬───────────┬───────────┬──────────┬────────┬──────────────┬──────────────┬──────────────┬──────────────┬────────────┐
143
+ (index) sharp id │ level │ name │ assignee │ workload │ progressRate │ scheduledWorkDays │ pv │ ev │ spi │ delayDays │ remarks │ parentId │ isLeaf │ 予定開始日 │ 予定終了日 │ 実績開始日 │ 実績終了日 │ 進捗応当日 │
144
+ ├─────────┼───────┼────┼───────┼─────────┼──────────┼──────────┼──────────────┼───────────────────┼────┼────┼─────┼───────────┼───────────┼──────────┼────────┼──────────────┼──────────────┼──────────────┼──────────────┼────────────┤
145
+ │ 0 │ 4 │ 4 │ 2 │ '機能1' │ '要員A' │ 3 │ 1 │ 5 │ 3 │ 3 │ 1 │ undefined │ undefined │ 3 │ true │ '2025/07/07' │ '2025/07/11' │ '2025/07/07' │ '2025/07/11' │ '' │
146
+ │ 1 │ 5 │ 5 │ 2 │ '機能2' │ '要員A' │ 2 │ 1 │ 5 │ 2 │ 2 │ 1 │ undefined │ undefined │ 3 │ true │ '2025/07/07' │ '2025/07/11' │ '2025/07/04' │ '2025/07/10' │ '' │
147
+ └─────────┴───────┴────┴───────┴─────────┴──────────┴──────────┴──────────────┴───────────────────┴────┴────┴─────┴───────────┴───────────┴──────────┴────────┴──────────────┴──────────────┴──────────────┴──────────────┴────────────┘
148
+
149
+ $ ls -lrt
150
+ -rw-r--r-- 1 sysmgr sysmgr 468256 Jul 9 15:24 now.xlsm
151
+ -rw-r--r-- 1 sysmgr sysmgr 7183 Jul 11 16:07 now-pv.xlsx
152
+ $
153
+ ```
154
+
155
+ ### 指定したファイル間のDIFFをとる
156
+
157
+
158
+ ```
159
+ $ npx pbevm-diff --help
160
+ Usage: npx pbevm-diff [options]
161
+
162
+ Options:
163
+ --version Show version number [boolean]
164
+ --path Excel file Path [string] [default: "./now.xlsm"]
165
+ --prevPath Excel file Path [string] [default: "./prev.xlsm"]
166
+ --help Show help [boolean]
167
+
168
+ Examples:
169
+ npx pbevm-diff --path now.xlsm --prevPath prev.xlsm
170
+ ```
171
+
172
+
173
+ 例:
174
+
175
+ ```
176
+ $ npx pbevm-diff \
177
+ --path now.xlsm \
178
+ --prevPath prev.xlsm
179
+ プロジェクトDiff
180
+ ┌─────────┬─────────┬─────────┬────────┬────────┬───────────┬───────────┬───────────────┬────────────┬──────────────┬─────────┬──────────┐
181
+ │ (index) │ deltaPV │ deltaEV │ prevPV │ prevEV │ currentPV │ currentEV │ modifiedCount │ addedCount │ removedCount │ hasDiff │ finished │
182
+ ├─────────┼─────────┼─────────┼────────┼────────┼───────────┼───────────┼───────────────┼────────────┼──────────────┼─────────┼──────────┤
183
+ 030 19.6 │ 0 │ 2.930 22.5 │ 8 │ 0 │ 0 │ true │ false │
184
+ └─────────┴─────────┴─────────┴────────┴────────┴───────────┴───────────┴───────────────┴────────────┴──────────────┴─────────┴──────────┘
185
+ 担当Diff
186
+ ┌─────────┬──────────┬─────────┬─────────┬────────┬────────┬───────────┬───────────┬───────────────┬────────────┬──────────────┬─────────┬──────────┐
187
+ │ (index) │ assignee │ deltaPV │ deltaEV │ prevPV │ prevEV │ currentPV │ currentEV │ modifiedCount │ addedCount │ removedCount │ hasDiff │ finished │
188
+ ├─────────┼──────────┼─────────┼─────────┼────────┼────────┼───────────┼───────────┼───────────────┼────────────┼──────────────┼─────────┼──────────┤
189
+ │ 0 │ '要員A' │ 15 │ 10.6 │ 0 │ 0.4 │ 15 │ 11 │ 4 │ 0 │ 0 │ true │ false │
190
+ 1 │ '要員B' │ 105 │ 0 │ 2.5 10 7.5 │ 3 0 0 │ true │ false
191
+ 2 │ '要員C' │ 5 40 │ 0 │ 541 │ 0 0 │ true │ false
192
+ └─────────┴──────────┴─────────┴─────────┴────────┴────────┴───────────┴───────────┴───────────────┴────────────┴──────────────┴─────────┴──────────┘
193
+ タスクDiff
194
+ ┌─────────┬────┬─────────┬──────────────┬──────────┬──────────┬───────────────────┬─────────┬─────────┬────────┬────────┬───────────┬───────────┬──────────────────┬─────────────────────┬─────────┬─────────────────────┬───────────┬───────────┬────────────┬──────────┬─────────────┬──────────┬──────────────────────────┬──────────────────────────┬──────────────────────────┬───────────────┬──────────────────┐
195
+ (index) id name │ fullName │ assigneeparentIddeltaProgressRate deltaPV deltaEV prevPV prevEV currentPV currentEV prevProgressRate currentProgressRate hasDiff hasProgressRateDiff hasPvDiff hasEvDiffdiffType finishedisOverdueAtworkloadprevBaseDatecurrentBaseDate │ baseDate │ daysOverdueAt daysStrOverdueAt │
196
+ ├─────────┼────┼─────────┼──────────────┼──────────┼──────────┼───────────────────┼─────────┼─────────┼────────┼────────┼───────────┼───────────┼──────────────────┼─────────────────────┼─────────┼─────────────────────┼───────────┼───────────┼────────────┼──────────┼─────────────┼──────────┼──────────────────────────┼──────────────────────────┼──────────────────────────┼───────────────┼──────────────────┤
197
+ 04 │ '機能1' │ '設計/機能1' │ '要員A' │ 3 1 33 │ 0 │ 0 │ 33 │ undefined │ 1 │ true │ true │ true │ true │ 'modified' │ true │ false │ 3 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ -14 '14 日前' │
198
+ │ 1 │ 5 │ '機能2' │ '設計/機能2' │ '要員A' │ 3 │ 0.8 │ 2 │ 1.6 │ 0 │ 0.4 │ 2 │ 2 │ 0.2 │ 1 │ true │ true │ true │ true │ 'modified' │ true │ false │ 2 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ -14 │ '14 日前' │
199
+ │ 2 │ 6 │ '機能3' │ '設計/機能3' │ '要員B' │ 3 │ 0.5 │ 5 │ 2.5 │ 0 │ 2.5 │ 5 │ 5 │ 0.5 │ 1 │ true │ true │ true │ true │ 'modified' │ true │ false │ 5 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ -7 │ '7 日前' │
200
+ │ 3 │ 7 │ '機能4' │ '設計/機能4' │ '要員A' │ 3 │ 1 │ 5 │ 5 │ 0 │ 0 │ 5 │ 5 │ undefined │ 1 │ true │ true │ true │ true │ 'modified' │ true │ false │ 5 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ -7 │ '7 日前' │
201
+ │ 4 │ 9 │ '機能1' '開発/機能1' '要員A' │ 8 │ 0.1 │ 5 │ 1 │ 0 │ 0 │ 5 │ 1 │ undefined │ 0.1 │ true │ true │ true │ true │ 'modified' │ false │ false │ 10 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 7 │ '7 日後' │
202
+ │ 5 │ 10 '機能2' '開発/機能2' │ '要員B' │ 8 │ 0.2 │ 2.5 │ 1 │ 0 │ 0 │ 2.5 │ 1 │ undefined │ 0.2 │ true │ true │ true │ true │ 'modified' │ false │ false │ 5 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 7 │ '7 日後' │
203
+ │ 6 │ 11 │ '機能3' │ '開発/機能3' │ '要員B' │ 8 │ 0.3 │ 2.5 │ 1.5 │ 0 │ 0 │ 2.5 │ 1.5 │ undefined │ 0.3 │ true │ true │ true │ true │ 'modified' false │ false │ 5 │ 2025-07-03T15:00:00.000Z 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 7 │ '7 日後' │
204
+ │ 7 │ 12 │ '機能4' │ '開発/機能4' │ '要員C' │ 8 │ 0.4 │ 5 │ 4 │ 0 │ 0 │ 5 │ 4 │ undefined │ 0.4 │ true │ true │ true │ true │ 'modified' │ false │ false │ 10 │ 2025-07-03T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 2025-07-24T15:00:00.000Z │ 7 │ '7 日後' │
205
+ └─────────┴────┴─────────┴──────────────┴──────────┴──────────┴───────────────────┴─────────┴─────────┴────────┴────────┴───────────┴───────────┴──────────────────┴─────────────────────┴─────────┴─────────────────────┴───────────┴───────────┴────────────┴──────────┴─────────────┴──────────┴──────────────────────────┴──────────────────────────┴──────────────────────────┴───────────────┴──────────────────┘
206
+
207
+ $ ls -lrt
208
+ -rw-r--r-- 1 sysmgr sysmgr 463539 Jul 9 15:24 prev.xlsm
209
+ -rw-r--r-- 1 sysmgr sysmgr 468256 Jul 9 15:24 now.xlsm
210
+ -rw-r--r-- 1 sysmgr sysmgr 15937 Jul 11 16:14 now-diff.xlsx
211
+ ```
212
+
213
+
214
+
215
+
216
+
217
+ ## Author
218
+
219
+ 👤 **Masatomi KINO**
220
+
221
+ <!-- * Twitter: [@masatomix](https://twitter.com/masatomix) -->
222
+ * Github: [@masatomix](https://github.com/masatomix)
223
+
224
+ ## 🤝 Contributing
225
+
226
+ Contributions, issues and feature requests are welcome!<br />Feel free to check [issues page](https://github.com/masatomix/evmtools-node/issues).
227
+
228
+ ## Show your support
229
+
230
+ Give a ⭐️ if this project helped you!
231
+
232
+
233
+ ## 開発者向け
234
+
235
+ ### ドキュメント
236
+
237
+ 詳細なドキュメントは [docs/README.md](docs/README.md) を参照してください。
238
+
239
+ - [コア用語集](docs/GLOSSARY.md) - Project, TaskRow, EVM指標などの用語定義
240
+ - 開発ワークフロー
241
+ - 仕様書(要件定義・設計書)
242
+ - コーディング標準
243
+ - トレーサビリティの事例
244
+
245
+ ### テスト実行
246
+
247
+ ```bash
248
+ npm test # 全テストを実行
249
+ npm test -- --watch # ウォッチモードで実行
250
+ npm run test:coverage # カバレッジレポート付きで実行
251
+ ```
252
+
253
+ ### ビルド
254
+
255
+ ```bash
256
+ npm run build # クリーン、TypeScriptコンパイル、.hbsテンプレートのコピー
257
+ npm run lint # ESLintチェック
258
+ npm run format # Prettierチェック
259
+ ```
260
+
261
+ 詳細な開発フローは [DEVELOPMENT_WORKFLOW.md](docs/workflow/DEVELOPMENT_WORKFLOW.md) を参照してください。
262
+
263
+ ## 改訂履歴
264
+ - 0.0.27 spiOverrideオプション追加、サンプルドキュメント集、remainingDays計算修正
265
+ - 0.0.26 直近N日SPI計算機能、EVM進捗管理ガイド、完了予測機能リファクタリング
266
+ - 0.0.25 タスクフィルタリングと統計情報機能(filterTasks, getStatistics, getStatisticsByName)、型チェック自動化
267
+ - 0.0.24 pv-today機能、遅延タスク取得機能、EVM指標拡張(ETC'・完了予測日)
268
+ - 0.0.20 タスク管理機能、仕様書テンプレート統一化
269
+ - 0.0.19 CLI出力整形(pbevm-diff, pbevm-show-pvから不要プロパティ除去)、ドキュメント相対リンク化
270
+ - 0.0.18 CsvProjectCreator追加、VersionInfo追加、excludedTasks追加、Jest環境導入、仕様駆動開発導入
271
+ - 0.0.17 正しいデータかを表す「validStatus」プロパティを追加
272
+ - 0.0.15 微調整
273
+ - 0.0.14 もろもろリファクタリング。要員計画を読み込むコードのβ版リリース
274
+ - 0.0.13 Diffのプロパティに工数(workload)を追加。
275
+ - 0.0.12 時系列の統計データを読み込む ProjectStatisticsCreator を追加。
276
+ - 0.0.11 指定した基準日のSPI/SV(EV-PV)を返すメソッドをTaskRowに追加。
277
+ - 0.0.10 内部処理の見直し(ログ関連)。
278
+ - 0.0.8 Projectに休日データを保持するプロパティを追加。Projectに日付を指定して祝日かを返すメソッドを追加。
279
+ - 0.0.7 内部のリファクタリング(キャッシュして処理改善)
280
+ - 0.0.6 README.md(このファイル)を更新。Project#getTaskRows で、条件に合致するTaskRowを返すメソッドを追加
281
+ - 0.0.5 初回リリース(絶賛開発中)
282
+
283
+
284
+ ## 🔧 Logger 設定のカスタマイズ
285
+
286
+ このライブラリは `pino` を使ってログを出力しています。
287
+ ログ出力レベルやフォーマットを変更したい場合は、``config/default.json`` を作成して設定を記述してください。
288
+
289
+
290
+ ```json
291
+ {
292
+ "evmtools-node-logger": {
293
+ "level": "warn",
294
+ "moduleLogLevels": {
295
+ "main": "info"
296
+ },
297
+ "transport": {
298
+ "target": "pino-pretty",
299
+ "options": {
300
+ "translateTime": "SYS:standard",
301
+ "ignore": "id,hostname",
302
+ "levelFirst": true
303
+ }
304
+ }
305
+ }
306
+ }
307
+ ```
308
+
309
+
310
+ ```
311
+ "level": "warn", // 全体のログレベルを指定
312
+ "moduleLogLevels": // ソースごとにlevelを変えたい場合、この中に記述
313
+ "transport": // pino のtransport設定などを記述
314
+ "target": "pino-pretty", // この場合は npm install --save-dev pino-pretty すること
315
+ ```
316
+
317
+
318
+
319
+ ***
311
320
  _This README was generated by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_