mdjournal 1.0.0

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.
Files changed (62) hide show
  1. package/README.md +209 -0
  2. package/dist/cli.d.ts +12 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +601 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/index.d.ts +8 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +100 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/routes/calendar.d.ts +8 -0
  11. package/dist/routes/calendar.d.ts.map +1 -0
  12. package/dist/routes/calendar.js +115 -0
  13. package/dist/routes/calendar.js.map +1 -0
  14. package/dist/routes/config.d.ts +9 -0
  15. package/dist/routes/config.d.ts.map +1 -0
  16. package/dist/routes/config.js +75 -0
  17. package/dist/routes/config.js.map +1 -0
  18. package/dist/routes/gcal.d.ts +10 -0
  19. package/dist/routes/gcal.d.ts.map +1 -0
  20. package/dist/routes/gcal.js +100 -0
  21. package/dist/routes/gcal.js.map +1 -0
  22. package/dist/routes/index.d.ts +8 -0
  23. package/dist/routes/index.d.ts.map +1 -0
  24. package/dist/routes/index.js +8 -0
  25. package/dist/routes/index.js.map +1 -0
  26. package/dist/routes/reports.d.ts +10 -0
  27. package/dist/routes/reports.d.ts.map +1 -0
  28. package/dist/routes/reports.js +175 -0
  29. package/dist/routes/reports.js.map +1 -0
  30. package/dist/types/index.d.ts +190 -0
  31. package/dist/types/index.d.ts.map +1 -0
  32. package/dist/types/index.js +5 -0
  33. package/dist/types/index.js.map +1 -0
  34. package/dist/utils/configValidator.d.ts +43 -0
  35. package/dist/utils/configValidator.d.ts.map +1 -0
  36. package/dist/utils/configValidator.js +435 -0
  37. package/dist/utils/configValidator.js.map +1 -0
  38. package/dist/utils/fileManager.d.ts +101 -0
  39. package/dist/utils/fileManager.d.ts.map +1 -0
  40. package/dist/utils/fileManager.js +295 -0
  41. package/dist/utils/fileManager.js.map +1 -0
  42. package/dist/utils/git.d.ts +42 -0
  43. package/dist/utils/git.d.ts.map +1 -0
  44. package/dist/utils/git.js +130 -0
  45. package/dist/utils/git.js.map +1 -0
  46. package/dist/utils/index.d.ts +8 -0
  47. package/dist/utils/index.d.ts.map +1 -0
  48. package/dist/utils/index.js +8 -0
  49. package/dist/utils/index.js.map +1 -0
  50. package/dist/utils/markdown.d.ts +23 -0
  51. package/dist/utils/markdown.d.ts.map +1 -0
  52. package/dist/utils/markdown.js +378 -0
  53. package/dist/utils/markdown.js.map +1 -0
  54. package/dist/utils/slack.d.ts +24 -0
  55. package/dist/utils/slack.d.ts.map +1 -0
  56. package/dist/utils/slack.js +90 -0
  57. package/dist/utils/slack.js.map +1 -0
  58. package/dist/utils/validator.d.ts +66 -0
  59. package/dist/utils/validator.d.ts.map +1 -0
  60. package/dist/utils/validator.js +359 -0
  61. package/dist/utils/validator.js.map +1 -0
  62. package/package.json +64 -0
