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
@@ -0,0 +1,175 @@
1
+ /**
2
+ * 日報API ルーター
3
+ *
4
+ * GET /api/reports/:date - 日報取得
5
+ * PUT /api/reports/:date - 日報保存
6
+ * DELETE /api/reports/:date - 日報削除
7
+ */
8
+ import { Router } from 'express';
9
+ import { readReport, writeReport, deleteReport, getReportFilePath } from '../utils/fileManager.js';
10
+ import { parseMarkdown, calculateStats } from '../utils/markdown.js';
11
+ import { gitCommit, gitPush, getRelativePathFromGitRoot } from '../utils/git.js';
12
+ import { postToSlack } from '../utils/slack.js';
13
+ const router = Router();
14
+ /**
15
+ * 日付形式のバリデーション
16
+ */
17
+ function isValidDate(date) {
18
+ return /^\d{4}-\d{2}-\d{2}$/.test(date);
19
+ }
20
+ /**
21
+ * GET /api/reports/:date - 日報取得
22
+ */
23
+ router.get('/:date', async (req, res) => {
24
+ const { date } = req.params;
25
+ if (!isValidDate(date)) {
26
+ const error = {
27
+ code: 'INVALID_DATE',
28
+ message: '日付形式が不正です(YYYY-MM-DD形式で指定してください)',
29
+ };
30
+ return res.status(400).json(error);
31
+ }
32
+ try {
33
+ const result = await readReport(date);
34
+ if (!result) {
35
+ const error = {
36
+ code: 'NOT_FOUND',
37
+ message: '指定された日報が見つかりません',
38
+ };
39
+ return res.status(404).json(error);
40
+ }
41
+ // frontmatterがない場合はパースして統計情報を計算
42
+ let stats = result.stats;
43
+ if (!stats) {
44
+ const report = parseMarkdown(date, result.content);
45
+ stats = calculateStats(report);
46
+ }
47
+ const response = {
48
+ date,
49
+ content: result.content,
50
+ stats,
51
+ };
52
+ res.json(response);
53
+ }
54
+ catch (error) {
55
+ console.error('Error reading report:', error);
56
+ const apiError = {
57
+ code: 'INTERNAL_ERROR',
58
+ message: '日報の読み込み中にエラーが発生しました',
59
+ };
60
+ res.status(500).json(apiError);
61
+ }
62
+ });
63
+ /**
64
+ * PUT /api/reports/:date - 日報保存
65
+ */
66
+ router.put('/:date', async (req, res) => {
67
+ const { date } = req.params;
68
+ const body = req.body;
69
+ if (!isValidDate(date)) {
70
+ const error = {
71
+ code: 'INVALID_DATE',
72
+ message: '日付形式が不正です(YYYY-MM-DD形式で指定してください)',
73
+ };
74
+ return res.status(400).json(error);
75
+ }
76
+ if (!body.content) {
77
+ const error = {
78
+ code: 'MISSING_CONTENT',
79
+ message: 'contentフィールドは必須です',
80
+ };
81
+ return res.status(400).json(error);
82
+ }
83
+ try {
84
+ // Markdownをパースして統計情報を計算
85
+ const report = parseMarkdown(date, body.content);
86
+ const stats = calculateStats(report);
87
+ // ファイルに保存
88
+ await writeReport(date, body.content, stats);
89
+ const response = {
90
+ date,
91
+ saved: true,
92
+ stats,
93
+ };
94
+ // Git操作
95
+ if (body.git?.commit) {
96
+ const filePath = getReportFilePath(date);
97
+ const relativePath = getRelativePathFromGitRoot(filePath);
98
+ const message = body.git.message || `日報更新: ${date}`;
99
+ console.log(`Git commit: ${relativePath}`);
100
+ const commitResult = await gitCommit(relativePath, message);
101
+ console.log(`Git commit result:`, commitResult);
102
+ response.git = {
103
+ committed: commitResult.success,
104
+ commitHash: commitResult.commitHash,
105
+ error: commitResult.error,
106
+ };
107
+ // Push
108
+ if (body.git.push && commitResult.success) {
109
+ const pushResult = await gitPush();
110
+ response.git.pushed = pushResult.success;
111
+ if (pushResult.error) {
112
+ response.git.error = pushResult.error;
113
+ }
114
+ }
115
+ }
116
+ // Slack投稿
117
+ if (body.slack?.post) {
118
+ console.log(`Slack post: ${date}`);
119
+ const slackResult = await postToSlack(date, body.content);
120
+ response.slack = {
121
+ posted: slackResult.success,
122
+ error: slackResult.error,
123
+ };
124
+ if (slackResult.success) {
125
+ console.log(`Slack post success`);
126
+ }
127
+ else {
128
+ console.log(`Slack post failed: ${slackResult.error}`);
129
+ }
130
+ }
131
+ res.json(response);
132
+ }
133
+ catch (error) {
134
+ console.error('Error saving report:', error);
135
+ const apiError = {
136
+ code: 'INTERNAL_ERROR',
137
+ message: '日報の保存中にエラーが発生しました',
138
+ };
139
+ res.status(500).json(apiError);
140
+ }
141
+ });
142
+ /**
143
+ * DELETE /api/reports/:date - 日報削除
144
+ */
145
+ router.delete('/:date', async (req, res) => {
146
+ const { date } = req.params;
147
+ if (!isValidDate(date)) {
148
+ const error = {
149
+ code: 'INVALID_DATE',
150
+ message: '日付形式が不正です(YYYY-MM-DD形式で指定してください)',
151
+ };
152
+ return res.status(400).json(error);
153
+ }
154
+ try {
155
+ const deleted = await deleteReport(date);
156
+ if (!deleted) {
157
+ const error = {
158
+ code: 'NOT_FOUND',
159
+ message: '指定された日報が見つかりません',
160
+ };
161
+ return res.status(404).json(error);
162
+ }
163
+ res.status(204).send();
164
+ }
165
+ catch (error) {
166
+ console.error('Error deleting report:', error);
167
+ const apiError = {
168
+ code: 'INTERNAL_ERROR',
169
+ message: '日報の削除中にエラーが発生しました',
170
+ };
171
+ res.status(500).json(apiError);
172
+ }
173
+ });
174
+ export default router;
175
+ //# sourceMappingURL=reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/routes/reports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * 日報管理ダッシュボード サーバー型定義
3
+ */
4
+ export type ProjectCategory = 'internal' | 'client' | 'personal';
5
+ export interface Project {
6
+ code: string;
7
+ name: string;
8
+ color: string;
9
+ category: ProjectCategory;
10
+ client?: string;
11
+ active: boolean;
12
+ }
13
+ export interface ScheduleItemMetadata {
14
+ priority?: 'high' | 'medium' | 'low';
15
+ meeting_url?: string;
16
+ duration?: number;
17
+ related_todo?: string;
18
+ tags?: string[];
19
+ }
20
+ export interface ScheduleItem {
21
+ id: string;
22
+ time: string;
23
+ project: string;
24
+ task: string;
25
+ duration?: number;
26
+ metadata?: ScheduleItemMetadata;
27
+ }
28
+ export type TodoStatus = 'pending' | 'in_progress' | 'completed' | 'on_hold';
29
+ export interface TodoItem {
30
+ id: string;
31
+ project: string;
32
+ task: string;
33
+ status: TodoStatus;
34
+ deadline?: string;
35
+ priority?: 'high' | 'medium' | 'low';
36
+ description?: string;
37
+ createdAt?: string;
38
+ updatedAt?: string;
39
+ }
40
+ export interface ReportStats {
41
+ planHours: number;
42
+ resultHours: number;
43
+ todoCount: number;
44
+ todoCompleted: number;
45
+ todoInProgress: number;
46
+ projectHours: Record<string, number>;
47
+ updatedAt: string;
48
+ }
49
+ export interface DailyReport {
50
+ date: string;
51
+ author: string;
52
+ plan: ScheduleItem[];
53
+ result: ScheduleItem[];
54
+ todos: TodoItem[];
55
+ notes?: string;
56
+ stats?: ReportStats;
57
+ }
58
+ export interface RoutineItem {
59
+ id?: string;
60
+ time: string;
61
+ project: string;
62
+ task: string;
63
+ duration: number;
64
+ }
65
+ export interface MonthlyRoutineItem {
66
+ project: string;
67
+ task: string;
68
+ category?: 'plan' | 'todo';
69
+ }
70
+ export interface WeeklyRoutine {
71
+ monday?: RoutineItem[];
72
+ tuesday?: RoutineItem[];
73
+ wednesday?: RoutineItem[];
74
+ thursday?: RoutineItem[];
75
+ friday?: RoutineItem[];
76
+ saturday?: RoutineItem[];
77
+ sunday?: RoutineItem[];
78
+ }
79
+ export interface MonthlyRoutine {
80
+ start_of_month?: MonthlyRoutineItem[];
81
+ end_of_month?: MonthlyRoutineItem[];
82
+ }
83
+ export interface QuarterlyRoutine {
84
+ months: number[];
85
+ tasks: MonthlyRoutineItem[];
86
+ }
87
+ export interface YearlyRoutine {
88
+ month: number;
89
+ day: number;
90
+ project: string;
91
+ task: string;
92
+ }
93
+ export interface Routines {
94
+ weekly?: WeeklyRoutine;
95
+ monthly?: MonthlyRoutine;
96
+ quarterly?: QuarterlyRoutine[];
97
+ yearly?: YearlyRoutine[];
98
+ }
99
+ export interface TimelineConfig {
100
+ hourHeight: number;
101
+ maxHours: number;
102
+ defaultStartHour: number;
103
+ defaultEndHour: number;
104
+ snapMinutes: number;
105
+ }
106
+ export interface SlackConfig {
107
+ enabled: boolean;
108
+ }
109
+ export interface Config {
110
+ projects: Project[];
111
+ routines: Routines;
112
+ timeline?: TimelineConfig;
113
+ slack?: SlackConfig;
114
+ }
115
+ export interface DayStats {
116
+ date: string;
117
+ hasReport: boolean;
118
+ planHours?: number;
119
+ resultHours?: number;
120
+ todoCount?: number;
121
+ todoCompleted?: number;
122
+ }
123
+ export interface CalendarSummary {
124
+ totalPlanHours: number;
125
+ totalResultHours: number;
126
+ workDays: number;
127
+ todoCompleted: number;
128
+ projectHours?: Record<string, number>;
129
+ }
130
+ export interface CalendarData {
131
+ year: number;
132
+ month: number;
133
+ days: DayStats[];
134
+ summary?: CalendarSummary;
135
+ }
136
+ export interface GoogleCalendarEvent {
137
+ id: string;
138
+ summary: string;
139
+ description?: string;
140
+ start: string;
141
+ end: string;
142
+ meetingUrl?: string;
143
+ }
144
+ export interface ReportResponse {
145
+ date: string;
146
+ content: string;
147
+ stats: ReportStats;
148
+ }
149
+ export interface ReportSaveRequest {
150
+ content: string;
151
+ git?: {
152
+ commit?: boolean;
153
+ push?: boolean;
154
+ message?: string;
155
+ };
156
+ slack?: {
157
+ post?: boolean;
158
+ };
159
+ }
160
+ export interface ReportSaveResponse {
161
+ date: string;
162
+ saved: boolean;
163
+ stats: ReportStats;
164
+ git?: {
165
+ committed?: boolean;
166
+ pushed?: boolean;
167
+ commitHash?: string;
168
+ error?: string;
169
+ };
170
+ slack?: {
171
+ posted?: boolean;
172
+ error?: string;
173
+ };
174
+ }
175
+ export interface ApiError {
176
+ code: string;
177
+ message: string;
178
+ }
179
+ export interface GitStatus {
180
+ branch: string;
181
+ uncommittedChanges: number;
182
+ modifiedFiles?: string[];
183
+ lastCommit?: {
184
+ hash: string;
185
+ message: string;
186
+ date: string;
187
+ };
188
+ lastPush?: string;
189
+ }
190
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 日報管理ダッシュボード サーバー型定義
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * 設定ファイルバリデーター
3
+ *
4
+ * 設定ファイルの必須項目をチェックし、エラーを収集する
5
+ */
6
+ /**
7
+ * バリデーションエラー
8
+ */
9
+ export interface ConfigValidationError {
10
+ file: string;
11
+ path: string;
12
+ message: string;
13
+ severity: 'error' | 'warning';
14
+ }
15
+ /**
16
+ * バリデーション結果
17
+ */
18
+ export interface ConfigValidationResult {
19
+ valid: boolean;
20
+ errors: ConfigValidationError[];
21
+ warnings: ConfigValidationError[];
22
+ }
23
+ /**
24
+ * ルート設定ファイルをバリデート
25
+ */
26
+ export declare function validateRootConfig(config: unknown, filePath: string): ConfigValidationError[];
27
+ /**
28
+ * プロジェクト設定ファイルをバリデート
29
+ */
30
+ export declare function validateProjectsConfig(config: unknown, filePath: string): ConfigValidationError[];
31
+ /**
32
+ * ルーチン設定ファイルをバリデート
33
+ */
34
+ export declare function validateRoutinesConfig(config: unknown, filePath: string, projectCodes: Set<string>): ConfigValidationError[];
35
+ /**
36
+ * 設定ファイル全体をバリデート
37
+ */
38
+ export declare function validateConfigFiles(configPath: string): Promise<ConfigValidationResult>;
39
+ /**
40
+ * バリデーション結果をフォーマットして出力
41
+ */
42
+ export declare function formatValidationResults(result: ConfigValidationResult): string;
43
+ //# sourceMappingURL=configValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configValidator.d.ts","sourceRoot":"","sources":["../../src/utils/configValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AA2DD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAqE7F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAgFjG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,qBAAqB,EAAE,CAkIzB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAwH7F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAmC9E"}