mdjournal 1.0.15 → 1.1.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 (203) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +290 -164
  3. package/dist/README.md +335 -0
  4. package/dist/client/assets/index-CWshDATd.js +402 -0
  5. package/dist/client/dist/assets/index-CWshDATd.js +402 -0
  6. package/dist/client/dist/index.html +1 -1
  7. package/dist/client/index.html +1 -1
  8. package/dist/docs/api-reference.html +2295 -0
  9. package/dist/docs/config-spec.md +322 -0
  10. package/dist/docs/extension-spec.md +676 -0
  11. package/dist/docs/index.md +261 -0
  12. package/dist/docs/integration-spec.md +518 -0
  13. package/dist/docs/markdown-format-spec.md +779 -0
  14. package/dist/docs/openapi.yaml +1009 -0
  15. package/dist/docs/requirements.md +837 -0
  16. package/dist/docs/screenshot.png +0 -0
  17. package/dist/packages/contract/mdjournal/domains/CalendarApi.d.ts +19 -0
  18. package/dist/packages/contract/mdjournal/domains/CalendarApi.d.ts.map +1 -0
  19. package/dist/packages/contract/mdjournal/domains/CalendarApi.js +7 -0
  20. package/dist/packages/contract/mdjournal/domains/CalendarApi.js.map +1 -0
  21. package/dist/packages/contract/mdjournal/domains/ConfigApi.d.ts +29 -0
  22. package/dist/packages/contract/mdjournal/domains/ConfigApi.d.ts.map +1 -0
  23. package/dist/packages/contract/mdjournal/domains/ConfigApi.js +7 -0
  24. package/dist/packages/contract/mdjournal/domains/ConfigApi.js.map +1 -0
  25. package/dist/packages/contract/mdjournal/domains/GitApi.d.ts +14 -0
  26. package/dist/packages/contract/mdjournal/domains/GitApi.d.ts.map +1 -0
  27. package/dist/packages/contract/mdjournal/domains/GitApi.js +7 -0
  28. package/dist/packages/contract/mdjournal/domains/GitApi.js.map +1 -0
  29. package/dist/packages/contract/mdjournal/domains/ReportApi.d.ts +24 -0
  30. package/dist/packages/contract/mdjournal/domains/ReportApi.d.ts.map +1 -0
  31. package/dist/packages/contract/mdjournal/domains/ReportApi.js +7 -0
  32. package/dist/packages/contract/mdjournal/domains/ReportApi.js.map +1 -0
  33. package/dist/packages/contract/mdjournal/domains/index.d.ts +24 -0
  34. package/dist/packages/contract/mdjournal/domains/index.d.ts.map +1 -0
  35. package/dist/packages/contract/mdjournal/domains/index.js +7 -0
  36. package/dist/packages/contract/mdjournal/domains/index.js.map +1 -0
  37. package/dist/packages/contract/mdjournal/errors/index.d.ts +19 -0
  38. package/dist/packages/contract/mdjournal/errors/index.d.ts.map +1 -0
  39. package/dist/packages/contract/mdjournal/errors/index.js +29 -0
  40. package/dist/packages/contract/mdjournal/errors/index.js.map +1 -0
  41. package/dist/packages/contract/mdjournal/index.d.ts +8 -0
  42. package/dist/packages/contract/mdjournal/index.d.ts.map +1 -0
  43. package/dist/packages/contract/mdjournal/index.js +8 -0
  44. package/dist/packages/contract/mdjournal/index.js.map +1 -0
  45. package/dist/packages/contract/mdjournal/schemas/index.d.ts +7 -0
  46. package/dist/packages/contract/mdjournal/schemas/index.d.ts.map +1 -0
  47. package/dist/packages/contract/mdjournal/schemas/index.js +7 -0
  48. package/dist/packages/contract/mdjournal/schemas/index.js.map +1 -0
  49. package/dist/packages/contract/mdjournal/schemas/types.d.ts +357 -0
  50. package/dist/packages/contract/mdjournal/schemas/types.d.ts.map +1 -0
  51. package/dist/packages/contract/mdjournal/schemas/types.js +7 -0
  52. package/dist/packages/contract/mdjournal/schemas/types.js.map +1 -0
  53. package/dist/packages/contract/mdjournal/schemas/validators.d.ts +1576 -0
  54. package/dist/packages/contract/mdjournal/schemas/validators.d.ts.map +1 -0
  55. package/dist/packages/contract/mdjournal/schemas/validators.js +952 -0
  56. package/dist/packages/contract/mdjournal/schemas/validators.js.map +1 -0
  57. package/dist/server/src/cli.d.ts.map +1 -0
  58. package/dist/server/src/cli.js.map +1 -0
  59. package/dist/server/src/index.d.ts.map +1 -0
  60. package/dist/{index.js → server/src/index.js} +21 -11
  61. package/dist/server/src/index.js.map +1 -0
  62. package/dist/server/src/mdjournal/domains/CalendarDomain.d.ts +19 -0
  63. package/dist/server/src/mdjournal/domains/CalendarDomain.d.ts.map +1 -0
  64. package/dist/server/src/mdjournal/domains/CalendarDomain.js +88 -0
  65. package/dist/server/src/mdjournal/domains/CalendarDomain.js.map +1 -0
  66. package/dist/server/src/mdjournal/domains/CalendarDomain.test.d.ts +2 -0
  67. package/dist/server/src/mdjournal/domains/CalendarDomain.test.d.ts.map +1 -0
  68. package/dist/server/src/mdjournal/domains/CalendarDomain.test.js +111 -0
  69. package/dist/server/src/mdjournal/domains/CalendarDomain.test.js.map +1 -0
  70. package/dist/server/src/mdjournal/domains/ConfigDomain.d.ts +27 -0
  71. package/dist/server/src/mdjournal/domains/ConfigDomain.d.ts.map +1 -0
  72. package/dist/server/src/mdjournal/domains/ConfigDomain.js +59 -0
  73. package/dist/server/src/mdjournal/domains/ConfigDomain.js.map +1 -0
  74. package/dist/server/src/mdjournal/domains/ConfigDomain.test.d.ts +2 -0
  75. package/dist/server/src/mdjournal/domains/ConfigDomain.test.d.ts.map +1 -0
  76. package/dist/server/src/mdjournal/domains/ConfigDomain.test.js +177 -0
  77. package/dist/server/src/mdjournal/domains/ConfigDomain.test.js.map +1 -0
  78. package/dist/server/src/mdjournal/domains/GitDomain.d.ts +15 -0
  79. package/dist/server/src/mdjournal/domains/GitDomain.d.ts.map +1 -0
  80. package/dist/server/src/mdjournal/domains/GitDomain.js +16 -0
  81. package/dist/server/src/mdjournal/domains/GitDomain.js.map +1 -0
  82. package/dist/server/src/mdjournal/domains/GitDomain.test.d.ts +2 -0
  83. package/dist/server/src/mdjournal/domains/GitDomain.test.d.ts.map +1 -0
  84. package/dist/server/src/mdjournal/domains/GitDomain.test.js +112 -0
  85. package/dist/server/src/mdjournal/domains/GitDomain.test.js.map +1 -0
  86. package/dist/server/src/mdjournal/domains/ReportDomain.d.ts +23 -0
  87. package/dist/server/src/mdjournal/domains/ReportDomain.d.ts.map +1 -0
  88. package/dist/server/src/mdjournal/domains/ReportDomain.js +117 -0
  89. package/dist/server/src/mdjournal/domains/ReportDomain.js.map +1 -0
  90. package/dist/server/src/mdjournal/domains/ReportDomain.test.d.ts +2 -0
  91. package/dist/server/src/mdjournal/domains/ReportDomain.test.d.ts.map +1 -0
  92. package/dist/server/src/mdjournal/domains/ReportDomain.test.js +207 -0
  93. package/dist/server/src/mdjournal/domains/ReportDomain.test.js.map +1 -0
  94. package/dist/server/src/mdjournal/domains/errors.d.ts +17 -0
  95. package/dist/server/src/mdjournal/domains/errors.d.ts.map +1 -0
  96. package/dist/server/src/mdjournal/domains/errors.js +27 -0
  97. package/dist/server/src/mdjournal/domains/errors.js.map +1 -0
  98. package/dist/server/src/mdjournal/domains/index.d.ts +15 -0
  99. package/dist/server/src/mdjournal/domains/index.d.ts.map +1 -0
  100. package/dist/server/src/mdjournal/domains/index.js +11 -0
  101. package/dist/server/src/mdjournal/domains/index.js.map +1 -0
  102. package/dist/server/src/mdjournal/index.d.ts +17 -0
  103. package/dist/server/src/mdjournal/index.d.ts.map +1 -0
  104. package/dist/server/src/mdjournal/index.js +34 -0
  105. package/dist/server/src/mdjournal/index.js.map +1 -0
  106. package/dist/server/src/mdjournal/routes.generated.d.ts +28 -0
  107. package/dist/server/src/mdjournal/routes.generated.d.ts.map +1 -0
  108. package/dist/server/src/mdjournal/routes.generated.js +403 -0
  109. package/dist/server/src/mdjournal/routes.generated.js.map +1 -0
  110. package/dist/server/src/types/index.d.ts.map +1 -0
  111. package/dist/server/src/types/index.js.map +1 -0
  112. package/dist/server/src/utils/configValidator.d.ts.map +1 -0
  113. package/dist/server/src/utils/configValidator.js.map +1 -0
  114. package/dist/server/src/utils/configValidator.test.d.ts +2 -0
  115. package/dist/server/src/utils/configValidator.test.d.ts.map +1 -0
  116. package/dist/server/src/utils/configValidator.test.js +359 -0
  117. package/dist/server/src/utils/configValidator.test.js.map +1 -0
  118. package/dist/server/src/utils/fileManager.d.ts.map +1 -0
  119. package/dist/server/src/utils/fileManager.js.map +1 -0
  120. package/dist/server/src/utils/git.d.ts.map +1 -0
  121. package/dist/server/src/utils/git.js.map +1 -0
  122. package/dist/server/src/utils/index.d.ts.map +1 -0
  123. package/dist/server/src/utils/index.js.map +1 -0
  124. package/dist/server/src/utils/markdown.d.ts.map +1 -0
  125. package/dist/server/src/utils/markdown.js.map +1 -0
  126. package/dist/server/src/utils/markdown.test.d.ts +2 -0
  127. package/dist/server/src/utils/markdown.test.d.ts.map +1 -0
  128. package/dist/server/src/utils/markdown.test.js +291 -0
  129. package/dist/server/src/utils/markdown.test.js.map +1 -0
  130. package/dist/server/src/utils/slack.d.ts.map +1 -0
  131. package/dist/server/src/utils/slack.js.map +1 -0
  132. package/dist/server/src/utils/validator.d.ts.map +1 -0
  133. package/dist/server/src/utils/validator.js.map +1 -0
  134. package/dist/server/src/utils/validator.test.d.ts +2 -0
  135. package/dist/server/src/utils/validator.test.d.ts.map +1 -0
  136. package/dist/server/src/utils/validator.test.js +307 -0
  137. package/dist/server/src/utils/validator.test.js.map +1 -0
  138. package/package.json +37 -15
  139. package/dist/cli.d.ts.map +0 -1
  140. package/dist/cli.js.map +0 -1
  141. package/dist/client/assets/index-DlkkIyB6.js +0 -402
  142. package/dist/client/dist/assets/index-DlkkIyB6.js +0 -402
  143. package/dist/index.d.ts.map +0 -1
  144. package/dist/index.js.map +0 -1
  145. package/dist/routes/calendar.d.ts +0 -8
  146. package/dist/routes/calendar.d.ts.map +0 -1
  147. package/dist/routes/calendar.js +0 -115
  148. package/dist/routes/calendar.js.map +0 -1
  149. package/dist/routes/config.d.ts +0 -11
  150. package/dist/routes/config.d.ts.map +0 -1
  151. package/dist/routes/config.js +0 -120
  152. package/dist/routes/config.js.map +0 -1
  153. package/dist/routes/gcal.d.ts +0 -10
  154. package/dist/routes/gcal.d.ts.map +0 -1
  155. package/dist/routes/gcal.js +0 -100
  156. package/dist/routes/gcal.js.map +0 -1
  157. package/dist/routes/git.d.ts +0 -8
  158. package/dist/routes/git.d.ts.map +0 -1
  159. package/dist/routes/git.js +0 -28
  160. package/dist/routes/git.js.map +0 -1
  161. package/dist/routes/index.d.ts +0 -9
  162. package/dist/routes/index.d.ts.map +0 -1
  163. package/dist/routes/index.js +0 -9
  164. package/dist/routes/index.js.map +0 -1
  165. package/dist/routes/reports.d.ts +0 -10
  166. package/dist/routes/reports.d.ts.map +0 -1
  167. package/dist/routes/reports.js +0 -175
  168. package/dist/routes/reports.js.map +0 -1
  169. package/dist/types/index.d.ts.map +0 -1
  170. package/dist/types/index.js.map +0 -1
  171. package/dist/utils/configValidator.d.ts.map +0 -1
  172. package/dist/utils/configValidator.js.map +0 -1
  173. package/dist/utils/fileManager.d.ts.map +0 -1
  174. package/dist/utils/fileManager.js.map +0 -1
  175. package/dist/utils/git.d.ts.map +0 -1
  176. package/dist/utils/git.js.map +0 -1
  177. package/dist/utils/index.d.ts.map +0 -1
  178. package/dist/utils/index.js.map +0 -1
  179. package/dist/utils/markdown.d.ts.map +0 -1
  180. package/dist/utils/markdown.js.map +0 -1
  181. package/dist/utils/slack.d.ts.map +0 -1
  182. package/dist/utils/slack.js.map +0 -1
  183. package/dist/utils/validator.d.ts.map +0 -1
  184. package/dist/utils/validator.js.map +0 -1
  185. /package/dist/{cli.d.ts → server/src/cli.d.ts} +0 -0
  186. /package/dist/{cli.js → server/src/cli.js} +0 -0
  187. /package/dist/{index.d.ts → server/src/index.d.ts} +0 -0
  188. /package/dist/{types → server/src/types}/index.d.ts +0 -0
  189. /package/dist/{types → server/src/types}/index.js +0 -0
  190. /package/dist/{utils → server/src/utils}/configValidator.d.ts +0 -0
  191. /package/dist/{utils → server/src/utils}/configValidator.js +0 -0
  192. /package/dist/{utils → server/src/utils}/fileManager.d.ts +0 -0
  193. /package/dist/{utils → server/src/utils}/fileManager.js +0 -0
  194. /package/dist/{utils → server/src/utils}/git.d.ts +0 -0
  195. /package/dist/{utils → server/src/utils}/git.js +0 -0
  196. /package/dist/{utils → server/src/utils}/index.d.ts +0 -0
  197. /package/dist/{utils → server/src/utils}/index.js +0 -0
  198. /package/dist/{utils → server/src/utils}/markdown.d.ts +0 -0
  199. /package/dist/{utils → server/src/utils}/markdown.js +0 -0
  200. /package/dist/{utils → server/src/utils}/slack.d.ts +0 -0
  201. /package/dist/{utils → server/src/utils}/slack.js +0 -0
  202. /package/dist/{utils → server/src/utils}/validator.d.ts +0 -0
  203. /package/dist/{utils → server/src/utils}/validator.js +0 -0
