@vtecx/vtecxdocument 1.0.5 → 1.0.7

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 (2) hide show
  1. package/docs/batchjob.md +86 -8
  2. package/package.json +1 -1
package/docs/batchjob.md CHANGED
@@ -60,9 +60,44 @@ src/batchjob/{モジュール名}.ts
60
60
 
61
61
  スケジュール設定で指定するモジュール名は、通常、パスと拡張子を除いた `daily-report` です。
62
62
 
63
+ ### `/_html/batchjob` の事前登録
64
+
65
+ 初回アップロードの前に、登録先である `/_html/batchjob` フォルダーが vte.cx サービス上に存在している必要があります。フォルダーがない状態で Rspack のアップロードを実行するとエラーになります。
66
+
67
+ プロジェクトの `setup/_settings/htmlfolders.xml` に `/_html/batchjob` を定義します。
68
+
69
+ ```xml
70
+ <feed>
71
+ <entry>
72
+ <contributor>
73
+ <uri>urn:vte.cx:acl:/_group/$admin,CRUD</uri>
74
+ </contributor>
75
+ <link rel="self" href="/_html/batchjob" />
76
+ </entry>
77
+ </feed>
78
+ ```
79
+
80
+ 実際のファイルでは、プロジェクトの権限設計に応じた `contributor` を設定してください。既存の `/_settings` や `/_html` の定義がある場合は削除せず、`/_html/batchjob` の Entry を追加します。
81
+
82
+ 対象サービスへログインした後、次のコマンドでフォルダー定義をアップロードします。
83
+
84
+ ```bash
85
+ pnpm upload:htmlfolders
86
+ ```
87
+
88
+ これは通常、サービスごとの初回セットアップ時、または `htmlfolders.xml` を変更したときに実行します。すでに `/_html/batchjob` が登録済みであれば、batchjob モジュールを更新するたびに実行する必要はありません。
89
+
63
90
  ## ビルドとアップロード
64
91
 
65
- 対象の vte.cx サービスへログインした状態で、次のコマンドを実行します。
92
+ 対象の vte.cx サービスへログインし、初回は `/_html/batchjob` を登録してから、Rspack コマンドを実行します。
93
+
94
+ ```bash
95
+ pnpm run login
96
+ pnpm upload:htmlfolders
97
+ pnpm exec rspack --env entry=/batchjob/{モジュール名}.ts
98
+ ```
99
+
100
+ `/_html/batchjob` が登録済みの場合、モジュール更新時は次のコマンドだけで構いません。
66
101
 