package/dist/cli.js ADDED
@@ -0,0 +1,601 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * 日報管理ダッシュボード CLI
4
+ *
5
+ * Usage:
6
+ * npx report-dashboard [config.yaml] # サーバー起動
7
+ * npx report-dashboard --config ./my-config.yaml # 設定ファイル指定
8
+ * npx report-dashboard validate ./reports # バリデーション実行
9
+ * npx report-dashboard --help
10
+ */
11
+ import fs from 'fs/promises';
12
+ import path from 'path';
13
+ import yaml from 'js-yaml';
14
+ import matter from 'gray-matter';
15
+ import { fileURLToPath } from 'url';
16
+ import { setTimelineConfig, setRootConfig } from './utils/fileManager.js';
17
+ import { validateReport, formatValidationResult, formatValidationSummary, VALIDATION_RULES, } from './utils/validator.js';
18
+ import { validateConfigFiles, formatValidationResults, } from './utils/configValidator.js';
19
+ import { parseMarkdown, calculateStats } from './utils/markdown.js';
20
+ const __filename = fileURLToPath(import.meta.url);
21
+ const __dirname = path.dirname(__filename);
22
+ function printHelp() {
23
+ console.log(`
24
+ 日報管理ダッシュボード
25
+
26
+ Usage:
27
+ npx report-dashboard [options] [config-file] # サーバー起動
28
+ npx report-dashboard config <config-file> # 設定ファイルのチェック
29
+ npx report-dashboard validate [options] <path> # 日報バリデーション実行
30
+ npx report-dashboard stats [options] <path> # 統計情報(frontmatter)を再集計
31
+
32
+ Server Options:
33
+ -c, --config <file> 設定ファイルを指定 (YAML形式)
34
+ -p, --port <port> サーバーポートを指定 (デフォルト: 3001)
35
+ -h, --help このヘルプを表示
36
+
37
+ Config Check Options:
38
+ (設定ファイルパスを指定して、設定ファイルのバリデーションを実行)
39
+
40
+ Validate Options:
41
+ --strict 警告もエラーとして扱う
42
+ --verbose 詳細な出力(提案を含む)
43
+ --json JSON形式で出力
44
+ --rules 利用可能なルール一覧を表示
45
+ --skip <rules> スキップするルール(カンマ区切り)
46
+
47
+ Stats Options:
48
+ --dry-run 実際にファイルを更新せず、変更内容のみ表示
49
+ --verbose 詳細な出力
50
+ --json JSON形式で出力
51
+ --validate 事前にバリデーションを実行し、エラーがあるファイルはスキップ
52
+
53
+ Examples:
54
+ # サーバー起動
55
+ npx report-dashboard # サンプルデータで起動
56
+ npx report-dashboard ./mdjournal.config.yaml # 設定ファイルを指定して起動
57
+ npx report-dashboard -c ./mdjournal.config.yaml # 同上
58
+ npx report-dashboard -p 8080 # ポートを指定して起動
59
+
60
+ # 設定ファイルのチェック
61
+ npx report-dashboard config ./mdjournal.config.yaml
62
+
63
+ # 日報バリデーション
64
+ npx report-dashboard validate ./reports # ディレクトリ内の全.mdを検証
65
+ npx report-dashboard validate ./reports/2020 # 2020年のみ検証
66
+ npx report-dashboard validate ./reports --strict # 厳格モード
67
+ npx report-dashboard validate ./reports --verbose # 詳細出力
68
+ npx report-dashboard validate ./reports --json # JSON形式で出力
69
+ npx report-dashboard validate --rules # ルール一覧を表示
70
+
71
+ # 統計情報(frontmatter)再集計
72
+ npx report-dashboard stats ./reports # frontmatterを付与・更新
73
+ npx report-dashboard stats ./reports --dry-run # 変更内容のプレビュー
74
+ npx report-dashboard stats ./reports --validate # バリデーション後に実行
75
+
76
+ Config File Format (YAML):
77
+ # 各設定ファイルへのパス(相対パスは設定ファイルからの相対)
78
+ projects: ./config/projects.yaml
79
+ routines: ./config/routines.yaml
80
+ reports: ./reports
81
+
82
+ # タイムライン設定(オプション)
83
+ timeline:
84
+ hourHeight: 60 # 1時間あたりの高さ(ピクセル)
85
+ maxHours: 36 # 最大表示時間
86
+ defaultStartHour: 8 # デフォルト開始時刻
87
+ defaultEndHour: 20 # デフォルト終了時刻
88
+ snapMinutes: 15 # ドラッグ時のスナップ単位(分)
89
+
90
+ # サーバー設定(オプション)
91
+ server:
92
+ port: 3001
93
+ cors: http://localhost:5173
94
+ `);
95
+ }
96
+ function printValidationRules() {
97
+ console.log(`
98
+ 利用可能なバリデーションルール:
99
+ `);
100
+ for (const [code, description] of Object.entries(VALIDATION_RULES)) {
101
+ console.log(` ${code.padEnd(25)} ${description}`);
102
+ }
103
+ console.log('');
104
+ }
105
+ async function loadRootConfig(configPath) {
106
+ const absolutePath = path.resolve(configPath);
107
+ const configDir = path.dirname(absolutePath);
108
+ try {
109
+ const content = await fs.readFile(absolutePath, 'utf-8');
110
+ const config = yaml.load(content);
111
+ // 相対パスを絶対パスに変換
112
+ const resolvePath = (p) => p ? path.resolve(configDir, p) : undefined;
113
+ return {
114
+ projects: resolvePath(config.projects),
115
+ routines: resolvePath(config.routines),
116
+ reports: resolvePath(config.reports),
117
+ timeline: config.timeline,
118
+ server: config.server,
119
+ };
120
+ }
121
+ catch (error) {
122
+ if (error.code === 'ENOENT') {
123
+ console.error(`Error: 設定ファイルが見つかりません: ${absolutePath}`);
124
+ process.exit(1);
125
+ }
126
+ throw error;
127
+ }
128
+ }
129
+ function parseServerArgs(args) {
130
+ let configPath;
131
+ let port;
132
+ let help = false;
133
+ for (let i = 0; i < args.length; i++) {
134
+ const arg = args[i];
135
+ if (arg === '-h' || arg === '--help') {
136
+ help = true;
137
+ }
138
+ else if (arg === '-c' || arg === '--config') {
139
+ configPath = args[++i];
140
+ }
141
+ else if (arg === '-p' || arg === '--port') {
142
+ port = parseInt(args[++i], 10);
143
+ }
144
+ else if (!arg.startsWith('-') && !configPath) {
145
+ // 位置引数として設定ファイルを受け取る
146
+ configPath = arg;
147
+ }
148
+ }
149
+ return { configPath, port, help };
150
+ }
151
+ function parseValidateArgs(args) {
152
+ let targetPath;
153
+ let strict = false;
154
+ let verbose = false;
155
+ let json = false;
156
+ let rules = false;
157
+ let help = false;
158
+ const skipRules = [];
159
+ for (let i = 0; i < args.length; i++) {
160
+ const arg = args[i];
161
+ if (arg === '-h' || arg === '--help') {
162
+ help = true;
163
+ }
164
+ else if (arg === '--strict') {
165
+ strict = true;
166
+ }
167
+ else if (arg === '--verbose' || arg === '-v') {
168
+ verbose = true;
169
+ }
170
+ else if (arg === '--json') {
171
+ json = true;
172
+ }
173
+ else if (arg === '--rules') {
174
+ rules = true;
175
+ }
176
+ else if (arg === '--skip') {
177
+ const skipValue = args[++i];
178
+ if (skipValue) {
179
+ skipRules.push(...skipValue.split(','));
180
+ }
181
+ }
182
+ else if (!arg.startsWith('-')) {
183
+ targetPath = arg;
184
+ }
185
+ }
186
+ return { targetPath, strict, verbose, json, rules, skipRules, help };
187
+ }
188
+ function parseStatsArgs(args) {
189
+ let targetPath;
190
+ let dryRun = false;
191
+ let verbose = false;
192
+ let json = false;
193
+ let validate = false;
194
+ let help = false;
195
+ for (let i = 0; i < args.length; i++) {
196
+ const arg = args[i];
197
+ if (arg === '-h' || arg === '--help') {
198
+ help = true;
199
+ }
200
+ else if (arg === '--dry-run') {
201
+ dryRun = true;
202
+ }
203
+ else if (arg === '--verbose' || arg === '-v') {
204
+ verbose = true;
205
+ }
206
+ else if (arg === '--json') {
207
+ json = true;
208
+ }
209
+ else if (arg === '--validate') {
210
+ validate = true;
211
+ }
212
+ else if (!arg.startsWith('-')) {
213
+ targetPath = arg;
214
+ }
215
+ }
216
+ return { targetPath, dryRun, verbose, json, validate, help };
217
+ }
218
+ /**
219
+ * ディレクトリから再帰的に.mdファイルを収集
220
+ */
221
+ async function collectMarkdownFiles(targetPath) {
222
+ const files = [];
223
+ const stat = await fs.stat(targetPath);
224
+ if (stat.isFile()) {
225
+ if (targetPath.endsWith('.md')) {
226
+ files.push(targetPath);
227
+ }
228
+ }
229
+ else if (stat.isDirectory()) {
230
+ const entries = await fs.readdir(targetPath, { withFileTypes: true });
231
+ for (const entry of entries) {
232
+ const fullPath = path.join(targetPath, entry.name);
233
+ if (entry.isDirectory()) {
234
+ files.push(...await collectMarkdownFiles(fullPath));
235
+ }
236
+ else if (entry.isFile() && entry.name.endsWith('.md')) {
237
+ files.push(fullPath);
238
+ }
239
+ }
240
+ }
241
+ return files.sort();
242
+ }
243
+ /**
244
+ * バリデーションを実行
245
+ */
246
+ async function runValidation(args) {
247
+ if (args.help) {
248
+ printHelp();
249
+ process.exit(0);
250
+ }
251
+ if (args.rules) {
252
+ printValidationRules();
253
+ process.exit(0);
254
+ }
255
+ if (!args.targetPath) {
256
+ console.error('Error: バリデーション対象のパスを指定してください');
257
+ console.error('Usage: npx report-dashboard validate <path>');
258
+ process.exit(1);
259
+ }
260
+ const absolutePath = path.resolve(args.targetPath);
261
+ try {
262
+ await fs.access(absolutePath);
263
+ }
264
+ catch {
265
+ console.error(`Error: パスが見つかりません: ${absolutePath}`);
266
+ process.exit(1);
267
+ }
268
+ console.log(`バリデーション対象: ${absolutePath}`);
269
+ console.log('');
270
+ const files = await collectMarkdownFiles(absolutePath);
271
+ if (files.length === 0) {
272
+ console.log('Markdownファイルが見つかりませんでした');
273
+ process.exit(0);
274
+ }
275
+ console.log(`${files.length} ファイルを検証中...`);
276
+ console.log('');
277
+ const results = [];
278
+ for (const file of files) {
279
+ try {
280
+ const content = await fs.readFile(file, 'utf-8');
281
+ const result = validateReport(content, file, {
282
+ strict: args.strict,
283
+ skipRules: args.skipRules,
284
+ });
285
+ results.push(result);
286
+ // 問題があるファイルのみ出力(JSON以外)
287
+ if (!args.json && (result.issues.length > 0 || args.verbose)) {
288
+ console.log(formatValidationResult(result, { verbose: args.verbose }));
289
+ }
290
+ }
291
+ catch (err) {
292
+ console.error(`Error reading ${file}: ${err.message}`);
293
+ }
294
+ }
295
+ // JSON出力
296
+ if (args.json) {
297
+ console.log(JSON.stringify(results, null, 2));
298
+ process.exit(results.every(r => r.isValid) ? 0 : 1);
299
+ }
300
+ // サマリー出力
301
+ console.log(formatValidationSummary(results));
302
+ // 終了コード
303
+ const hasErrors = results.some(r => !r.isValid);
304
+ process.exit(hasErrors ? 1 : 0);
305
+ }
306
+ /**
307
+ * frontmatter付きMarkdownを生成
308
+ */
309
+ function generateFrontmatter(stats) {
310
+ const lines = [
311
+ '---',
312
+ `planHours: ${stats.planHours}`,
313
+ `resultHours: ${stats.resultHours}`,
314
+ `todoCount: ${stats.todoCount}`,
315
+ `todoCompleted: ${stats.todoCompleted}`,
316
+ `todoInProgress: ${stats.todoInProgress}`,
317
+ ];
318
+ if (Object.keys(stats.projectHours).length > 0) {
319
+ lines.push('projectHours:');
320
+ for (const [project, hours] of Object.entries(stats.projectHours)) {
321
+ lines.push(` ${project}: ${hours}`);
322
+ }
323
+ }
324
+ else {
325
+ lines.push('projectHours: {}');
326
+ }
327
+ lines.push(`updatedAt: ${stats.updatedAt}`);
328
+ lines.push('---');
329
+ return lines.join('\n');
330
+ }
331
+ /**
332
+ * 統計情報(frontmatter)を再集計
333
+ */
334
+ async function runStats(args) {
335
+ if (args.help) {
336
+ printHelp();
337
+ process.exit(0);
338
+ }
339
+ if (!args.targetPath) {
340
+ console.error('Error: 対象のパスを指定してください');
341
+ console.error('Usage: npx report-dashboard stats <path>');
342
+ process.exit(1);
343
+ }
344
+ const absolutePath = path.resolve(args.targetPath);
345
+ try {
346
+ await fs.access(absolutePath);
347
+ }
348
+ catch {
349
+ console.error(`Error: パスが見つかりません: ${absolutePath}`);
350
+ process.exit(1);
351
+ }
352
+ console.log(`統計情報(frontmatter)再集計対象: ${absolutePath}`);
353
+ if (args.dryRun) {
354
+ console.log('\x1b[33m[DRY-RUN] ファイルは更新されません\x1b[0m');
355
+ }
356
+ console.log('');
357
+ const files = await collectMarkdownFiles(absolutePath);
358
+ if (files.length === 0) {
359
+ console.log('Markdownファイルが見つかりませんでした');
360
+ process.exit(0);
361
+ }
362
+ console.log(`${files.length} ファイルを処理中...`);
363
+ console.log('');
364
+ const results = [];
365
+ let updatedCount = 0;
366
+ let skippedCount = 0;
367
+ let errorCount = 0;
368
+ for (const file of files) {
369
+ try {
370
+ const fileContent = await fs.readFile(file, 'utf-8');
371
+ // frontmatterと本文を分離
372
+ const { content, data: existingFrontmatter } = matter(fileContent);
373
+ // バリデーションオプションが有効な場合、事前チェック
374
+ if (args.validate) {
375
+ const validationResult = validateReport(content, file);
376
+ if (!validationResult.isValid) {
377
+ if (!args.json) {
378
+ console.log(`\x1b[33m⚠\x1b[0m ${file} \x1b[2m(バリデーションエラーのためスキップ)\x1b[0m`);
379
+ }
380
+ results.push({
381
+ file,
382
+ date: '',
383
+ stats: {},
384
+ updated: false,
385
+ error: 'validation_error',
386
+ });
387
+ skippedCount++;
388
+ continue;
389
+ }
390
+ }
391
+ // 日付をファイル名から抽出
392
+ const dateMatch = path.basename(file, '.md').match(/(\d{4}-\d{2}-\d{2})/);
393
+ if (!dateMatch) {
394
+ if (!args.json && args.verbose) {
395
+ console.log(`\x1b[33m⚠\x1b[0m ${file} \x1b[2m(日付形式のファイル名ではないためスキップ)\x1b[0m`);
396
+ }
397
+ skippedCount++;
398
+ continue;
399
+ }
400
+ const date = dateMatch[1];
401
+ // Markdownをパース
402
+ const report = parseMarkdown(date, content);
403
+ // 統計情報を計算
404
+ const stats = calculateStats(report);
405
+ // frontmatter生成
406
+ const newFrontmatter = generateFrontmatter(stats);
407
+ const newContent = newFrontmatter + '\n' + content.trim() + '\n';
408
+ // 変更があるか確認
409
+ const hasChanges = newContent !== fileContent;
410
+ if (hasChanges) {
411
+ if (!args.dryRun) {
412
+ await fs.writeFile(file, newContent, 'utf-8');
413
+ }
414
+ updatedCount++;
415
+ if (!args.json) {
416
+ console.log(`\x1b[33m⟳\x1b[0m ${file}`);
417
+ if (args.verbose) {
418
+ console.log(` planHours: ${stats.planHours.toFixed(1)}, resultHours: ${stats.resultHours.toFixed(1)}, todos: ${stats.todoCount} (${stats.todoCompleted} completed)`);
419
+ }
420
+ }
421
+ }
422
+ else {
423
+ if (!args.json && args.verbose) {
424
+ console.log(`\x1b[32m✓\x1b[0m ${file} \x1b[2m(変更なし)\x1b[0m`);
425
+ }
426
+ }
427
+ results.push({
428
+ file,
429
+ date,
430
+ stats,
431
+ updated: hasChanges,
432
+ });
433
+ }
434
+ catch (err) {
435
+ errorCount++;
436
+ if (!args.json) {
437
+ console.error(`\x1b[31m✗\x1b[0m ${file}: ${err.message}`);
438
+ }
439
+ results.push({
440
+ file,
441
+ date: '',
442
+ stats: {},
443
+ updated: false,
444
+ error: err.message,
445
+ });
446
+ }
447
+ }
448
+ // JSON出力
449
+ if (args.json) {
450
+ console.log(JSON.stringify(results, null, 2));
451
+ process.exit(errorCount > 0 ? 1 : 0);
452
+ }
453
+ // サマリー出力
454
+ console.log('');
455
+ console.log('═══════════════════════════════════════════════════════════════');
456
+ console.log('統計情報(frontmatter)再集計サマリー');
457
+ console.log('───────────────────────────────────────────────────────────────');
458
+ console.log(`ファイル数: ${files.length}`);
459
+ if (args.dryRun) {
460
+ console.log(` \x1b[33m⟳ 更新予定: ${updatedCount}\x1b[0m`);
461
+ }
462
+ else {
463
+ console.log(` \x1b[33m⟳ 更新: ${updatedCount}\x1b[0m`);
464
+ }
465
+ console.log(` \x1b[32m✓ 変更なし: ${files.length - updatedCount - skippedCount - errorCount}\x1b[0m`);
466
+ if (skippedCount > 0) {
467
+ console.log(` \x1b[33m⚠ スキップ: ${skippedCount}\x1b[0m`);
468
+ }
469
+ if (errorCount > 0) {
470
+ console.log(` \x1b[31m✗ エラー: ${errorCount}\x1b[0m`);
471
+ }
472
+ console.log('═══════════════════════════════════════════════════════════════');
473
+ process.exit(errorCount > 0 ? 1 : 0);
474
+ }
475
+ /**
476
+ * サーバーを起動
477
+ */
478
+ async function runServer(args) {
479
+ if (args.help) {
480
+ printHelp();
481
+ process.exit(0);
482
+ }
483
+ // 環境変数を設定
484
+ if (args.configPath) {
485
+ const configAbsolutePath = path.resolve(args.configPath);
486
+ // 設定ファイルのバリデーション
487
+ console.log('設定ファイルをチェック中...\n');
488
+ const validationResult = await validateConfigFiles(configAbsolutePath);
489
+ // バリデーション結果を表示
490
+ if (!validationResult.valid || validationResult.warnings.length > 0) {
491
+ console.log(formatValidationResults(validationResult));
492
+ console.log('');
493
+ }
494
+ // エラーがある場合は終了
495
+ if (!validationResult.valid) {
496
+ console.error('\x1b[31m設定ファイルにエラーがあります。修正してから再度実行してください。\x1b[0m\n');
497
+ process.exit(1);
498
+ }
499
+ const rootConfig = await loadRootConfig(args.configPath);
500
+ // 環境変数経由でサーバーに設定を渡す
501
+ if (rootConfig.projects)
502
+ process.env.CONFIG_PROJECTS = rootConfig.projects;
503
+ if (rootConfig.routines)
504
+ process.env.CONFIG_ROUTINES = rootConfig.routines;
505
+ if (rootConfig.reports)
506
+ process.env.CONFIG_REPORTS = rootConfig.reports;
507
+ if (rootConfig.server?.port)
508
+ process.env.PORT = String(rootConfig.server.port);
509
+ if (rootConfig.server?.cors)
510
+ process.env.CORS_ORIGIN = rootConfig.server.cors;
511
+ // タイムライン設定をfileManagerにセット
512
+ if (rootConfig.timeline) {
513
+ setTimelineConfig(rootConfig.timeline);
514
+ }
515
+ // ルート設定全体をfileManagerに保存(Slack設定などで使用)
516
+ setRootConfig(rootConfig);
517
+ console.log(`設定ファイル: ${configAbsolutePath}`);
518
+ }
519
+ else {
520
+ // デフォルト: サンプルデータを使用
521
+ const samplePath = path.join(__dirname, '..', 'sample');
522
+ const sampleConfigPath = path.join(samplePath, 'mdjournal.config.yaml');
523
+ // サンプル設定のバリデーション(エラーは警告として表示、起動は継続)
524
+ try {
525
+ const validationResult = await validateConfigFiles(sampleConfigPath);
526
+ if (!validationResult.valid) {
527
+ console.log('\x1b[33mサンプルデータの設定に問題があります:\x1b[0m');
528
+ console.log(formatValidationResults(validationResult));
529
+ console.log('');
530
+ }
531
+ }
532
+ catch {
533
+ // サンプルがない場合は無視
534
+ }
535
+ process.env.CONFIG_PROJECTS = path.join(samplePath, 'config', 'projects.yaml');
536
+ process.env.CONFIG_ROUTINES = path.join(samplePath, 'config', 'routines.yaml');
537
+ process.env.CONFIG_REPORTS = path.join(samplePath, 'reports');
538
+ console.log('サンプルデータで起動します');
539
+ }
540
+ // コマンドライン引数のポートを優先
541
+ if (args.port) {
542
+ process.env.PORT = String(args.port);
543
+ }
544
+ // サーバーを起動
545
+ await import('./index.js');
546
+ }
547
+ /**
548
+ * 設定ファイルのチェックを実行
549
+ */
550
+ async function runConfigCheck(configPath) {
551
+ const absolutePath = path.resolve(configPath);
552
+ console.log('設定ファイルをチェック中...\n');
553
+ console.log(`対象: ${absolutePath}\n`);
554
+ const result = await validateConfigFiles(absolutePath);
555
+ console.log(formatValidationResults(result));
556
+ console.log('');
557
+ // サマリー
558
+ console.log('═══════════════════════════════════════════════════════════════');
559
+ if (result.valid) {
560
+ console.log(` \x1b[32m✓ 有効な設定ファイルです\x1b[0m`);
561
+ }
562
+ else {
563
+ console.log(` \x1b[31m✗ エラー: ${result.errors.length}\x1b[0m`);
564
+ }
565
+ if (result.warnings.length > 0) {
566
+ console.log(` \x1b[33m⚠ 警告: ${result.warnings.length}\x1b[0m`);
567
+ }
568
+ console.log('═══════════════════════════════════════════════════════════════');
569
+ process.exit(result.valid ? 0 : 1);
570
+ }
571
+ async function main() {
572
+ const args = process.argv.slice(2);
573
+ // サブコマンドの判定
574
+ if (args[0] === 'validate') {
575
+ const validateArgs = parseValidateArgs(args.slice(1));
576
+ await runValidation(validateArgs);
577
+ }
578
+ else if (args[0] === 'stats') {
579
+ const statsArgs = parseStatsArgs(args.slice(1));
580
+ await runStats(statsArgs);
581
+ }
582
+ else if (args[0] === 'config') {
583
+ // 設定ファイルのチェック
584
+ if (!args[1]) {
585
+ console.error('\x1b[31mエラー: 設定ファイルのパスを指定してください\x1b[0m');
586
+ console.log('\n使用方法: npx report-dashboard config <config-file>');
587
+ console.log('例: npx report-dashboard config ./mdjournal.config.yaml\n');
588
+ process.exit(1);
589
+ }
590
+ await runConfigCheck(args[1]);
591
+ }
592
+ else {
593
+ const serverArgs = parseServerArgs(args);
594
+ await runServer(serverArgs);
595
+ }
596
+ }
597
+ main().catch((error) => {
598
+ console.error('Error:', error.message);
599
+ process.exit(1);
600
+ });
601
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 日報管理ダッシュボード バックエンドサーバー
3
+ *
4
+ * Express.jsベースのREST APIサーバー
5
+ */
6
+ declare const app: import("express-serve-static-core").Express;
7
+ export default app;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyBH,QAAA,MAAM,GAAG,6CAAY,CAAC;AAsFtB,eAAe,GAAG,CAAC"}