package/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 foo-ogawa
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+
24
+
25
+
26
+
package/README.md CHANGED
@@ -1,209 +1,335 @@
1
- # mdJournal サーバー
1
+ # mdJournal
2
2
 
3
- Markdown形式の日報データを管理するREST APIサーバーです。
3
+ **Markdown日報を視覚的に管理するダッシュボードアプリケーション**
4
4
 
5
- ## 起動方法
5
+ [![npm version](https://img.shields.io/npm/v/mdjournal.svg)](https://www.npmjs.com/package/mdjournal)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
7
 
7
- ```bash
8
- # 依存関係のインストール
9
- npm install
10
-
11
- # 開発モードで起動(ホットリロード有効)
12
- npm run dev
8
+ <p align="center">
9
+ <img src="docs/screenshot.png" alt="mdJournal Screenshot" width="800">
10
+ </p>
13
11
 
14
- # ビルド
15
- npm run build
12
+ ## ✨ 特徴
16
13
 
17
- # 本番モードで起動
18
- npm start
19
- ```
14
+ - 📅 **カレンダービュー** - 月表示で稼働時間を可視化
15
+ - ⏱️ **タイムライン** - 計画と実績を並べて表示、ドラッグ&ドロップで編集
16
+ - ✅ **TODO管理** - プロジェクト別・ステータス別のタスク管理
17
+ - 📝 **Markdown編集** - 慣れ親しんだMarkdown形式でデータを管理
18
+ - 🔗 **外部連携** - Git commit/push、Slack投稿
20
19
 
21
- ## CLI コマンド
20
+ ---
22
21
 
23
- ### サーバー起動
22
+ ## 🚀 まずは試してみる
24
23
 
25
24
  ```bash
26
- # サンプルデータで起動
25
+ # サンプルデータで起動(インストール不要)
27
26
  npx mdjournal
28
27
 
29
- # 設定ファイルを指定して起動
30
- npx mdjournal ./mdjournal.config.yaml
31
- npx mdjournal -c ./mdjournal.config.yaml
32
-
33
- # ポートを指定して起動
34
- npx mdjournal -p 8080
28
+ # ブラウザが自動で開きます(http://localhost:3001)
35
29
  ```
36
30
 
37
- ### バリデーション(フォーマット検証)
31
+ これだけでサンプル日報を使ってダッシュボードを体験できます。
38
32
 
39
- 日報ファイルが仕様に準拠しているか検証します。
33
+ ---
34
+
35
+ ## 📦 セットアップ
36
+
37
+ 自分の日報を管理するためのセットアップ手順です。
38
+
39
+ ### 1. 日報用ディレクトリを作成
40
40
 
41
41
  ```bash
42
- # ディレクトリ内の全.mdファイルを検証
43
- npx mdjournal validate ./data
42
+ mkdir my-journal
43
+ cd my-journal
44
+ ```
44
45
 
45
- # 特定の年度のみ検証
46
- npx mdjournal validate ./data/2020
46
+ ### 2. 設定ファイルを作成
47
47
 
48
- # 厳格モード(警告もエラーとして扱う)
49
- npx mdjournal validate ./data --strict
48
+ ```yaml
49
+ # mdjournal.config.yaml
50
+ projects: ./config/projects.yaml
51
+ routines: ./config/routines.yaml
52
+ reports: ./data
50
53
 
51
- # 詳細出力(修正提案を含む)
52
- npx mdjournal validate ./data --verbose
54
+ timeline:
55
+ snapMinutes: 15 # ドラッグ時のスナップ単位(分)
56
+ defaultStartHour: 8 # 表示開始時刻
57
+ defaultEndHour: 20 # 表示終了時刻
53
58
 
54
- # JSON形式で出力(CI/CD連携用)
55
- npx mdjournal validate ./data --json
59
+ server:
60
+ port: 3001
61
+ ```
62
+
63
+ ### 3. プロジェクト定義を作成
64
+
65
+ ```yaml
66
+ # config/projects.yaml
67
+ projects:
68
+ - code: P01
69
+ name: 社内業務
70
+ color: "#52c41a"
56
71
 
57
- # 利用可能なルール一覧を表示
58
- npx mdjournal validate --rules
72
+ - code: P02
73
+ name: プロジェクトA
74
+ color: "#1890ff"
59
75
 
60
- # 特定のルールをスキップ
61
- npx mdjournal validate ./data --skip separator-line,location-subsection
76
+ - code: P03
77
+ name: プロジェクトB
78
+ color: "#722ed1"
62
79
  ```
63
80
 
64
- ### 統計情報(frontmatter)再集計
81
+ ### 4. ルーチン定義を作成(オプション)
82
+
83
+ 毎週決まった予定がある場合、ルーチンとして登録しておくと便利です。
84
+
85
+ ```yaml
86
+ # config/routines.yaml
87
+ routines:
88
+ weekly:
89
+ monday:
90
+ - time: "09:00"
91
+ project: P01
92
+ task: 週次定例会議
93
+ - time: "10:00"
94
+ project: P02
95
+ task: プロジェクトA 朝会
96
+
97
+ friday:
98
+ - time: "17:00"
99
+ project: P01
100
+ task: 週報作成
101
+ ```
102
+
103
+ ### 5. ディレクトリ構成
65
104
 
66
- 日報ファイルにfrontmatter(統計情報)を付与または再集計します。
105
+ 最終的にこのような構成になります:
106
+
107
+ ```
108
+ my-journal/
109
+ ├── mdjournal.config.yaml # メイン設定ファイル
110
+ ├── config/
111
+ │ ├── projects.yaml # プロジェクト定義
112
+ │ └── routines.yaml # ルーチン定義
113
+ └── data/ # 日報が保存される場所
114
+ └── 2025/
115
+ └── 01/
116
+ ├── 2025-01-06.md
117
+ └── 2025-01-07.md
118
+ ```
119
+
120
+ ### 6. 起動
67
121
 
68
122
  ```bash
69
- # ディレクトリ内の全.mdファイルにfrontmatterを付与・更新
70
- npx mdjournal stats ./data
123
+ npx mdjournal ./mdjournal.config.yaml
124
+ ```
71
125
 
72
- # 変更内容のプレビュー(実際には更新しない)
73
- npx mdjournal stats ./data --dry-run
74
-
75
- # 詳細出力
76
- npx mdjournal stats ./data --verbose
77
-
78
- # バリデーションを事前実行(エラーがあるファイルはスキップ)
79
- npx mdjournal stats ./data --validate
80
-
81
- # JSON形式で出力
82
- npx mdjournal stats ./data --json
83
- ```
84
-
85
- #### frontmatterフィールド
86
-
87
- | フィールド | 型 | 説明 |
88
- |-----------|-----|------|
89
- | `planHours` | number | 計画時間の合計(時間) |
90
- | `resultHours` | number | 実績時間の合計(時間) |
91
- | `todoCount` | integer | TODO総数 |
92
- | `todoCompleted` | integer | 完了TODO数 |
93
- | `todoInProgress` | integer | 進行中TODO数 |
94
- | `projectHours` | object | プロジェクト別実績時間(時間) |
95
- | `updatedAt` | string | 最終更新日時(ISO 8601形式) |
96
-
97
- #### バリデーションルール
98
-
99
- | ルールコード | 説明 |
100
- |------------|------|
101
- | `header-format` | 日報ヘッダーの形式チェック |
102
- | `separator-line` | セクション区切り線(=====)の検出 |
103
- | `location-subsection` | 場所サブセクション(### [home])の検出 |
104
- | `schedule-item-format` | PLAN/RESULT項目の形式チェック |
105
- | `time-format` | 時刻形式のチェック |
106
- | `todo-list-marker` | TODOリストマーカーの統一チェック |
107
- | `todo-inline-project` | TODO行内のプロジェクトコード検出 |
108
- | `todo-deadline-format` | 期限の括弧形式検出 |
109
- | `nested-todo` | ネストされたTODO検出 |
110
- | `required-sections` | 必須セクションの存在チェック |
111
-
112
- ## 環境変数
113
-
114
- | 変数名 | 説明 | デフォルト値 |
115
- |--------|------|-------------|
116
- | `PORT` | サーバーポート | `3001` |
117
- | `CONFIG_REPORTS` | 日報ディレクトリのパス | `./sample/reports` |
118
- | `CONFIG_PROJECTS` | プロジェクト設定ファイルのパス | `./sample/config/projects.yaml` |
119
- | `CONFIG_ROUTINES` | ルーチン設定ファイルのパス | `./sample/config/routines.yaml` |
120
- | `CORS_ORIGIN` | CORSで許可するオリジン | `http://localhost:5173` |
121
- | `GOOGLE_CLIENT_ID` | Google OAuth Client ID | - |
122
- | `GOOGLE_CLIENT_SECRET` | Google OAuth Client Secret | - |
123
-
124
- ## API エンドポイント
125
-
126
- | メソッド | エンドポイント | 説明 |
127
- |---------|---------------|------|
128
- | GET | `/api/reports/:date` | 日報取得 |
129
- | PUT | `/api/reports/:date` | 日報保存 |
130
- | DELETE | `/api/reports/:date` | 日報削除 |
131
- | GET | `/api/calendar` | カレンダー用集計データ取得 |
132
- | GET | `/api/calendar/months` | 日報が存在する年月リスト取得 |
133
- | GET | `/api/config` | 設定取得 |
134
- | PUT | `/api/config` | 設定更新 |
135
- | GET | `/api/gcal/events` | Googleカレンダー予定取得 |
136
- | GET | `/api/health` | ヘルスチェック |
137
-
138
- ## ディレクトリ構造
139
-
140
- ```
141
- server/
142
- ├── src/
143
- │ ├── index.ts # エントリーポイント
144
- │ ├── cli.ts # CLIエントリーポイント
145
- │ ├── routes/ # APIルーター
146
- │ │ ├── reports.ts # 日報API
147
- │ │ ├── calendar.ts # カレンダーAPI
148
- │ │ ├── config.ts # 設定API
149
- │ │ └── gcal.ts # Googleカレンダー連携API
150
- │ ├── types/ # 型定義
151
- │ │ └── index.ts
152
- │ └── utils/ # ユーティリティ
153
- │ ├── markdown.ts # Markdownパーサー
154
- │ ├── fileManager.ts # ファイル管理
155
- │ ├── validator.ts # フォーマットバリデーター
156
- │ └── git.ts # Git連携
157
- ├── package.json
158
- ├── tsconfig.json
159
- └── README.md
160
- ```
161
-
162
- ## 日報ファイル形式
163
-
164
- 日報ファイルはYAML frontmatter + Markdown形式で保存されます。
165
- 詳細は [markdown-format-spec.md](../docs/markdown-format-spec.md) を参照してください。
126
+ 日報ファイルはダッシュボードから自動的に作成されます。
166
127
 
167
- ```markdown
168
- ---
169
- planHours: 8.0
170
- resultHours: 7.5
171
- todoCount: 5
172
- todoCompleted: 2
173
- todoInProgress: 1
174
- projectHours:
175
- P99: 2.5
176
- P34: 3.0
177
- updatedAt: 2025-12-18T17:30:00+09:00
178
128
  ---
179
- # [日報] サンプル太郎 2025-12-18
129
+
130
+ ## 📝 日報の書き方
131
+
132
+ 日報は以下のようなMarkdown形式です。ダッシュボードで編集できますが、テキストエディタで直接編集することもできます。
133
+
134
+ ```markdown
135
+ # [日報] 山田太郎 2025-01-06
180
136
 
181
137
  ## [PLAN]
182
- * 08:30 [P99] タスク確認
183
- * 09:00
138
+
139
+ * 08:30 [P01] タスク確認・朝会
140
+ * 09:00 [P02] プロジェクトA 開発
141
+ * 12:00
142
+ * 13:00 [P03] プロジェクトB MTG
143
+ * 15:00 [P02] プロジェクトA 開発
144
+ * 18:00
184
145
 
185
146
  ## [RESULT]
186
- * 08:30 [P99] タスク確認
187
- * 09:00
147
+
148
+ * 08:30 [P01] タスク確認・朝会
149
+ * 09:00 [P02] プロジェクトA 開発
150
+ * 12:00
151
+ * 13:00 [P03] プロジェクトB MTG(延長)
152
+ * 16:00 [P02] プロジェクトA 開発
153
+ * 19:00
188
154
 
189
155
  ## [TODO]
190
156
 
191
- ### P99
192
- - [ ] @2025-12-20 !!! 重要タスク
193
- - [*] !! 進行中タスク
194
- - [x] 完了タスク
195
- - [-] 保留タスク
157
+ - [ ] [P01] !!! 重要なタスク @2025-01-10
158
+ - [*] [P01] !! 進行中のタスク
159
+ - [x] [P02] 完了したタスク
160
+ - [-] [P02] 保留中のタスク
196
161
 
197
162
  ## [NOTE]
198
- 自由記述メモ
163
+
164
+ 本日のメモや振り返りをここに記載。
165
+ ```
166
+
167
+ ### タイムライン記法
168
+
169
+ ```
170
+ * HH:MM [プロジェクトコード] タスク内容
171
+ * HH:MM ← 終了時刻のみ(空き時間の終わり)
172
+ ```
173
+
174
+ - `[PLAN]` セクション: 予定
175
+ - `[RESULT]` セクション: 実績
176
+
177
+ ### TODOの書き方
178
+
179
+ ```markdown
180
+ - [{status}] [{project}] {priority}{task} @{deadline}
181
+ ```
182
+
183
+ #### ステータス
184
+
185
+ | マーク | 意味 |
186
+ |--------|------|
187
+ | `[ ]` | 未着手 |
188
+ | `[*]` | 進行中 |
189
+ | `[x]` | 完了 |
190
+ | `[-]` | 保留 |
191
+
192
+ #### 優先度と期日
193
+
194
+ ```markdown
195
+ - [ ] [P01] !!! 優先度:高
196
+ - [ ] [P01] !! 優先度:中
197
+ - [ ] [P01] ! 優先度:低
198
+ - [ ] [P01] タスク @2025-01-10 ← 期日付き
199
+ - [ ] [P01] !!! 緊急タスク @2025-01-10 ← 期日+優先度
199
200
  ```
200
201
 
201
- ## 開発
202
+ ---
203
+
204
+ ## 🔗 外部連携
205
+
206
+ ### Git連携
207
+
208
+ 日報ディレクトリがGitリポジトリの場合、ダッシュボードの保存ボタンから直接commit/pushできます。
202
209
 
203
210
  ```bash
204
- # TypeScriptの型チェック
205
- npx tsc --noEmit
211
+ # 日報ディレクトリをGitリポジトリ化
212
+ cd my-journal
213
+ git init
214
+ git remote add origin <your-repo-url>
215
+ ```
216
+
217
+ ### Slack連携
206
218
 
207
- # ESLint
208
- npm run lint
219
+ 日報をSlackチャンネルに投稿できます。
220
+
221
+ ```yaml
222
+ # mdjournal.config.yaml に追加
223
+ slack:
224
+ enabled: true
225
+ webhookUrl: ${SLACK_WEBHOOK_URL} # 環境変数から取得
226
+ channel: "#daily_report"
209
227
  ```
228
+
229
+ 環境変数の設定:
230
+
231
+ ```bash
232
+ export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..."
233
+ ```
234
+
235
+ ### 保存ダイアログ
236
+
237
+ 保存ボタンから開くダイアログで、保存範囲を選択できます:
238
+
239
+ 1. **保存のみ** - ローカルファイルに保存
240
+ 2. **Commitまで** - 保存 + Git commit
241
+ 3. **Pushまで** - 保存 + commit + push
242
+ 4. **Slack投稿** - 上記 + Slackに投稿(Slack連携が有効な場合)
243
+
244
+ ---
245
+
246
+ ## 🛠️ CLIコマンド
247
+
248
+ ```bash
249
+ # サーバー起動
250
+ npx mdjournal [config.yaml]
251
+
252
+ # 日報ファイルのバリデーション
253
+ npx mdjournal validate ./data
254
+ npx mdjournal validate ./data --verbose # 詳細表示
255
+ npx mdjournal validate ./data --strict # 厳格モード
256
+
257
+ # 統計情報の再集計(frontmatter更新)
258
+ npx mdjournal stats ./data
259
+ npx mdjournal stats ./data --dry-run # プレビューのみ
260
+
261
+ # 設定ファイルの検証
262
+ npx mdjournal config ./mdjournal.config.yaml
263
+ ```
264
+
265
+ ---
266
+
267
+ ## ⚙️ 設定リファレンス
268
+
269
+ ### タイムライン設定
270
+
271
+ ```yaml
272
+ timeline:
273
+ hourHeight: 60 # 1時間あたりの高さ(px)
274
+ maxHours: 36 # 最大表示時間
275
+ defaultStartHour: 8 # デフォルト開始時刻
276
+ defaultEndHour: 20 # デフォルト終了時刻
277
+ snapMinutes: 15 # スナップ単位(分)
278
+ ```
279
+
280
+ ### プロジェクト定義
281
+
282
+ ```yaml
283
+ # config/projects.yaml
284
+ projects:
285
+ - code: P01 # タイムラインで使用するコード
286
+ name: 社内業務 # 表示名
287
+ fullName: 社内管理・雑務 # フルネーム(オプション)
288
+ color: "#52c41a" # 表示色
289
+ category: internal # カテゴリID(オプション)
290
+ active: true # アクティブフラグ(デフォルト: true)
291
+
292
+ categories: # カテゴリ定義(オプション)
293
+ - id: internal
294
+ name: 社内業務
295
+ color: "#52c41a"
296
+ ```
297
+
298
+ ### ルーチン定義
299
+
300
+ ```yaml
301
+ # config/routines.yaml
302
+ routines:
303
+ # 週次ルーチン
304
+ weekly:
305
+ monday:
306
+ - time: "09:00"
307
+ project: P01
308
+ task: 週次定例
309
+
310
+ # 月次ルーチン
311
+ monthly:
312
+ start_of_month: # 月初
313
+ - project: P01
314
+ task: 経費精算
315
+ end_of_month: # 月末
316
+ - project: P01
317
+ task: 月次レポート
318
+
319
+ # 四半期ルーチン
320
+ quarterly:
321
+ - months: [3, 6, 9, 12]
322
+ tasks:
323
+ - project: P01
324
+ task: 四半期レビュー
325
+ ```
326
+
327
+ ---
328
+
329
+ ## 📄 ライセンス
330
+
331
+ MIT License
332
+
333
+ ---
334
+
335
+ **mdJournal** - Markdownで日報をもっと便利に