67
102
  ```bash
68
103
  pnpm exec rspack --env entry=/batchjob/{モジュール名}.ts
@@ -140,6 +175,29 @@ exports.run = async function (vtecxnext: VtecxNext) {
140
175
 
141
176
  利用できるメソッドと引数は、プロジェクトで使用している `@vtecx/vtecxnext` のバージョンに従ってください。
142
177
 
178
+ ## 禁止されている構文
179
+
180
+ batchjobでは以下が禁止されています。
181
+ TypeScript AST で判定しています。
182
+
183
+ - import
184
+ - export
185
+ - class
186
+ - super
187
+ - eval
188
+ - Function
189
+ - AsyncFunction
190
+ - GeneratorFunction
191
+ - require
192
+ - process
193
+ - globalThis
194
+ - global
195
+ - XMLHttpRequest
196
+ - WebSocket
197
+ - Worker
198
+ - WebAssembly
199
+ - Proxy
200
+
143
201
  ### vte.cx データ操作の注意点
144
202
 
145
203
  - フィールド検索を行う URL には `f` パラメータを付ける。
@@ -293,12 +351,14 @@ exports.run = async function (vtecxnext: VtecxNext) {
293
351
  1. `src/batchjob/{モジュール名}.ts` を実装する。
294
352
  2. 型チェック、Lint、単体テストを実行する。
295
353
  3. 対象環境とログイン先を確認する。
296
- 4. Rspack コマンドで JavaScript をビルドし、アップロードする。
297
- 5. `/_html/batchjob/{モジュール名}.js` が登録されたことを確認する。
298
- 6. 必要なサービスプロパティを設定する。
299
- 7. `/_settings/properties` Entry の `rights` に `_batchjob.*` のスケジュールを登録する。
300
- 8. 少量のデータまたは副作用を抑えた設定で動作確認する。
301
- 9. 実行ログ、Entry の状態遷移、外部処理の結果を確認する。
354
+ 4. 初回は `setup/_settings/htmlfolders.xml` に `/_html/batchjob` が定義されていることを確認する。
355
+ 5. 初回は `pnpm upload:htmlfolders` で登録先フォルダーをアップロードする。
356
+ 6. Rspack コマンドで JavaScript をビルドし、アップロードする。
357
+ 7. `/_html/batchjob/{モジュール名}.js` が登録されたことを確認する。
358
+ 8. 必要なサービスプロパティを設定する。
359
+ 9. `/_settings/properties` Entry の `rights` に `_batchjob.*` のスケジュールを登録する。
360
+ 10. 少量のデータまたは副作用を抑えた設定で動作確認する。
361
+ 11. 実行ログ、Entry の状態遷移、外部処理の結果を確認する。
302
362
 
303
363
  ## AI コーディングエージェント向けチェックリスト
304
364
 
@@ -306,6 +366,8 @@ exports.run = async function (vtecxnext: VtecxNext) {
306
366
 
307
367
  - [ ] `exports.run = async function (vtecxnext)` の形式になっている。
308
368
  - [ ] 引数の `vtecxnext` を使用し、認証情報を埋め込んでいない。
369
+ - [ ] `setup/_settings/htmlfolders.xml` に `/_html/batchjob` が定義されている。
370
+ - [ ] 初回アップロード前に `pnpm upload:htmlfolders` を実行している。
309
371
  - [ ] ソースと登録先が `batchjob/{モジュール名}` で対応している。
310
372
  - [ ] スケジュール右端のモジュール名が登録ファイルと一致している。
311
373
  - [ ] 検索 URL に必要な `f` と件数上限がある。
@@ -320,6 +382,23 @@ exports.run = async function (vtecxnext: VtecxNext) {
320
382
 
321
383
  ## よくある問題
322
384
 
385
+ ### アップロード時に `/_html/batchjob` が存在しないエラーになる
386
+
387
+ Rspack のアップロード先フォルダーがサービス上に未登録です。
388
+
389
+ 1. `setup/_settings/htmlfolders.xml` に `/_html/batchjob` の Entry を追加する。
390
+ 2. 対象サービスへログインする。
391
+ 3. `pnpm upload:htmlfolders` を実行する。
392
+ 4. Rspack のアップロードコマンドを再実行する。
393
+
394
+ ```bash
395
+ pnpm run login
396
+ pnpm upload:htmlfolders
397
+ pnpm exec rspack --env entry=/batchjob/{モジュール名}.ts
398
+ ```
399
+
400
+ `/_html` だけが存在していても、子フォルダーの `/_html/batchjob` が未登録であればアップロードできません。
401
+
323
402
  ### ジョブが起動しない
324
403
 
325
404
  - JavaScript が `/_html/batchjob` 配下へ登録されているか確認する。
@@ -336,7 +415,6 @@ exports.run = async function (vtecxnext: VtecxNext) {
336
415
 
337
416
  ### 同じ処理が複数回実行される
338
417
 
339
- - Entry の状態を処理開始前に `processing` へ更新する。
340
418
  - revision 競合を検出し、競合した側で処理を続行しない。
341
419
  - 外部処理に冪等キーまたは処理済み判定を追加する。
342
420
  - 実行間隔より処理時間が長くなっていないか確認する。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vtecx/vtecxdocument",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "vte.cx BaaS framework and API documentation",
5
5
  "main": "",
6
6
  "files": [