@zentodo/cli 0.1.12 → 0.1.14

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/dist/bin.cjs CHANGED
@@ -3252,12 +3252,19 @@ var fasttimeCapabilities = [
3252
3252
  domain: "fasttime",
3253
3253
  action: "sync-push",
3254
3254
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u5FEB\u901F\u65F6\u95F4\u8BB0\u5F55\u3002",
3255
- description: "\u8C03\u7528 /fastTimeRecordController/putSyncFastTimeRecord\u3002",
3256
- http: { method: "POST", path: "/fastTimeRecordController/putSyncFastTimeRecord", pragmas: ["stripAutoKeys"] },
3255
+ description: "\u8C03\u7528 /fastTimeRecordController/putSyncFastTimeRecord(\u540E\u7AEF @RequestBody FastTimeRecord)\u3002JSON \u4F53\u3002FastTimeRecord \u5B9E\u4F53\u4EE5 ftKey \u4E3A\u4E3B\u952E,\u5B57\u6BB5\u4E3A qtEvent/qtDescription/qtTimeValue/qtTimePriority\u3002",
3256
+ http: { method: "POST", path: "/fastTimeRecordController/putSyncFastTimeRecord", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
3257
3257
  params: [
3258
- { name: "record_key", backendName: "recordKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684\u8BB0\u5F55 key\u3002" },
3259
- { name: "title", backendName: "title", type: "string", description: "\u6807\u9898\u3002" },
3260
- { name: "duration_sec", backendName: "duration", type: "integer", description: "\u65F6\u957F(\u79D2)\u3002" },
3258
+ { name: "record_key", backendName: "ftKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 ftKey(\u6620\u5C04\u5230 FastTimeRecord.ftKey)\u3002" },
3259
+ { name: "title", backendName: "qtEvent", type: "string", description: "\u4E8B\u4EF6\u540D\u79F0(\u6620\u5C04\u5230 FastTimeRecord.qtEvent)\u3002" },
3260
+ { name: "description", backendName: "qtDescription", type: "string", description: "\u63CF\u8FF0(\u6620\u5C04\u5230 FastTimeRecord.qtDescription)\u3002" },
3261
+ { name: "duration_sec", backendName: "qtTimeValue", type: "string", description: "\u65F6\u957F\u5B57\u7B26\u4E32(\u6620\u5C04\u5230 FastTimeRecord.qtTimeValue)\u3002" },
3262
+ { name: "time_priority", backendName: "qtTimePriority", type: "integer", description: "\u65F6\u95F4\u4F18\u5148\u7EA7(\u6620\u5C04\u5230 FastTimeRecord.qtTimePriority)\u3002" },
3263
+ { name: "top_label", backendName: "topLabel", type: "integer", description: "\u9876\u7EA7\u6807\u7B7E key(\u6620\u5C04\u5230 FastTimeRecord.topLabel)\u3002" },
3264
+ { name: "second_label", backendName: "secondLabel", type: "integer", description: "\u4E8C\u7EA7\u6807\u7B7E key(\u6620\u5C04\u5230 FastTimeRecord.secondLabel)\u3002" },
3265
+ { name: "project_key", backendName: "projectKey", type: "integer", description: "\u5173\u8054\u9879\u76EE projectKey\u3002" },
3266
+ { name: "scene_key", backendName: "sceneKey", type: "integer", description: "\u5173\u8054\u573A\u666F sceneKey\u3002" },
3267
+ { name: "delete_able", backendName: "deleteAble", type: "boolean", description: "\u662F\u5426\u53EF\u5220\u9664(\u6620\u5C04\u5230 FastTimeRecord.deleteAble)\u3002" },
3261
3268
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
3262
3269
  ],
3263
3270
  output: { shape: "scalar" },
@@ -3302,7 +3309,7 @@ var wheelCapabilities = [
3302
3309
  domain: "wheel",
3303
3310
  action: "sync-push",
3304
3311
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u6EDA\u8F6E\u89C6\u56FE\u914D\u7F6E\u3002",
3305
- description: "\u8C03\u7528 /wheelViewController/putSyncWheelView\u3002",
3312
+ description: "\u8C03\u7528 /wheelViewController/putSyncWheelView\u3002\u6CE8\u610F:\u540E\u7AEF\u6682\u672A\u63D0\u4F9B WheelView \u5B9E\u4F53/\u63A7\u5236\u5668,\u6B64 capability \u4E3A\u5360\u4F4D\u3002",
3306
3313
  http: { method: "POST", path: "/wheelViewController/putSyncWheelView", pragmas: ["stripAutoKeys"] },
3307
3314
  params: [
3308
3315
  { name: "wheel_key", backendName: "wheelKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 key\u3002" },
@@ -3594,10 +3601,16 @@ var attachCapabilities = [
3594
3601
  domain: "attach",
3595
3602
  action: "sync-push",
3596
3603
  summary: "\u63A8\u9001\u9644\u4EF6\u5143\u6570\u636E\u8BB0\u5F55\u3002",
3597
- description: "\u8C03\u7528 /attachmentController/putSyncAttchment\u3002",
3598
- http: { method: "POST", path: "/attachmentController/putSyncAttchment", pragmas: ["stripAutoKeys"] },
3604
+ description: "\u8C03\u7528 /attachmentController/putSyncAttchment(\u540E\u7AEF @RequestBody Attachment)\u3002JSON \u4F53,\u4EC5\u5143\u6570\u636E,\u4E0D\u5305\u542B\u6587\u4EF6\u4E8C\u8FDB\u5236\u3002Attachment \u5B9E\u4F53\u4EE5 athKey \u4E3A\u4E3B\u952E,\u901A\u8FC7 matchKey \u5173\u8054\u4EFB\u52A1/\u5BFC\u56FE\u8282\u70B9\u3002",
3605
+ http: { method: "POST", path: "/attachmentController/putSyncAttchment", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
3599
3606
  params: [
3600
- { name: "attachment_key", backendName: "attachmentKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 attachmentKey\u3002" },
3607
+ { name: "attachment_key", backendName: "athKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 athKey(\u6620\u5C04\u5230 Attachment.athKey)\u3002" },
3608
+ { name: "match_key", backendName: "matchKey", type: "integer", description: "\u5173\u8054\u5BF9\u8C61 key(\u6620\u5C04\u5230 Attachment.matchKey)\u3002" },
3609
+ { name: "file_url", backendName: "fileUrl", type: "string", description: "\u5BA2\u6237\u7AEF\u672C\u5730\u6587\u4EF6 URL(\u6620\u5C04\u5230 Attachment.fileUrl)\u3002" },
3610
+ { name: "service_file_url", backendName: "serviceFileUrl", type: "string", description: "\u670D\u52A1\u7AEF\u6587\u4EF6 URL(\u6620\u5C04\u5230 Attachment.serviceFileUrl)\u3002" },
3611
+ { name: "file_type", backendName: "fileType", type: "string", description: "\u6587\u4EF6\u7C7B\u578B(\u6620\u5C04\u5230 Attachment.fileType)\u3002" },
3612
+ { name: "file_desc", backendName: "fileDesc", type: "string", description: "\u6587\u4EF6\u63CF\u8FF0(\u6620\u5C04\u5230 Attachment.fileDesc)\u3002" },
3613
+ { name: "remark", backendName: "remark", type: "string", description: "\u5907\u6CE8(\u6620\u5C04\u5230 Attachment.remark)\u3002" },
3601
3614
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
3602
3615
  ],
3603
3616
  output: { shape: "scalar" },
@@ -3866,12 +3879,16 @@ var labelCapabilities = [
3866
3879
  domain: "label",
3867
3880
  action: "sync-push",
3868
3881
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u6807\u7B7E\u3002",
3869
- description: "\u8C03\u7528 /labelController/putSyncLabel\u3002",
3870
- http: { method: "POST", path: "/labelController/putSyncLabel", pragmas: ["stripAutoKeys"] },
3882
+ description: "\u8C03\u7528 /labelController/putSyncLabel(\u540E\u7AEF @RequestBody Label)\u3002JSON \u4F53\u3002Label \u5B9E\u4F53\u989C\u8272\u5B57\u6BB5\u662F iconColor,\u4E0D\u662F labelColor;\u53E6\u6709 labelDesc/labelBKUrl/iconIndex/labelType\u3002",
3883
+ http: { method: "POST", path: "/labelController/putSyncLabel", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
3871
3884
  params: [
3872
3885
  { name: "label_key", backendName: "labelKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684\u6807\u7B7E key\u3002" },
3873
- { name: "name", backendName: "labelName", type: "string", description: "\u6807\u7B7E\u540D\u3002" },
3874
- { name: "color", backendName: "labelColor", type: "string", description: "\u5341\u516D\u8FDB\u5236\u989C\u8272\u3002" },
3886
+ { name: "name", backendName: "labelName", type: "string", description: "\u6807\u7B7E\u540D(\u6620\u5C04\u5230 Label.labelName)\u3002" },
3887
+ { name: "desc", backendName: "labelDesc", type: "string", description: "\u6807\u7B7E\u63CF\u8FF0(\u6620\u5C04\u5230 Label.labelDesc)\u3002" },
3888
+ { name: "color", backendName: "iconColor", type: "string", description: "\u56FE\u6807/\u6807\u7B7E\u989C\u8272\u5341\u516D\u8FDB\u5236(\u6620\u5C04\u5230 Label.iconColor)\u3002" },
3889
+ { name: "icon_index", backendName: "iconIndex", type: "integer", description: "\u56FE\u6807\u7D22\u5F15(\u6620\u5C04\u5230 Label.iconIndex)\u3002" },
3890
+ { name: "label_type", backendName: "labelType", type: "integer", description: "\u6807\u7B7E\u7C7B\u578B:0 \u5B50\u4EFB\u52A1 / 1 \u4EFB\u52A1 / 2 \u9879\u76EE / 3 \u76EE\u6807(\u6620\u5C04\u5230 Label.labelType)\u3002" },
3891
+ { name: "bk_url", backendName: "labelBKUrl", type: "string", description: "\u80CC\u666F\u56FE URL(\u6620\u5C04\u5230 Label.labelBKUrl)\u3002" },
3875
3892
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
3876
3893
  ],
3877
3894
  output: { shape: "scalar" },
@@ -3915,7 +3932,7 @@ var topLabelCapabilities = [
3915
3932
  domain: "toplabel",
3916
3933
  action: "sync-push",
3917
3934
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u9876\u7EA7\u6807\u7B7E\u3002",
3918
- description: "\u8C03\u7528 /topLabelController/putSyncTopLabel\u3002",
3935
+ description: "\u8C03\u7528 /topLabelController/putSyncTopLabel\u3002\u6CE8\u610F:\u540E\u7AEF\u6682\u672A\u63D0\u4F9B TopLabel \u5B9E\u4F53/\u63A7\u5236\u5668,\u6B64 capability \u4E3A\u5360\u4F4D\u3002",
3919
3936
  http: { method: "POST", path: "/topLabelController/putSyncTopLabel", pragmas: ["stripAutoKeys"] },
3920
3937
  params: [
3921
3938
  { name: "top_label_key", backendName: "topLabelKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684\u9876\u7EA7\u6807\u7B7E key\u3002" },
@@ -3967,12 +3984,20 @@ var mindmapCapabilities = [
3967
3984
  domain: "mindmap",
3968
3985
  action: "sync-push",
3969
3986
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u601D\u7EF4\u5BFC\u56FE\u8282\u70B9\u5143\u6570\u636E\u3002",
3970
- description: "\u8C03\u7528 /gdMetaController/putSyncGDMeta\u3002",
3971
- http: { method: "POST", path: "/gdMetaController/putSyncGDMeta", pragmas: ["stripAutoKeys"] },
3987
+ description: "\u8C03\u7528 /gdMetaController/putSyncGDMeta(\u540E\u7AEF @RequestBody GDMeta)\u3002JSON \u4F53\u3002GDMeta \u5B9E\u4F53\u4EE5 meKey \u4E3A\u4E3B\u952E,\u5B57\u6BB5\u4E3A title/metaDesc/content/iconUrl/bkUrl/templeteName/matchKey \u7B49\u3002",
3988
+ http: { method: "POST", path: "/gdMetaController/putSyncGDMeta", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
3972
3989
  params: [
3973
- { name: "gd_meta_key", backendName: "gdMetaKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 gdMetaKey\u3002" },
3974
- { name: "parent_key", backendName: "parentKey", type: "integer", description: "\u7236\u8282\u70B9 key\u3002" },
3975
- { name: "content", backendName: "content", type: "string", description: "\u8282\u70B9\u5185\u5BB9\u3002" },
3990
+ { name: "gd_meta_key", backendName: "meKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 meKey(\u6620\u5C04\u5230 GDMeta.meKey)\u3002" },
3991
+ { name: "parent_key", backendName: "matchKey", type: "integer", description: "\u7236/\u5173\u8054\u8282\u70B9 key(\u6620\u5C04\u5230 GDMeta.matchKey)\u3002" },
3992
+ { name: "title", backendName: "title", type: "string", description: "\u8282\u70B9\u6807\u9898(\u6620\u5C04\u5230 GDMeta.title)\u3002" },
3993
+ { name: "content", backendName: "content", type: "string", description: "\u8282\u70B9\u5185\u5BB9(\u6620\u5C04\u5230 GDMeta.content)\u3002" },
3994
+ { name: "desc", backendName: "metaDesc", type: "string", description: "\u8282\u70B9\u63CF\u8FF0(\u6620\u5C04\u5230 GDMeta.metaDesc)\u3002" },
3995
+ { name: "icon_url", backendName: "iconUrl", type: "string", description: "\u56FE\u6807 URL(\u6620\u5C04\u5230 GDMeta.iconUrl)\u3002" },
3996
+ { name: "bk_url", backendName: "bkUrl", type: "string", description: "\u80CC\u666F\u56FE(\u6620\u5C04\u5230 GDMeta.bkUrl)\u3002" },
3997
+ { name: "templete_name", backendName: "templeteName", type: "string", description: "\u6A21\u677F\u540D\u79F0(\u6620\u5C04\u5230 GDMeta.templeteName)\u3002" },
3998
+ { name: "is_templete", backendName: "isTemplete", type: "integer", description: "\u662F\u5426\u6A21\u677F(\u6620\u5C04\u5230 GDMeta.isTemplete)\u3002" },
3999
+ { name: "templete_key", backendName: "templeteKey", type: "integer", description: "\u6A21\u677F key(\u6620\u5C04\u5230 GDMeta.templeteKey)\u3002" },
4000
+ { name: "state", backendName: "state", type: "integer", description: "\u72B6\u6001(\u6620\u5C04\u5230 GDMeta.state)\u3002" },
3976
4001
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
3977
4002
  ],
3978
4003
  output: { shape: "scalar" },
@@ -4100,11 +4125,14 @@ var pomoCapabilities = [
4100
4125
  domain: "pomo",
4101
4126
  action: "sync-push-worker",
4102
4127
  summary: "\u63A8\u9001\u4E00\u6761\u756A\u8304\u949F\u8BB0\u5F55\u3002",
4103
- description: "\u8C03\u7528 /tomatoWorkerController/putSyncTomatoWorker\u3002",
4104
- http: { method: "POST", path: "/tomatoWorkerController/putSyncTomatoWorker", pragmas: ["stripAutoKeys"] },
4128
+ description: "\u8C03\u7528 /tomatoWorkerController/putSyncTomatoWorker(\u540E\u7AEF @RequestBody TomatoWorker)\u3002JSON \u4F53\u3002TomatoWorker \u5B9E\u4F53\u4EE5 twKey \u4E3A\u4E3B\u952E,\u901A\u8FC7 matchKey \u5173\u8054\u4EFB\u52A1\u3002",
4129
+ http: { method: "POST", path: "/tomatoWorkerController/putSyncTomatoWorker", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4105
4130
  params: [
4106
- { name: "tomato_key", backendName: "tomatoKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 tomatoKey\u3002" },
4107
- { name: "task_key", backendName: "taskKey", type: "integer", description: "\u4EFB\u52A1 taskKey\u3002" },
4131
+ { name: "tomato_key", backendName: "twKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 twKey(\u6620\u5C04\u5230 TomatoWorker.twKey)\u3002" },
4132
+ { name: "task_key", backendName: "matchKey", type: "integer", description: "\u5173\u8054\u4EFB\u52A1\u7684 taskKey(TomatoWorker \u7528 matchKey \u5173\u8054)\u3002" },
4133
+ { name: "is_tomato", backendName: "isTomato", type: "boolean", description: "\u662F\u5426\u756A\u8304\u949F\u8BB0\u5F55(\u6620\u5C04\u5230 TomatoWorker.isTomato)\u3002" },
4134
+ { name: "start_time", backendName: "tomatoStartTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u5F00\u59CB\u65F6\u95F4(\u6620\u5C04\u5230 TomatoWorker.tomatoStartTime)\u3002" },
4135
+ { name: "execute_time", backendName: "tomatoExecuteTime", type: "string", description: "\u5B9E\u9645\u6267\u884C\u65F6\u957F(\u6620\u5C04\u5230 TomatoWorker.tomatoExecuteTime)\u3002" },
4108
4136
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
4109
4137
  ],
4110
4138
  output: { shape: "scalar" },
@@ -4131,14 +4159,15 @@ var pomoCapabilities = [
4131
4159
  domain: "pomo",
4132
4160
  action: "config-set",
4133
4161
  summary: "\u65B0\u5EFA/\u66F4\u65B0\u756A\u8304\u949F\u914D\u7F6E\u3002",
4134
- description: "\u8C03\u7528 /tomatoConfigController/putSyncTomatoConfig\u3002",
4135
- http: { method: "POST", path: "/tomatoConfigController/putSyncTomatoConfig", pragmas: ["stripAutoKeys"] },
4162
+ description: "\u8C03\u7528 /tomatoConfigController/putSyncTomatoConfig(\u540E\u7AEF @RequestBody TomatoConfig)\u3002JSON \u4F53\u3002TomatoConfig \u5B9E\u4F53\u5B57\u6BB5\u4E3A tcKey/workTime/shortRestTime/longRestTime/tomatoCircle/wirelessMode\u3002",
4163
+ http: { method: "POST", path: "/tomatoConfigController/putSyncTomatoConfig", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4136
4164
  params: [
4137
- { name: "config_key", backendName: "configKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 configKey\u3002" },
4138
- { name: "focus_duration_sec", backendName: "focusDuration", type: "integer", description: "\u4E13\u6CE8\u79D2\u6570\u3002" },
4139
- { name: "break_duration_sec", backendName: "breakDuration", type: "integer", description: "\u77ED\u4F11\u79D2\u6570\u3002" },
4140
- { name: "long_break_duration_sec", backendName: "longBreakDuration", type: "integer", description: "\u957F\u4F11\u79D2\u6570\u3002" },
4141
- { name: "long_break_every", backendName: "longBreakEvery", type: "integer", description: "\u6BCF\u591A\u5C11\u8F6E\u540E\u957F\u4F11\u3002" },
4165
+ { name: "config_key", backendName: "tcKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 tcKey(\u6620\u5C04\u5230 TomatoConfig.tcKey)\u3002" },
4166
+ { name: "focus_duration_sec", backendName: "workTime", type: "integer", description: "\u4E13\u6CE8\u79D2\u6570(\u6620\u5C04\u5230 TomatoConfig.workTime)\u3002" },
4167
+ { name: "break_duration_sec", backendName: "shortRestTime", type: "integer", description: "\u77ED\u4F11\u79D2\u6570(\u6620\u5C04\u5230 TomatoConfig.shortRestTime)\u3002" },
4168
+ { name: "long_break_duration_sec", backendName: "longRestTime", type: "integer", description: "\u957F\u4F11\u79D2\u6570(\u6620\u5C04\u5230 TomatoConfig.longRestTime)\u3002" },
4169
+ { name: "long_break_every", backendName: "tomatoCircle", type: "integer", description: "\u6BCF\u591A\u5C11\u8F6E\u540E\u957F\u4F11(\u6620\u5C04\u5230 TomatoConfig.tomatoCircle)\u3002" },
4170
+ { name: "wireless_mode", backendName: "wirelessMode", type: "boolean", description: "\u662F\u5426\u65E0\u7EBF\u6A21\u5F0F(\u6620\u5C04\u5230 TomatoConfig.wirelessMode)\u3002" },
4142
4171
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
4143
4172
  ],
4144
4173
  output: { shape: "scalar" },
@@ -4187,16 +4216,20 @@ var projectCapabilities = [
4187
4216
  domain: "project",
4188
4217
  action: "sync-push",
4189
4218
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5F52\u6863/\u5220\u9664\u9879\u76EE(\u7531 syncFlag \u533A\u5206)\u3002",
4190
- description: "\u8C03\u7528 /projectController/putSyncProject\u3002\u6240\u6709\u5B57\u6BB5\u901A\u8FC7 FormData \u63D0\u4EA4,\u81EA\u52A8\u5265\u79BB id/rowid\u3002",
4191
- http: { method: "POST", path: "/projectController/putSyncProject", pragmas: ["stripAutoKeys"] },
4219
+ description: "\u8C03\u7528 /projectController/putSyncProject(\u540E\u7AEF @RequestBody Project)\u3002\u6240\u6709\u5B57\u6BB5\u4EE5 JSON \u4F53\u63D0\u4EA4,\u81EA\u52A8\u5265\u79BB id/rowid\u3002",
4220
+ http: { method: "POST", path: "/projectController/putSyncProject", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4192
4221
  params: [
4193
4222
  { name: "project_key", backendName: "projectKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 projectKey(\u7701\u7565\u5219\u65B0\u5EFA)\u3002" },
4194
- { name: "name", backendName: "projectName", type: "string", description: "\u9879\u76EE\u540D\u79F0\u3002" },
4195
- { name: "color", backendName: "projectColor", type: "string", description: "\u5341\u516D\u8FDB\u5236\u989C\u8272\u3002" },
4196
- { name: "icon", backendName: "projectIcon", type: "string", description: "\u56FE\u6807\u6807\u8BC6\u3002" },
4197
- { name: "parent_key", backendName: "projectParentKey", type: "integer", description: "\u7236\u9879\u76EE projectKey(\u7528\u4E8E\u5B50\u9879\u76EE)\u3002" },
4198
- { name: "state", backendName: "projectState", type: "integer", description: "0=\u672A\u5F00\u59CB, 1=\u8FDB\u884C\u4E2D, 2=\u5DF2\u5B8C\u6210, 3=\u5DF2\u6682\u505C, 4=\u5DF2\u53D6\u6D88\u3002" },
4199
- { name: "archived", backendName: "isArchived", type: "boolean", transform: "booleanToString", description: "\u5F52\u6863\u6807\u8BB0\u3002" },
4223
+ { name: "name", backendName: "projectName", type: "string", description: "\u9879\u76EE\u540D\u79F0(\u6620\u5C04\u5230 Project.projectName)\u3002" },
4224
+ { name: "desc", backendName: "projectDesc", type: "string", description: "\u9879\u76EE\u63CF\u8FF0(\u6620\u5C04\u5230 Project.projectDesc)\u3002" },
4225
+ { name: "bk_url", backendName: "projectBKUrl", type: "string", description: "\u9879\u76EE\u80CC\u666F\u56FE URL(\u6620\u5C04\u5230 Project.projectBKUrl)\u3002" },
4226
+ { name: "header_url", backendName: "projectHeaderUrl", type: "string", description: "\u9879\u76EE\u5934\u56FE URL(\u6620\u5C04\u5230 Project.projectHeaderUrl)\u3002" },
4227
+ { name: "label_key", backendName: "labelKey", type: "integer", description: "\u5173\u8054\u6807\u7B7E labelKey(\u6620\u5C04\u5230 Project.labelKey)\u3002" },
4228
+ { name: "target_key", backendName: "targetKey", type: "integer", description: "\u5173\u8054\u76EE\u6807 targetKey(\u6620\u5C04\u5230 Project.targetKey)\u3002" },
4229
+ { name: "state", backendName: "projectState", type: "integer", description: "\u9879\u76EE\u72B6\u6001(\u6620\u5C04\u5230 Project.projectState)\u3002" },
4230
+ { name: "star", backendName: "isStar", type: "boolean", description: "\u662F\u5426\u6807\u661F(\u6620\u5C04\u5230 Project.isStar)\u3002" },
4231
+ { name: "is_templete", backendName: "isTemplete", type: "boolean", description: "\u662F\u5426\u6A21\u677F(\u6620\u5C04\u5230 Project.isTemplete)\u3002" },
4232
+ { name: "end_time", backendName: "endTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u9879\u76EE\u7ED3\u675F\u65F6\u95F4(ISO,\u6620\u5C04\u5230 Project.endTime)\u3002" },
4200
4233
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "M=\u4FEE\u6539, D=\u5220\u9664, I=\u65B0\u589E\u3002" }
4201
4234
  ],
4202
4235
  output: { shape: "scalar" },
@@ -4309,12 +4342,19 @@ var quadrantCapabilities = [
4309
4342
  domain: "quadrant",
4310
4343
  action: "sync-push",
4311
4344
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u56DB\u8C61\u9650\u914D\u7F6E\u3002",
4312
- description: "\u8C03\u7528 /quadrantController/putSyncQuadrant\u3002",
4313
- http: { method: "POST", path: "/quadrantController/putSyncQuadrant", pragmas: ["stripAutoKeys"] },
4345
+ description: "\u8C03\u7528 /quadrantController/putSyncQuadrant(\u540E\u7AEF @RequestBody Quadrant)\u3002JSON \u4F53\u3002Quadrant \u5B9E\u4F53\u7528 meKey \u4F5C\u4E3B\u952E,\u5B57\u6BB5\u4E3A time1..4/color1..4/rules\u3002",
4346
+ http: { method: "POST", path: "/quadrantController/putSyncQuadrant", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4314
4347
  params: [
4315
- { name: "quadrant_key", backendName: "quadrantKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 quadrantKey\u3002" },
4316
- { name: "title", backendName: "quadrantTitle", type: "string", description: "\u8C61\u9650\u6807\u9898\u3002" },
4317
- { name: "index", backendName: "quadrantIndex", type: "integer", description: "\u8C61\u9650\u7D22\u5F15 0..3\u3002" },
4348
+ { name: "me_key", backendName: "meKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 meKey(\u6620\u5C04\u5230 Quadrant.meKey,\u56DB\u8C61\u9650\u914D\u7F6E\u4EE5 meKey \u552F\u4E00\u8BC6\u522B)\u3002" },
4349
+ { name: "time1", backendName: "time1", type: "string", description: "\u7B2C 1 \u8C61\u9650\u65F6\u95F4\u503C(\u6620\u5C04\u5230 Quadrant.time1)\u3002" },
4350
+ { name: "time2", backendName: "time2", type: "string", description: "\u7B2C 2 \u8C61\u9650\u65F6\u95F4\u503C\u3002" },
4351
+ { name: "time3", backendName: "time3", type: "string", description: "\u7B2C 3 \u8C61\u9650\u65F6\u95F4\u503C\u3002" },
4352
+ { name: "time4", backendName: "time4", type: "string", description: "\u7B2C 4 \u8C61\u9650\u65F6\u95F4\u503C\u3002" },
4353
+ { name: "color1", backendName: "color1", type: "string", description: "\u7B2C 1 \u8C61\u9650\u989C\u8272\u3002" },
4354
+ { name: "color2", backendName: "color2", type: "string", description: "\u7B2C 2 \u8C61\u9650\u989C\u8272\u3002" },
4355
+ { name: "color3", backendName: "color3", type: "string", description: "\u7B2C 3 \u8C61\u9650\u989C\u8272\u3002" },
4356
+ { name: "color4", backendName: "color4", type: "string", description: "\u7B2C 4 \u8C61\u9650\u989C\u8272\u3002" },
4357
+ { name: "rules", backendName: "rules", type: "string", description: "\u8C61\u9650\u89C4\u5219\u914D\u7F6E(JSON \u5B57\u7B26\u4E32)\u3002" },
4318
4358
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
4319
4359
  ],
4320
4360
  output: { shape: "scalar" },
@@ -4363,12 +4403,16 @@ var rewardCapabilities = [
4363
4403
  domain: "reward",
4364
4404
  action: "store-sync-push",
4365
4405
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u5956\u52B1\u5546\u54C1\u3002",
4366
- description: "\u8C03\u7528 /rewardStoreController/putSyncRewardStore\u3002",
4367
- http: { method: "POST", path: "/rewardStoreController/putSyncRewardStore", pragmas: ["stripAutoKeys"] },
4406
+ description: "\u8C03\u7528 /rewardStoreController/putSyncRewardStore(\u540E\u7AEF @RequestBody RewardStore)\u3002JSON \u4F53\u3002RewardStore \u5B9E\u4F53\u7528 rsKey/rsName/rsPrice/rsDesc \u7CFB\u5217\u5B57\u6BB5\u3002",
4407
+ http: { method: "POST", path: "/rewardStoreController/putSyncRewardStore", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4368
4408
  params: [
4369
- { name: "reward_key", backendName: "rewardKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 rewardKey\u3002" },
4370
- { name: "name", backendName: "rewardName", type: "string", description: "\u5956\u52B1\u540D\u79F0\u3002" },
4371
- { name: "cost", backendName: "rewardCost", type: "integer", description: "\u5151\u6362\u6240\u9700\u5956\u52B1\u5E01\u3002" },
4409
+ { name: "reward_key", backendName: "rsKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 rsKey(\u6620\u5C04\u5230 RewardStore.rsKey)\u3002" },
4410
+ { name: "name", backendName: "rsName", type: "string", description: "\u5956\u52B1\u540D\u79F0(\u6620\u5C04\u5230 RewardStore.rsName)\u3002" },
4411
+ { name: "cost", backendName: "rsPrice", type: "integer", description: "\u5151\u6362\u6240\u9700\u5956\u52B1\u5E01(\u6620\u5C04\u5230 RewardStore.rsPrice)\u3002" },
4412
+ { name: "desc", backendName: "rsDesc", type: "string", description: "\u5956\u52B1\u63CF\u8FF0(\u6620\u5C04\u5230 RewardStore.rsDesc)\u3002" },
4413
+ { name: "image_url", backendName: "rsImageUrl", type: "string", description: "\u5956\u52B1\u56FE\u7247 URL(\u6620\u5C04\u5230 RewardStore.rsImageUrl)\u3002" },
4414
+ { name: "state", backendName: "rsState", type: "integer", description: "\u5956\u52B1\u72B6\u6001(\u6620\u5C04\u5230 RewardStore.rsState)\u3002" },
4415
+ { name: "repeat_limit", backendName: "repeatLimit", type: "string", description: "\u5151\u6362\u6B21\u6570\u9650\u5236(\u6620\u5C04\u5230 RewardStore.repeatLimit)\u3002" },
4372
4416
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
4373
4417
  ],
4374
4418
  output: { shape: "scalar" },
@@ -4427,12 +4471,15 @@ var rewardCapabilities = [
4427
4471
  domain: "reward",
4428
4472
  action: "record-sync-push",
4429
4473
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u5956\u52B1\u5151\u6362\u8BB0\u5F55\u3002",
4430
- description: "\u8C03\u7528 /rewardRecordController/putSyncRewardRecord\u3002",
4431
- http: { method: "POST", path: "/rewardRecordController/putSyncRewardRecord", pragmas: ["stripAutoKeys"] },
4474
+ description: "\u8C03\u7528 /rewardRecordController/putSyncRewardRecord(\u540E\u7AEF @RequestBody RewardRecord)\u3002JSON \u4F53\u3002RewardRecord \u4EE5 rsKey \u6807\u8BC6\u8BB0\u5F55\u5BF9\u5E94\u7684\u5956\u52B1,\u5B57\u6BB5\u4E3A rrName/rrPrice/rrDesc/rrImageUrl\u3002",
4475
+ http: { method: "POST", path: "/rewardRecordController/putSyncRewardRecord", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4432
4476
  params: [
4433
- { name: "record_key", backendName: "recordKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684\u8BB0\u5F55 key\u3002" },
4434
- { name: "reward_key", backendName: "rewardKey", type: "integer", description: "\u5173\u8054\u7684\u5956\u52B1 key\u3002" },
4435
- { name: "cost", backendName: "cost", type: "integer", description: "\u6D88\u8017\u7684\u5956\u52B1\u5E01\u3002" },
4477
+ { name: "reward_key", backendName: "rsKey", type: "integer", required: true, description: "\u5173\u8054\u7684\u5956\u52B1 rsKey(RewardRecord \u901A\u8FC7 rsKey \u8BC6\u522B\u5BF9\u5E94\u5546\u54C1)\u3002" },
4478
+ { name: "name", backendName: "rrName", type: "string", description: "\u5956\u52B1\u540D\u79F0\u5FEB\u7167(\u6620\u5C04\u5230 RewardRecord.rrName)\u3002" },
4479
+ { name: "cost", backendName: "rrPrice", type: "integer", description: "\u6D88\u8017\u7684\u5956\u52B1\u5E01(\u6620\u5C04\u5230 RewardRecord.rrPrice)\u3002" },
4480
+ { name: "desc", backendName: "rrDesc", type: "string", description: "\u5907\u6CE8(\u6620\u5C04\u5230 RewardRecord.rrDesc)\u3002" },
4481
+ { name: "image_url", backendName: "rrImageUrl", type: "string", description: "\u56FE\u7247(\u6620\u5C04\u5230 RewardRecord.rrImageUrl)\u3002" },
4482
+ { name: "record_time", backendName: "recordTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u5151\u6362\u65F6\u95F4(\u6620\u5C04\u5230 RewardRecord.recordTime)\u3002" },
4436
4483
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
4437
4484
  ],
4438
4485
  output: { shape: "scalar" },
@@ -4480,13 +4527,12 @@ var sceneCapabilities = [
4480
4527
  domain: "scene",
4481
4528
  action: "sync-push",
4482
4529
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u573A\u666F\u3002",
4483
- description: "\u8C03\u7528 /sceneController/putSyncScene\u3002",
4484
- http: { method: "POST", path: "/sceneController/putSyncScene", pragmas: ["stripAutoKeys"] },
4530
+ description: "\u8C03\u7528 /sceneController/putSyncScene(\u540E\u7AEF @RequestBody Scene)\u3002JSON \u4F53\u3002Scene \u5B9E\u4F53\u4EC5\u542B sceneName / sceneState / sceneKey,\u6CA1\u6709 icon / desc \u5B57\u6BB5\u3002",
4531
+ http: { method: "POST", path: "/sceneController/putSyncScene", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4485
4532
  params: [
4486
4533
  { name: "scene_key", backendName: "sceneKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684\u573A\u666F key\u3002" },
4487
- { name: "name", backendName: "sceneName", type: "string", description: "\u573A\u666F\u540D\u79F0\u3002" },
4488
- { name: "icon", backendName: "sceneIcon", type: "string", description: "\u56FE\u6807\u6807\u8BC6\u3002" },
4489
- { name: "desc", backendName: "sceneDescription", type: "string", description: "\u573A\u666F\u63CF\u8FF0\u3002" },
4534
+ { name: "name", backendName: "sceneName", type: "string", description: "\u573A\u666F\u540D\u79F0(\u6620\u5C04\u5230 Scene.sceneName)\u3002" },
4535
+ { name: "state", backendName: "sceneState", type: "boolean", description: "\u573A\u666F\u542F\u7528\u72B6\u6001(Scene.sceneState \u4E3A Boolean)\u3002" },
4490
4536
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
4491
4537
  ],
4492
4538
  output: { shape: "scalar" },
@@ -4534,12 +4580,15 @@ var subprojectCapabilities = [
4534
4580
  domain: "subproject",
4535
4581
  action: "sync-push",
4536
4582
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u5B50\u9879\u76EE\u3002",
4537
- description: "\u8C03\u7528 /subProjectController/putSyncSubProject\u3002",
4538
- http: { method: "POST", path: "/subProjectController/putSyncSubProject", pragmas: ["stripAutoKeys"] },
4583
+ description: "\u8C03\u7528 /subProjectController/putSyncSubProject(\u540E\u7AEF @RequestBody SubProject)\u3002JSON \u4F53\u3002",
4584
+ http: { method: "POST", path: "/subProjectController/putSyncSubProject", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4539
4585
  params: [
4540
- { name: "sub_project_key", backendName: "subProjectKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684\u5B50\u9879\u76EE key\u3002" },
4586
+ { name: "sub_project_key", backendName: "spKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684\u5B50\u9879\u76EE key(\u6620\u5C04\u5230 SubProject.spKey)\u3002" },
4541
4587
  { name: "project_key", backendName: "projectKey", type: "integer", required: true, description: "\u7236\u9879\u76EE projectKey\u3002" },
4542
- { name: "name", backendName: "subProjectName", type: "string", description: "\u5B50\u9879\u76EE\u540D\u79F0\u3002" },
4588
+ { name: "name", backendName: "spName", type: "string", description: "\u5B50\u9879\u76EE\u540D\u79F0(\u6620\u5C04\u5230 SubProject.spName)\u3002" },
4589
+ { name: "desc", backendName: "spDesc", type: "string", description: "\u5B50\u9879\u76EE\u63CF\u8FF0(\u6620\u5C04\u5230 SubProject.spDesc)\u3002" },
4590
+ { name: "bk_url", backendName: "spBKUrl", type: "string", description: "\u5B50\u9879\u76EE\u80CC\u666F\u56FE(\u6620\u5C04\u5230 SubProject.spBKUrl)\u3002" },
4591
+ { name: "state", backendName: "spState", type: "integer", description: "\u5B50\u9879\u76EE\u72B6\u6001(\u6620\u5C04\u5230 SubProject.spState)\u3002" },
4543
4592
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
4544
4593
  ],
4545
4594
  output: { shape: "scalar" },
@@ -4587,13 +4636,13 @@ var subtaskCapabilities = [
4587
4636
  domain: "subtask",
4588
4637
  action: "sync-push",
4589
4638
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u5B50\u4EFB\u52A1(\u6839\u636E syncFlag)\u3002",
4590
- description: "\u8C03\u7528 /subTaskController/putSyncSubTask\u3002\u6240\u6709\u5B57\u6BB5\u901A\u8FC7 FormData \u63D0\u4EA4,\u81EA\u52A8\u5265\u79BB id/rowid\u3002",
4591
- http: { method: "POST", path: "/subTaskController/putSyncSubTask", pragmas: ["stripAutoKeys"] },
4639
+ description: "\u8C03\u7528 /subTaskController/putSyncSubTask(\u540E\u7AEF @RequestBody SubTask)\u3002JSON \u4F53,\u81EA\u52A8\u5265\u79BB id/rowid\u3002",
4640
+ http: { method: "POST", path: "/subTaskController/putSyncSubTask", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4592
4641
  params: [
4593
4642
  { name: "sub_task_key", backendName: "subTaskKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684\u5B50\u4EFB\u52A1 key(\u7701\u7565\u5219\u65B0\u5EFA)\u3002" },
4594
4643
  { name: "task_key", backendName: "taskKey", type: "integer", required: true, description: "\u7236\u4EFB\u52A1 taskKey\u3002" },
4595
- { name: "title", backendName: "subTaskTitle", type: "string", description: "\u5B50\u4EFB\u52A1\u6807\u9898\u3002" },
4596
- { name: "state", backendName: "subTaskState", type: "integer", description: "\u72B6\u6001(0=\u5B8C\u6210, 1=\u672A\u5B8C\u6210)\u3002" },
4644
+ { name: "title", backendName: "subTaskName", type: "string", description: "\u5B50\u4EFB\u52A1\u6807\u9898(\u6620\u5C04\u5230 SubTask.subTaskName)\u3002" },
4645
+ { name: "state", backendName: "subTaskState", type: "boolean", description: "\u72B6\u6001(SubTask.subTaskState \u4E3A Boolean;true=\u5B8C\u6210)\u3002" },
4597
4646
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "M=\u4FEE\u6539, D=\u5220\u9664, I=\u65B0\u589E\u3002" }
4598
4647
  ],
4599
4648
  output: { shape: "scalar" },
@@ -4641,13 +4690,19 @@ var targetCapabilities = [
4641
4690
  domain: "target",
4642
4691
  action: "sync-push",
4643
4692
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u76EE\u6807(Target)\u3002",
4644
- description: "\u8C03\u7528 /targetController/putSyncTarget\u3002",
4645
- http: { method: "POST", path: "/targetController/putSyncTarget", pragmas: ["stripAutoKeys"] },
4693
+ description: "\u8C03\u7528 /targetController/putSyncTarget(\u540E\u7AEF @RequestBody Target)\u3002JSON \u4F53\u3002Target \u5B9E\u4F53\u7528 ttName/ttDesc/ttState \u7CFB\u5217\u5B57\u6BB5,\u4E0D\u662F targetTitle\u3002",
4694
+ http: { method: "POST", path: "/targetController/putSyncTarget", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4646
4695
  params: [
4647
4696
  { name: "target_key", backendName: "targetKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684\u76EE\u6807 key\u3002" },
4648
- { name: "title", backendName: "targetTitle", type: "string", description: "\u76EE\u6807\u6807\u9898\u3002" },
4649
- { name: "desc", backendName: "targetDescription", type: "string", description: "\u76EE\u6807\u63CF\u8FF0\u3002" },
4650
- { name: "deadline", backendName: "targetDeadline", type: "date", transform: "isoToBackendDate", description: "\u622A\u6B62\u65E5\u671F(ISO)\u3002" },
4697
+ { name: "title", backendName: "ttName", type: "string", description: "\u76EE\u6807\u6807\u9898(\u6620\u5C04\u5230 Target.ttName)\u3002" },
4698
+ { name: "desc", backendName: "ttDesc", type: "string", description: "\u76EE\u6807\u63CF\u8FF0(\u6620\u5C04\u5230 Target.ttDesc)\u3002" },
4699
+ { name: "bk_url", backendName: "bkUrl", type: "string", description: "\u80CC\u666F\u56FE(\u6620\u5C04\u5230 Target.bkUrl)\u3002" },
4700
+ { name: "state", backendName: "ttState", type: "integer", description: "\u72B6\u6001(\u6620\u5C04\u5230 Target.ttState)\u3002" },
4701
+ { name: "label_key", backendName: "labelKey", type: "integer", description: "\u5173\u8054\u6807\u7B7E labelKey\u3002" },
4702
+ { name: "label_name", backendName: "labelName", type: "string", description: "\u6807\u7B7E\u540D\u5FEB\u7167(\u6620\u5C04\u5230 Target.labelName)\u3002" },
4703
+ { name: "deadline", backendName: "endTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u622A\u6B62\u65E5\u671F(ISO,\u6620\u5C04\u5230 Target.endTime)\u3002" },
4704
+ { name: "start_time", backendName: "startTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u5F00\u59CB\u65E5\u671F(ISO,\u6620\u5C04\u5230 Target.startTime)\u3002" },
4705
+ { name: "reward_value", backendName: "rewardValue", type: "integer", description: "\u5B8C\u6210\u5956\u52B1(\u6620\u5C04\u5230 Target.rewardValue)\u3002" },
4651
4706
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
4652
4707
  ],
4653
4708
  output: { shape: "scalar" },
@@ -4695,20 +4750,20 @@ var taskCapabilities = [
4695
4750
  domain: "task",
4696
4751
  action: "add",
4697
4752
  summary: "\u521B\u5EFA\u4E00\u4E2A\u65B0\u4EFB\u52A1\u3002",
4698
- description: "\u8C03\u7528 /taskController/insertTask,\u4F7F\u7528 FormData \u63D0\u4EA4\u3002",
4699
- http: { method: "POST", path: "/taskController/insertTask" },
4753
+ description: "\u8C03\u7528 /taskController/insertTask,\u4F7F\u7528 JSON \u8BF7\u6C42\u4F53(\u540E\u7AEF @RequestBody Tasks)\u3002",
4754
+ http: { method: "POST", path: "/taskController/insertTask", bodyFormat: "json" },
4700
4755
  params: [
4701
- { name: "title", backendName: "taskTitle", type: "string", required: true, description: "\u4EFB\u52A1\u6807\u9898\u3002" },
4702
- { name: "desc", backendName: "taskDescription", type: "string", description: "\u4EFB\u52A1\u63CF\u8FF0\u3002" },
4703
- { name: "due", backendName: "taskCreateTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u8BA1\u5212\u65F6\u95F4 / \u622A\u6B62\u65F6\u95F4(ISO)\u3002" },
4704
- { name: "priority", backendName: "taskPriority", type: "integer", description: "\u4F18\u5148\u7EA7 0-4\u3002" },
4705
- { name: "project_key", backendName: "taskProjectKey", type: "integer", description: "\u6240\u5C5E\u9879\u76EE projectKey\u3002" },
4706
- { name: "scene_key", backendName: "taskSceneKey", type: "integer", description: "\u6240\u5C5E\u573A\u666F sceneKey\u3002" },
4707
- { name: "labels", backendName: "taskLabels", type: "array", itemType: "string", transform: "arrayToCsv", description: "\u6807\u7B7E(\u81EA\u52A8\u62FC\u63A5\u4E3A CSV)\u3002" },
4708
- { name: "mit", backendName: "isMIT", type: "boolean", transform: "booleanToString", description: "\u662F\u5426\u6807\u8BB0\u4E3A MIT(\u4ECA\u65E5\u6700\u91CD\u8981)\u3002" },
4709
- { name: "reminder", backendName: "taskReminderTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u63D0\u9192\u65F6\u95F4(ISO)\u3002" },
4710
- { name: "sub_of", backendName: "taskParentKey", type: "integer", description: "\u7236\u4EFB\u52A1 taskKey(\u5B50\u4EFB\u52A1\u7528)\u3002" },
4711
- { name: "quadrant", backendName: "task4time", type: "integer", description: "\u65F6\u95F4\u56DB\u8C61\u9650 0-3\u3002" }
4756
+ { name: "title", backendName: "taskName", type: "string", required: true, description: "\u4EFB\u52A1\u6807\u9898(\u6620\u5C04\u5230 Tasks.taskName)\u3002" },
4757
+ { name: "desc", backendName: "taskDesc", type: "string", description: "\u4EFB\u52A1\u63CF\u8FF0(\u6620\u5C04\u5230 Tasks.taskDesc)\u3002" },
4758
+ { name: "due", backendName: "taskCreateTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u8BA1\u5212\u65F6\u95F4 / \u622A\u6B62\u65F6\u95F4(ISO,\u6620\u5C04\u5230 Tasks.taskCreateTime)\u3002" },
4759
+ { name: "priority", backendName: "taskPriority", type: "string", description: "\u4F18\u5148\u7EA7 0-4(Tasks.taskPriority \u5B58\u4E3A\u5B57\u7B26\u4E32)\u3002" },
4760
+ { name: "project_key", backendName: "projectKey", type: "integer", description: "\u6240\u5C5E\u9879\u76EE projectKey(\u6620\u5C04\u5230 Tasks.projectKey)\u3002" },
4761
+ { name: "scene_key", backendName: "sceneKey", type: "integer", description: "\u6240\u5C5E\u573A\u666F sceneKey(\u6620\u5C04\u5230 Tasks.sceneKey)\u3002" },
4762
+ { name: "labels", backendName: "taskLabels", type: "array", itemType: "string", transform: "arrayToCsv", description: "\u6807\u7B7E CSV(Tasks \u5B9E\u4F53\u53EA\u5B58\u5355\u4E2A labelKey,\u6B64\u53C2\u6570\u5F53\u524D\u4E3A no-op,\u4F9B\u524D\u7AEF\u517C\u5BB9)\u3002" },
4763
+ { name: "mit", backendName: "isMIT", type: "boolean", transform: "booleanToString", description: "\u662F\u5426\u6807\u8BB0\u4E3A MIT(\u4ECA\u65E5\u6700\u91CD\u8981,\u6620\u5C04\u5230 Tasks.isMIT)\u3002" },
4764
+ { name: "reminder", backendName: "taskReminderDate", type: "datetime", transform: "isoToBackendDateTime", description: "\u63D0\u9192\u65F6\u95F4(ISO,\u6620\u5C04\u5230 Tasks.taskReminderDate)\u3002" },
4765
+ { name: "sub_of", backendName: "taskParentKey", type: "integer", description: "Tasks \u5B9E\u4F53\u65E0 taskParentKey \u5B57\u6BB5,\u6B64\u53C2\u6570\u4E3A no-op;\u5B50\u4EFB\u52A1\u8BF7\u4F7F\u7528 subtask.sync-push\u3002" },
4766
+ { name: "quadrant", backendName: "task4time", type: "integer", description: "\u65F6\u95F4\u56DB\u8C61\u9650 0-3(\u6620\u5C04\u5230 Tasks.task4time)\u3002" }
4712
4767
  ],
4713
4768
  output: { shape: "object" },
4714
4769
  scopes: ["write"],
@@ -4725,19 +4780,19 @@ var taskCapabilities = [
4725
4780
  domain: "task",
4726
4781
  action: "update",
4727
4782
  summary: "\u66F4\u65B0\u4EFB\u52A1\u3002\u4EC5\u4E0A\u4F20\u663E\u5F0F\u4F20\u5165\u7684\u5B57\u6BB5\u3002",
4728
- description: "\u8C03\u7528 /taskController/updateTask\u3002\u672A\u4F20\u5165\u7684\u5B57\u6BB5\u4E0D\u4F1A\u88AB\u5199\u5165 FormData,\u907F\u514D\u628A\u73B0\u6709\u5217\u7F6E\u7A7A\u3002",
4729
- http: { method: "POST", path: "/taskController/updateTask" },
4783
+ description: "\u8C03\u7528 /taskController/updateTask(\u540E\u7AEF @RequestBody Tasks)\u3002\u672A\u4F20\u5165\u7684\u5B57\u6BB5\u4E0D\u4F1A\u88AB\u5199\u5165 JSON payload,\u907F\u514D\u628A\u73B0\u6709\u5217\u7F6E\u7A7A\u3002",
4784
+ http: { method: "POST", path: "/taskController/updateTask", bodyFormat: "json" },
4730
4785
  params: [
4731
4786
  { name: "task_key", backendName: "taskKey", type: "integer", required: true, description: "\u4EFB\u52A1 taskKey\u3002" },
4732
- { name: "title", backendName: "taskTitle", type: "string", description: "\u65B0\u6807\u9898\u3002" },
4733
- { name: "desc", backendName: "taskDescription", type: "string", description: "\u65B0\u63CF\u8FF0\u3002" },
4734
- { name: "due", backendName: "taskCreateTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u65B0\u8BA1\u5212\u65F6\u95F4(ISO)\u3002" },
4735
- { name: "priority", backendName: "taskPriority", type: "integer", description: "\u65B0\u4F18\u5148\u7EA7\u3002" },
4736
- { name: "project_key", backendName: "taskProjectKey", type: "integer", description: "\u8FC1\u79FB\u5230\u7684 projectKey\u3002" },
4737
- { name: "scene_key", backendName: "taskSceneKey", type: "integer", description: "\u8FC1\u79FB\u5230\u7684 sceneKey\u3002" },
4738
- { name: "labels", backendName: "taskLabels", type: "array", itemType: "string", transform: "arrayToCsv", description: "\u6807\u7B7E(CSV)\u3002" },
4739
- { name: "reminder", backendName: "taskReminderTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u65B0\u63D0\u9192\u65F6\u95F4(ISO)\u3002" },
4740
- { name: "quadrant", backendName: "task4time", type: "integer", description: "\u65F6\u95F4\u56DB\u8C61\u9650\u3002" },
4787
+ { name: "title", backendName: "taskName", type: "string", description: "\u65B0\u6807\u9898(\u6620\u5C04\u5230 Tasks.taskName)\u3002" },
4788
+ { name: "desc", backendName: "taskDesc", type: "string", description: "\u65B0\u63CF\u8FF0(\u6620\u5C04\u5230 Tasks.taskDesc)\u3002" },
4789
+ { name: "due", backendName: "taskCreateTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u65B0\u8BA1\u5212\u65F6\u95F4(ISO,\u6620\u5C04\u5230 Tasks.taskCreateTime)\u3002" },
4790
+ { name: "priority", backendName: "taskPriority", type: "string", description: "\u65B0\u4F18\u5148\u7EA7(Tasks.taskPriority \u5B58\u4E3A\u5B57\u7B26\u4E32)\u3002" },
4791
+ { name: "project_key", backendName: "projectKey", type: "integer", description: "\u8FC1\u79FB\u5230\u7684 projectKey(\u6620\u5C04\u5230 Tasks.projectKey)\u3002" },
4792
+ { name: "scene_key", backendName: "sceneKey", type: "integer", description: "\u8FC1\u79FB\u5230\u7684 sceneKey(\u6620\u5C04\u5230 Tasks.sceneKey)\u3002" },
4793
+ { name: "labels", backendName: "taskLabels", type: "array", itemType: "string", transform: "arrayToCsv", description: "\u6807\u7B7E CSV(Tasks \u5B9E\u4F53\u53EA\u5B58\u5355\u4E2A labelKey,\u6B64\u53C2\u6570\u5F53\u524D\u4E3A no-op)\u3002" },
4794
+ { name: "reminder", backendName: "taskReminderDate", type: "datetime", transform: "isoToBackendDateTime", description: "\u65B0\u63D0\u9192\u65F6\u95F4(ISO,\u6620\u5C04\u5230 Tasks.taskReminderDate)\u3002" },
4795
+ { name: "quadrant", backendName: "task4time", type: "integer", description: "\u65F6\u95F4\u56DB\u8C61\u9650(\u6620\u5C04\u5230 Tasks.task4time)\u3002" },
4741
4796
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0,\u9ED8\u8BA4 M\u3002" }
4742
4797
  ],
4743
4798
  output: { shape: "object" },
@@ -4750,7 +4805,7 @@ var taskCapabilities = [
4750
4805
  action: "delete",
4751
4806
  summary: "\u8F6F\u5220\u9664\u4EFB\u52A1(syncFlag=D)\u3002",
4752
4807
  description: "\u8C03\u7528 /taskController/updateTask,\u81EA\u52A8\u6CE8\u5165 syncFlag=D\u3002",
4753
- http: { method: "POST", path: "/taskController/updateTask", pragmas: ["softDelete"] },
4808
+ http: { method: "POST", path: "/taskController/updateTask", pragmas: ["softDelete"], bodyFormat: "json" },
4754
4809
  params: [
4755
4810
  { name: "task_key", backendName: "taskKey", type: "integer", required: true, description: "\u4EFB\u52A1 taskKey\u3002" }
4756
4811
  ],
@@ -4766,7 +4821,7 @@ var taskCapabilities = [
4766
4821
  action: "complete",
4767
4822
  summary: "\u5C06\u4EFB\u52A1\u6807\u8BB0\u4E3A\u4ECA\u65E5\u5B8C\u6210\u3002",
4768
4823
  description: "\u8C03\u7528 /taskController/updateTask,\u81EA\u52A8\u6CE8\u5165 taskState=0 \u4E0E\u4ECA\u65E5\u7684 taskCompletedTime\u3002",
4769
- http: { method: "POST", path: "/taskController/updateTask", pragmas: ["completeTask"] },
4824
+ http: { method: "POST", path: "/taskController/updateTask", pragmas: ["completeTask"], bodyFormat: "json" },
4770
4825
  params: [
4771
4826
  { name: "task_key", backendName: "taskKey", type: "integer", required: true, description: "\u4EFB\u52A1 taskKey\u3002" }
4772
4827
  ],
@@ -4779,8 +4834,8 @@ var taskCapabilities = [
4779
4834
  domain: "task",
4780
4835
  action: "uncomplete",
4781
4836
  summary: "\u53D6\u6D88\u4EFB\u52A1\u5B8C\u6210\u72B6\u6001\u3002",
4782
- description: "\u8C03\u7528 /taskController/updateTask,\u628A taskState \u8FD8\u539F\u4E3A 1 \u5E76\u6E05\u7A7A\u5B8C\u6210\u65F6\u95F4\u3002",
4783
- http: { method: "POST", path: "/taskController/updateTask" },
4837
+ description: "\u8C03\u7528 /taskController/updateTask(@RequestBody),\u628A taskState \u8FD8\u539F\u4E3A 1 \u5E76\u6E05\u7A7A\u5B8C\u6210\u65F6\u95F4\u3002",
4838
+ http: { method: "POST", path: "/taskController/updateTask", bodyFormat: "json" },
4784
4839
  params: [
4785
4840
  { name: "task_key", backendName: "taskKey", type: "integer", required: true, description: "\u4EFB\u52A1 taskKey\u3002" },
4786
4841
  { name: "task_state", backendName: "taskState", type: "integer", default: 1, description: "\u5F00\u653E\u6001(\u4E00\u822C\u4E3A 1)\u3002" },
@@ -4796,7 +4851,7 @@ var taskCapabilities = [
4796
4851
  action: "mit",
4797
4852
  summary: "\u8BBE\u7F6E\u6216\u53D6\u6D88 MIT(\u4ECA\u65E5\u6700\u91CD\u8981)\u3002",
4798
4853
  description: "\u8C03\u7528 /taskController/updateTask,\u6CE8\u5165 isMIT \u4E0E syncFlag=M\u3002",
4799
- http: { method: "POST", path: "/taskController/updateTask", pragmas: ["setMit"] },
4854
+ http: { method: "POST", path: "/taskController/updateTask", pragmas: ["setMit"], bodyFormat: "json" },
4800
4855
  params: [
4801
4856
  { name: "task_key", backendName: "taskKey", type: "integer", required: true, description: "\u4EFB\u52A1 taskKey\u3002" },
4802
4857
  { name: "is_mit", type: "boolean", required: true, description: "\u662F\u5426\u4E3A MIT\u3002" }
@@ -4811,7 +4866,7 @@ var taskCapabilities = [
4811
4866
  action: "quadrant",
4812
4867
  summary: "\u8BBE\u7F6E\u4EFB\u52A1\u6240\u5C5E\u7684\u65F6\u95F4\u56DB\u8C61\u9650(0..3)\u3002",
4813
4868
  description: "\u8C03\u7528 /taskController/updateTask,\u6CE8\u5165 task4time \u4E0E syncFlag=M\u3002",
4814
- http: { method: "POST", path: "/taskController/updateTask", pragmas: ["setQuadrant"] },
4869
+ http: { method: "POST", path: "/taskController/updateTask", pragmas: ["setQuadrant"], bodyFormat: "json" },
4815
4870
  params: [
4816
4871
  { name: "task_key", backendName: "taskKey", type: "integer", required: true, description: "\u4EFB\u52A1 taskKey\u3002" },
4817
4872
  { name: "quadrant", type: "integer", required: true, description: "\u8C61\u9650 0..3\u3002" }
@@ -4972,8 +5027,8 @@ var taskCapabilities = [
4972
5027
  domain: "task",
4973
5028
  action: "sync-push",
4974
5029
  summary: "\u5411\u670D\u52A1\u5668\u63A8\u9001\u5355\u6761\u4EFB\u52A1\u8BB0\u5F55\u3002",
4975
- description: "\u8C03\u7528 /taskController/putSyncTask\u3002\u6240\u6709\u5B57\u6BB5\u901A\u8FC7 FormData \u63D0\u4EA4,\u81EA\u52A8\u5265\u79BB id / rowid\u3002",
4976
- http: { method: "POST", path: "/taskController/putSyncTask", pragmas: ["stripAutoKeys"] },
5030
+ description: "\u8C03\u7528 /taskController/putSyncTask(@RequestBody Tasks),\u5B8C\u6574\u5B57\u6BB5\u63D0\u4EA4,\u81EA\u52A8\u5265\u79BB id / rowid\u3002",
5031
+ http: { method: "POST", path: "/taskController/putSyncTask", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
4977
5032
  params: [
4978
5033
  { name: "task_key", backendName: "taskKey", type: "integer", required: true, description: "\u4EFB\u52A1 taskKey\u3002" },
4979
5034
  { name: "record", type: "object", description: "\u5B8C\u6574\u8BB0\u5F55\u5B57\u6BB5(\u6253\u5E73)\u3002" }
@@ -5007,13 +5062,20 @@ var timelineCapabilities = [
5007
5062
  domain: "timeline",
5008
5063
  action: "sync-push",
5009
5064
  summary: "\u65B0\u5EFA/\u66F4\u65B0/\u5220\u9664\u65F6\u95F4\u8F74\u6761\u76EE\u3002",
5010
- description: "\u8C03\u7528 /timeLineController/putSyncTimeLine\u3002",
5011
- http: { method: "POST", path: "/timeLineController/putSyncTimeLine", pragmas: ["stripAutoKeys"] },
5065
+ description: "\u8C03\u7528 /timeLineController/putSyncTimeLine(\u540E\u7AEF @RequestBody TimeLine)\u3002JSON \u4F53\u3002TimeLine \u5B9E\u4F53\u5B57\u6BB5\u4E3A tlKey/tlName/tlDesc/tlType/tlImageUrl/startTime/endTime,\u65E0 timeLineTitle/Content/Time \u5B57\u6BB5\u3002",
5066
+ http: { method: "POST", path: "/timeLineController/putSyncTimeLine", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
5012
5067
  params: [
5013
- { name: "time_line_key", backendName: "timeLineKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 timeLineKey\u3002" },
5014
- { name: "title", backendName: "timeLineTitle", type: "string", description: "\u6807\u9898\u3002" },
5015
- { name: "content", backendName: "timeLineContent", type: "string", description: "\u6B63\u6587\u3002" },
5016
- { name: "time", backendName: "timeLineTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u65F6\u95F4\u6233(ISO)\u3002" },
5068
+ { name: "time_line_key", backendName: "tlKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 tlKey(\u6620\u5C04\u5230 TimeLine.tlKey)\u3002" },
5069
+ { name: "title", backendName: "tlName", type: "string", description: "\u6807\u9898(\u6620\u5C04\u5230 TimeLine.tlName)\u3002" },
5070
+ { name: "content", backendName: "tlDesc", type: "string", description: "\u6B63\u6587/\u63CF\u8FF0(\u6620\u5C04\u5230 TimeLine.tlDesc)\u3002" },
5071
+ { name: "type", backendName: "tlType", type: "string", description: "\u7C7B\u578B(\u6620\u5C04\u5230 TimeLine.tlType)\u3002" },
5072
+ { name: "image_url", backendName: "tlImageUrl", type: "string", description: "\u914D\u56FE(\u6620\u5C04\u5230 TimeLine.tlImageUrl)\u3002" },
5073
+ { name: "start_time", backendName: "startTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u5F00\u59CB\u65F6\u95F4(ISO,\u6620\u5C04\u5230 TimeLine.startTime)\u3002" },
5074
+ { name: "end_time", backendName: "endTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u7ED3\u675F\u65F6\u95F4(ISO,\u6620\u5C04\u5230 TimeLine.endTime)\u3002" },
5075
+ { name: "match_key", backendName: "matchKey", type: "integer", description: "\u5173\u8054\u5BF9\u8C61 key(task/project/target,\u6839\u636E tlType \u89E3\u91CA)\u3002" },
5076
+ { name: "target_key", backendName: "targetKey", type: "integer", description: "\u5173\u8054\u76EE\u6807 targetKey\u3002" },
5077
+ { name: "project_key", backendName: "projectKey", type: "integer", description: "\u5173\u8054\u9879\u76EE projectKey\u3002" },
5078
+ { name: "label_name", backendName: "labelName", type: "string", description: "\u6807\u7B7E\u540D\u5FEB\u7167(\u6620\u5C04\u5230 TimeLine.labelName)\u3002" },
5017
5079
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
5018
5080
  ],
5019
5081
  output: { shape: "scalar" },
@@ -5233,12 +5295,15 @@ var workstateCapabilities = [
5233
5295
  domain: "workstate",
5234
5296
  action: "update",
5235
5297
  summary: "\u66F4\u65B0\u4E00\u6761\u5DE5\u4F5C\u72B6\u6001\u8BB0\u5F55\u3002",
5236
- description: "\u8C03\u7528 /workStateController/updateWorkState\u3002",
5237
- http: { method: "POST", path: "/workStateController/updateWorkState" },
5298
+ description: "\u8C03\u7528 /workStateController/updateWorkState(\u540E\u7AEF @RequestBody WorkState)\u3002JSON \u4F53\u3002WorkState \u5B9E\u4F53\u4EE5 wsKey \u4E3A\u4E3B\u952E,\u5B57\u6BB5\u4E3A startTime/matchKey/workType/tomatoState/tomatoRound(\u65E0 title/note \u5B57\u6BB5)\u3002",
5299
+ http: { method: "POST", path: "/workStateController/updateWorkState", bodyFormat: "json" },
5238
5300
  params: [
5239
- { name: "work_state_key", backendName: "workStateKey", type: "string", required: true, description: "\u5DE5\u4F5C\u72B6\u6001 key\u3002" },
5240
- { name: "title", backendName: "title", type: "string", description: "\u65B0\u6807\u9898\u3002" },
5241
- { name: "note", backendName: "note", type: "string", description: "\u5907\u6CE8\u3002" }
5301
+ { name: "work_state_key", backendName: "wsKey", type: "integer", required: true, description: "\u5DE5\u4F5C\u72B6\u6001 key(\u6620\u5C04\u5230 WorkState.wsKey)\u3002" },
5302
+ { name: "start_time", backendName: "startTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u5F00\u59CB\u65F6\u95F4(\u6620\u5C04\u5230 WorkState.startTime)\u3002" },
5303
+ { name: "match_key", backendName: "matchKey", type: "integer", description: "\u5173\u8054\u5BF9\u8C61 key(\u6620\u5C04\u5230 WorkState.matchKey)\u3002" },
5304
+ { name: "work_type", backendName: "workType", type: "integer", description: "\u5DE5\u4F5C\u7C7B\u578B(\u6620\u5C04\u5230 WorkState.workType)\u3002" },
5305
+ { name: "tomato_state", backendName: "tomatoState", type: "integer", description: "\u756A\u8304\u949F\u72B6\u6001(\u6620\u5C04\u5230 WorkState.tomatoState)\u3002" },
5306
+ { name: "tomato_round", backendName: "tomatoRound", type: "integer", description: "\u756A\u8304\u949F\u8F6E\u6B21(\u6620\u5C04\u5230 WorkState.tomatoRound)\u3002" }
5242
5307
  ],
5243
5308
  output: { shape: "object" },
5244
5309
  scopes: ["write"],
@@ -5280,10 +5345,13 @@ var workstateCapabilities = [
5280
5345
  domain: "workstate",
5281
5346
  action: "sync-push",
5282
5347
  summary: "\u63A8\u9001\u4E00\u6761\u5DE5\u4F5C\u72B6\u6001\u8BB0\u5F55\u3002",
5283
- description: "\u8C03\u7528 /workStateController/putSyncWorkState\u3002",
5284
- http: { method: "POST", path: "/workStateController/putSyncWorkState", pragmas: ["stripAutoKeys"] },
5348
+ description: "\u8C03\u7528 /workStateController/putSyncWorkState(\u540E\u7AEF @RequestBody WorkState)\u3002JSON \u4F53\u3002WorkState \u5B9E\u4F53\u4EE5 wsKey \u4E3A\u4E3B\u952E\u3002",
5349
+ http: { method: "POST", path: "/workStateController/putSyncWorkState", pragmas: ["stripAutoKeys"], bodyFormat: "json" },
5285
5350
  params: [
5286
- { name: "work_state_key", backendName: "workStateKey", type: "string", description: "\u5DF2\u5B58\u5728\u7684 key\u3002" },
5351
+ { name: "work_state_key", backendName: "wsKey", type: "integer", description: "\u5DF2\u5B58\u5728\u7684 wsKey(\u6620\u5C04\u5230 WorkState.wsKey)\u3002" },
5352
+ { name: "start_time", backendName: "startTime", type: "datetime", transform: "isoToBackendDateTime", description: "\u5F00\u59CB\u65F6\u95F4(\u6620\u5C04\u5230 WorkState.startTime)\u3002" },
5353
+ { name: "match_key", backendName: "matchKey", type: "integer", description: "\u5173\u8054\u5BF9\u8C61 key(\u6620\u5C04\u5230 WorkState.matchKey)\u3002" },
5354
+ { name: "work_type", backendName: "workType", type: "integer", description: "\u5DE5\u4F5C\u7C7B\u578B(\u6620\u5C04\u5230 WorkState.workType)\u3002" },
5287
5355
  { name: "sync_flag", backendName: "syncFlag", type: "string", default: "M", description: "\u540C\u6B65\u6807\u8BB0\u3002" }
5288
5356
  ],
5289
5357
  output: { shape: "scalar" },
@@ -5515,13 +5583,15 @@ var HttpClient = class {
5515
5583
  );
5516
5584
  const signal = init.signal ? anySignal([init.signal, controller.signal]) : controller.signal;
5517
5585
  try {
5586
+ const headers = {
5587
+ "X-Request-Id": requestId,
5588
+ "User-Agent": this.config.userAgent ?? "zentodo-cli/0.1.0"
5589
+ };
5590
+ if (init.contentType) headers["Content-Type"] = init.contentType;
5518
5591
  const response = await fetch(url, {
5519
5592
  method: init.method,
5520
5593
  body: init.method === "GET" ? void 0 : init.body,
5521
- headers: {
5522
- "X-Request-Id": requestId,
5523
- "User-Agent": this.config.userAgent ?? "zentodo-cli/0.1.0"
5524
- },
5594
+ headers,
5525
5595
  signal
5526
5596
  });
5527
5597
  const text = await response.text();
@@ -5780,6 +5850,92 @@ function redact(f) {
5780
5850
  // ../core/src/runtime/runner.ts
5781
5851
  init_build_shims();
5782
5852
 
5853
+ // ../core/src/client/jsonbody.ts
5854
+ init_build_shims();
5855
+ function buildJsonBody(spec, input, context = {}) {
5856
+ const payload = {};
5857
+ const fields = [];
5858
+ const set = (name, value) => {
5859
+ payload[name] = value;
5860
+ const existing = fields.find((f) => f.name === name);
5861
+ if (existing) existing.value = value;
5862
+ else fields.push({ name, value, isFile: false });
5863
+ };
5864
+ const hasUsrKey = spec.params.some((p) => (p.backendName ?? snakeToCamel(p.name)) === "usrKey");
5865
+ if (!hasUsrKey && context.usrKey !== void 0 && context.usrKey !== null) {
5866
+ const numeric = typeof context.usrKey === "number" ? context.usrKey : Number(context.usrKey);
5867
+ set("usrKey", Number.isNaN(numeric) ? context.usrKey : numeric);
5868
+ }
5869
+ for (const p of spec.params) {
5870
+ if (p.source === "file") {
5871
+ continue;
5872
+ }
5873
+ const value = input[p.name] ?? p.default;
5874
+ if (value === void 0 || value === null) {
5875
+ if (p.required) throw new Error(`missing required parameter: ${p.name}`);
5876
+ continue;
5877
+ }
5878
+ const backendName = p.backendName ?? snakeToCamel(p.name);
5879
+ set(backendName, coerceValue(p, value));
5880
+ }
5881
+ for (const pragma of spec.http.pragmas ?? []) {
5882
+ switch (pragma) {
5883
+ case "softDelete":
5884
+ set("syncFlag", "D");
5885
+ break;
5886
+ case "completeTask":
5887
+ set("taskState", 0);
5888
+ set("taskCompletedTime", todayBackendDate());
5889
+ break;
5890
+ case "setMit":
5891
+ set("syncFlag", "M");
5892
+ set("isMIT", Boolean(input["is_mit"]));
5893
+ break;
5894
+ case "setQuadrant":
5895
+ set("syncFlag", "M");
5896
+ if (input["quadrant"] !== void 0) set("task4time", Number(input["quadrant"]));
5897
+ break;
5898
+ case "stripAutoKeys":
5899
+ delete payload["id"];
5900
+ delete payload["rowid"];
5901
+ for (const key of ["id", "rowid"]) {
5902
+ const idx = fields.findIndex((f) => f.name === key);
5903
+ if (idx >= 0) fields.splice(idx, 1);
5904
+ }
5905
+ break;
5906
+ }
5907
+ }
5908
+ return {
5909
+ body: JSON.stringify(payload),
5910
+ contentType: "application/json;charset=UTF-8",
5911
+ fields
5912
+ };
5913
+ }
5914
+ function coerceValue(p, value) {
5915
+ if (typeof value === "string") {
5916
+ if (p.transform === "isoToBackendDate") return isoToBackendDate(value);
5917
+ if (p.transform === "isoToBackendDateTime") return isoToBackendDateTime(value);
5918
+ }
5919
+ switch (p.type) {
5920
+ case "integer":
5921
+ return typeof value === "number" ? value : Number.parseInt(String(value), 10);
5922
+ case "number":
5923
+ return typeof value === "number" ? value : Number.parseFloat(String(value));
5924
+ case "boolean":
5925
+ if (typeof value === "boolean") return value;
5926
+ if (value === "true" || value === 1 || value === "1") return true;
5927
+ return false;
5928
+ case "array":
5929
+ if (Array.isArray(value)) return value;
5930
+ if (typeof value === "string") {
5931
+ return p.transform === "arrayToCsv" ? value : value.split(",").map((s) => s.trim()).filter(Boolean);
5932
+ }
5933
+ return value;
5934
+ default:
5935
+ return value;
5936
+ }
5937
+ }
5938
+
5783
5939
  // ../core/src/runtime/scope.ts
5784
5940
  init_build_shims();
5785
5941
  function assertScope(spec, granted) {
@@ -5806,6 +5962,41 @@ async function runCapability(spec, input, ctx) {
5806
5962
  const startedAt = Date.now();
5807
5963
  try {
5808
5964
  assertScope(spec, ctx.grantedScopes);
5965
+ const isJson = spec.http.bodyFormat === "json";
5966
+ if (isJson) {
5967
+ const built2 = buildJsonBody(spec, input, { usrKey: ctx.usrKey });
5968
+ if (ctx.dryRun) {
5969
+ return {
5970
+ ok: true,
5971
+ data: {
5972
+ dry_run: true,
5973
+ method: spec.http.method,
5974
+ path: spec.http.path,
5975
+ content_type: built2.contentType,
5976
+ body: built2.body
5977
+ },
5978
+ error: null,
5979
+ meta: {
5980
+ requestId: "dryrun",
5981
+ durationMs: Date.now() - startedAt,
5982
+ scopeChecked: spec.scopes
5983
+ }
5984
+ };
5985
+ }
5986
+ const response2 = await ctx.http.request({
5987
+ method: spec.http.method,
5988
+ path: spec.http.path,
5989
+ body: built2.body,
5990
+ contentType: built2.contentType
5991
+ });
5992
+ const data2 = unwrap(response2.data, spec);
5993
+ return {
5994
+ ok: true,
5995
+ data: data2,
5996
+ error: null,
5997
+ meta: { ...response2.meta, scopeChecked: spec.scopes }
5998
+ };
5999
+ }
5809
6000
  const built = buildFormData(spec, input, { usrKey: ctx.usrKey });
5810
6001
  if (ctx.dryRun) {
5811
6002
  return {
@@ -8173,7 +8364,7 @@ function describeGroup(name) {
8173
8364
  }
8174
8365
 
8175
8366
  // src/program.ts
8176
- var CLI_VERSION = true ? "0.1.12" : "0.0.0";
8367
+ var CLI_VERSION = true ? "0.1.14" : "0.0.0";
8177
8368
  function buildProgram() {
8178
8369
  const program3 = new Command();
8179
8370
  program3.name("zentodo").description("ZenTodo \u547D\u4EE4\u884C\u5DE5\u5177 \u2014 \u57FA\u4E8E\u6E05\u5355\u9A71\u52A8,\u8FDE\u63A5 ZenTodo \u540E\u7AEF\u3002\u6240\u6709\u8BF7\u6C42\u4F7F\u7528 FormData\u3002").version(CLI_VERSION, "-V, --version", "\u6253\u5370 CLI \u7248\u672C").helpOption("-h, --help", "\u663E\u793A\u5E2E\u52A9\u4FE1\u606F").addHelpCommand("help [command]", "\u67E5\u770B\u547D\u4EE4\u5E2E\u52A9").option("--profile <name>", "\u4F7F\u7528\u6307\u5B9A Profile(\u9ED8\u8BA4\u4F7F\u7528 current_profile)").option("--server <url>", "\u8986\u76D6\u540E\u7AEF\u5730\u5740").option("--token <token>", "\u8986\u76D6\u672C\u5730 Token").option("--log-level <level>", "\u65E5\u5FD7\u7EA7\u522B:trace|debug|info|warn|error", "info").option("--log-file <path>", "\u8FFD\u52A0\u65E5\u5FD7\u5230\u6307\u5B9A\u6587\u4EF6").option("--no-retry", "\u7981\u7528\u81EA\u52A8\u91CD\u8BD5").option("--no-color", "\u5173\u95ED\u5F69\u8272\u8F93\u51FA").option("--dry-run", "\u53EA\u6253\u5370\u5C06\u53D1\u9001\u7684\u8BF7\u6C42,\u4E0D\u771F\u6B63\u8C03\u7528\u540E\u7AEF").option("--yes", "\u8DF3\u8FC7\u7834\u574F\u6027\u64CD\u4F5C\u7684\u786E\u8BA4\u63D0\u793A").option("--local", "\u4F18\u5148\u4F7F\u7528\u672C\u5730 SQLite(\u82E5\u53EF\u7528)").option("--remote", "\u5F3A\u5236\u4F7F\u7528\u8FDC\u7A0B HTTP \u6A21\u5F0F").option("--json", "JSON \u8F93\u51FA").option("--ndjson", "\u6309\u884C\u8F93\u51FA JSON(\u9002\u5408\u6D41\u5F0F\u5904\u7406)").option("--yaml", "YAML \u8F93\u51FA").option("--quiet", "\u9690\u85CF\u975E\u5FC5\u8981\u8F93\u51FA");