@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.
@@ -547,10 +547,11 @@
547
547
  "name": "zentodo.task.add",
548
548
  "domain": "task",
549
549
  "action": "add",
550
- "description": "调用 /taskController/insertTask,使用 FormData 提交。",
550
+ "description": "调用 /taskController/insertTask,使用 JSON 请求体(后端 @RequestBody Tasks)。",
551
551
  "http": {
552
552
  "method": "POST",
553
- "path": "/taskController/insertTask"
553
+ "path": "/taskController/insertTask",
554
+ "bodyFormat": "json"
554
555
  },
555
556
  "scopes": [
556
557
  "write"
@@ -563,41 +564,41 @@
563
564
  "params": [
564
565
  {
565
566
  "name": "title",
566
- "backendName": "taskTitle",
567
+ "backendName": "taskName",
567
568
  "type": "string",
568
569
  "required": true,
569
- "description": "任务标题。"
570
+ "description": "任务标题(映射到 Tasks.taskName)。"
570
571
  },
571
572
  {
572
573
  "name": "desc",
573
- "backendName": "taskDescription",
574
+ "backendName": "taskDesc",
574
575
  "type": "string",
575
- "description": "任务描述。"
576
+ "description": "任务描述(映射到 Tasks.taskDesc)。"
576
577
  },
577
578
  {
578
579
  "name": "due",
579
580
  "backendName": "taskCreateTime",
580
581
  "type": "datetime",
581
582
  "transform": "isoToBackendDateTime",
582
- "description": "计划时间 / 截止时间(ISO)。"
583
+ "description": "计划时间 / 截止时间(ISO,映射到 Tasks.taskCreateTime)。"
583
584
  },
584
585
  {
585
586
  "name": "priority",
586
587
  "backendName": "taskPriority",
587
- "type": "integer",
588
- "description": "优先级 0-4。"
588
+ "type": "string",
589
+ "description": "优先级 0-4(Tasks.taskPriority 存为字符串)。"
589
590
  },
590
591
  {
591
592
  "name": "project_key",
592
- "backendName": "taskProjectKey",
593
+ "backendName": "projectKey",
593
594
  "type": "integer",
594
- "description": "所属项目 projectKey。"
595
+ "description": "所属项目 projectKey(映射到 Tasks.projectKey)。"
595
596
  },
596
597
  {
597
598
  "name": "scene_key",
598
- "backendName": "taskSceneKey",
599
+ "backendName": "sceneKey",
599
600
  "type": "integer",
600
- "description": "所属场景 sceneKey。"
601
+ "description": "所属场景 sceneKey(映射到 Tasks.sceneKey)。"
601
602
  },
602
603
  {
603
604
  "name": "labels",
@@ -605,33 +606,33 @@
605
606
  "type": "array",
606
607
  "itemType": "string",
607
608
  "transform": "arrayToCsv",
608
- "description": "标签(自动拼接为 CSV)。"
609
+ "description": "标签 CSV(Tasks 实体只存单个 labelKey,此参数当前为 no-op,供前端兼容)。"
609
610
  },
610
611
  {
611
612
  "name": "mit",
612
613
  "backendName": "isMIT",
613
614
  "type": "boolean",
614
615
  "transform": "booleanToString",
615
- "description": "是否标记为 MIT(今日最重要)。"
616
+ "description": "是否标记为 MIT(今日最重要,映射到 Tasks.isMIT)。"
616
617
  },
617
618
  {
618
619
  "name": "reminder",
619
- "backendName": "taskReminderTime",
620
+ "backendName": "taskReminderDate",
620
621
  "type": "datetime",
621
622
  "transform": "isoToBackendDateTime",
622
- "description": "提醒时间(ISO)。"
623
+ "description": "提醒时间(ISO,映射到 Tasks.taskReminderDate)。"
623
624
  },
624
625
  {
625
626
  "name": "sub_of",
626
627
  "backendName": "taskParentKey",
627
628
  "type": "integer",
628
- "description": "父任务 taskKey(子任务用)。"
629
+ "description": "Tasks 实体无 taskParentKey 字段,此参数为 no-op;子任务请使用 subtask.sync-push。"
629
630
  },
630
631
  {
631
632
  "name": "quadrant",
632
633
  "backendName": "task4time",
633
634
  "type": "integer",
634
- "description": "时间四象限 0-3。"
635
+ "description": "时间四象限 0-3(映射到 Tasks.task4time)。"
635
636
  }
636
637
  ],
637
638
  "output": {
@@ -642,10 +643,11 @@
642
643
  "name": "zentodo.task.update",
643
644
  "domain": "task",
644
645
  "action": "update",
645
- "description": "调用 /taskController/updateTask。未传入的字段不会被写入 FormData,避免把现有列置空。",
646
+ "description": "调用 /taskController/updateTask(后端 @RequestBody Tasks)。未传入的字段不会被写入 JSON payload,避免把现有列置空。",
646
647
  "http": {
647
648
  "method": "POST",
648
- "path": "/taskController/updateTask"
649
+ "path": "/taskController/updateTask",
650
+ "bodyFormat": "json"
649
651
  },
650
652
  "scopes": [
651
653
  "write"
@@ -665,40 +667,40 @@
665
667
  },
666
668
  {
667
669
  "name": "title",
668
- "backendName": "taskTitle",
670
+ "backendName": "taskName",
669
671
  "type": "string",
670
- "description": "新标题。"
672
+ "description": "新标题(映射到 Tasks.taskName)。"
671
673
  },
672
674
  {
673
675
  "name": "desc",
674
- "backendName": "taskDescription",
676
+ "backendName": "taskDesc",
675
677
  "type": "string",
676
- "description": "新描述。"
678
+ "description": "新描述(映射到 Tasks.taskDesc)。"
677
679
  },
678
680
  {
679
681
  "name": "due",
680
682
  "backendName": "taskCreateTime",
681
683
  "type": "datetime",
682
684
  "transform": "isoToBackendDateTime",
683
- "description": "新计划时间(ISO)。"
685
+ "description": "新计划时间(ISO,映射到 Tasks.taskCreateTime)。"
684
686
  },
685
687
  {
686
688
  "name": "priority",
687
689
  "backendName": "taskPriority",
688
- "type": "integer",
689
- "description": "新优先级。"
690
+ "type": "string",
691
+ "description": "新优先级(Tasks.taskPriority 存为字符串)。"
690
692
  },
691
693
  {
692
694
  "name": "project_key",
693
- "backendName": "taskProjectKey",
695
+ "backendName": "projectKey",
694
696
  "type": "integer",
695
- "description": "迁移到的 projectKey。"
697
+ "description": "迁移到的 projectKey(映射到 Tasks.projectKey)。"
696
698
  },
697
699
  {
698
700
  "name": "scene_key",
699
- "backendName": "taskSceneKey",
701
+ "backendName": "sceneKey",
700
702
  "type": "integer",
701
- "description": "迁移到的 sceneKey。"
703
+ "description": "迁移到的 sceneKey(映射到 Tasks.sceneKey)。"
702
704
  },
703
705
  {
704
706
  "name": "labels",
@@ -706,20 +708,20 @@
706
708
  "type": "array",
707
709
  "itemType": "string",
708
710
  "transform": "arrayToCsv",
709
- "description": "标签(CSV)。"
711
+ "description": "标签 CSV(Tasks 实体只存单个 labelKey,此参数当前为 no-op)。"
710
712
  },
711
713
  {
712
714
  "name": "reminder",
713
- "backendName": "taskReminderTime",
715
+ "backendName": "taskReminderDate",
714
716
  "type": "datetime",
715
717
  "transform": "isoToBackendDateTime",
716
- "description": "新提醒时间(ISO)。"
718
+ "description": "新提醒时间(ISO,映射到 Tasks.taskReminderDate)。"
717
719
  },
718
720
  {
719
721
  "name": "quadrant",
720
722
  "backendName": "task4time",
721
723
  "type": "integer",
722
- "description": "时间四象限。"
724
+ "description": "时间四象限(映射到 Tasks.task4time)。"
723
725
  },
724
726
  {
725
727
  "name": "sync_flag",
@@ -743,7 +745,8 @@
743
745
  "path": "/taskController/updateTask",
744
746
  "pragmas": [
745
747
  "softDelete"
746
- ]
748
+ ],
749
+ "bodyFormat": "json"
747
750
  },
748
751
  "scopes": [
749
752
  "destructive",
@@ -777,7 +780,8 @@
777
780
  "path": "/taskController/updateTask",
778
781
  "pragmas": [
779
782
  "completeTask"
780
- ]
783
+ ],
784
+ "bodyFormat": "json"
781
785
  },
782
786
  "scopes": [
783
787
  "write"
@@ -804,10 +808,11 @@
804
808
  "name": "zentodo.task.uncomplete",
805
809
  "domain": "task",
806
810
  "action": "uncomplete",
807
- "description": "调用 /taskController/updateTask,把 taskState 还原为 1 并清空完成时间。",
811
+ "description": "调用 /taskController/updateTask(@RequestBody),把 taskState 还原为 1 并清空完成时间。",
808
812
  "http": {
809
813
  "method": "POST",
810
- "path": "/taskController/updateTask"
814
+ "path": "/taskController/updateTask",
815
+ "bodyFormat": "json"
811
816
  },
812
817
  "scopes": [
813
818
  "write"
@@ -855,7 +860,8 @@
855
860
  "path": "/taskController/updateTask",
856
861
  "pragmas": [
857
862
  "setMit"
858
- ]
863
+ ],
864
+ "bodyFormat": "json"
859
865
  },
860
866
  "scopes": [
861
867
  "write"
@@ -894,7 +900,8 @@
894
900
  "path": "/taskController/updateTask",
895
901
  "pragmas": [
896
902
  "setQuadrant"
897
- ]
903
+ ],
904
+ "bodyFormat": "json"
898
905
  },
899
906
  "scopes": [
900
907
  "write"
@@ -1205,13 +1212,14 @@
1205
1212
  "name": "zentodo.task.sync-push",
1206
1213
  "domain": "task",
1207
1214
  "action": "sync-push",
1208
- "description": "调用 /taskController/putSyncTask。所有字段通过 FormData 提交,自动剥离 id / rowid。",
1215
+ "description": "调用 /taskController/putSyncTask(@RequestBody Tasks),完整字段提交,自动剥离 id / rowid。",
1209
1216
  "http": {
1210
1217
  "method": "POST",
1211
1218
  "path": "/taskController/putSyncTask",
1212
1219
  "pragmas": [
1213
1220
  "stripAutoKeys"
1214
- ]
1221
+ ],
1222
+ "bodyFormat": "json"
1215
1223
  },
1216
1224
  "scopes": [
1217
1225
  "sync",
@@ -1266,13 +1274,14 @@
1266
1274
  "name": "zentodo.subtask.sync-push",
1267
1275
  "domain": "subtask",
1268
1276
  "action": "sync-push",
1269
- "description": "调用 /subTaskController/putSyncSubTask。所有字段通过 FormData 提交,自动剥离 id/rowid。",
1277
+ "description": "调用 /subTaskController/putSyncSubTask(后端 @RequestBody SubTask)。JSON 体,自动剥离 id/rowid。",
1270
1278
  "http": {
1271
1279
  "method": "POST",
1272
1280
  "path": "/subTaskController/putSyncSubTask",
1273
1281
  "pragmas": [
1274
1282
  "stripAutoKeys"
1275
- ]
1283
+ ],
1284
+ "bodyFormat": "json"
1276
1285
  },
1277
1286
  "scopes": [
1278
1287
  "sync",
@@ -1299,15 +1308,15 @@
1299
1308
  },
1300
1309
  {
1301
1310
  "name": "title",
1302
- "backendName": "subTaskTitle",
1311
+ "backendName": "subTaskName",
1303
1312
  "type": "string",
1304
- "description": "子任务标题。"
1313
+ "description": "子任务标题(映射到 SubTask.subTaskName)。"
1305
1314
  },
1306
1315
  {
1307
1316
  "name": "state",
1308
1317
  "backendName": "subTaskState",
1309
- "type": "integer",
1310
- "description": "状态(0=完成, 1=未完成)。"
1318
+ "type": "boolean",
1319
+ "description": "状态(SubTask.subTaskState 为 Boolean;true=完成)。"
1311
1320
  },
1312
1321
  {
1313
1322
  "name": "sync_flag",
@@ -1378,13 +1387,14 @@
1378
1387
  "name": "zentodo.project.sync-push",
1379
1388
  "domain": "project",
1380
1389
  "action": "sync-push",
1381
- "description": "调用 /projectController/putSyncProject。所有字段通过 FormData 提交,自动剥离 id/rowid。",
1390
+ "description": "调用 /projectController/putSyncProject(后端 @RequestBody Project)。所有字段以 JSON 体提交,自动剥离 id/rowid。",
1382
1391
  "http": {
1383
1392
  "method": "POST",
1384
1393
  "path": "/projectController/putSyncProject",
1385
1394
  "pragmas": [
1386
1395
  "stripAutoKeys"
1387
- ]
1396
+ ],
1397
+ "bodyFormat": "json"
1388
1398
  },
1389
1399
  "scopes": [
1390
1400
  "sync",
@@ -1406,38 +1416,62 @@
1406
1416
  "name": "name",
1407
1417
  "backendName": "projectName",
1408
1418
  "type": "string",
1409
- "description": "项目名称。"
1419
+ "description": "项目名称(映射到 Project.projectName)。"
1410
1420
  },
1411
1421
  {
1412
- "name": "color",
1413
- "backendName": "projectColor",
1422
+ "name": "desc",
1423
+ "backendName": "projectDesc",
1414
1424
  "type": "string",
1415
- "description": "十六进制颜色。"
1425
+ "description": "项目描述(映射到 Project.projectDesc)。"
1416
1426
  },
1417
1427
  {
1418
- "name": "icon",
1419
- "backendName": "projectIcon",
1428
+ "name": "bk_url",
1429
+ "backendName": "projectBKUrl",
1420
1430
  "type": "string",
1421
- "description": "图标标识。"
1431
+ "description": "项目背景图 URL(映射到 Project.projectBKUrl)。"
1422
1432
  },
1423
1433
  {
1424
- "name": "parent_key",
1425
- "backendName": "projectParentKey",
1434
+ "name": "header_url",
1435
+ "backendName": "projectHeaderUrl",
1436
+ "type": "string",
1437
+ "description": "项目头图 URL(映射到 Project.projectHeaderUrl)。"
1438
+ },
1439
+ {
1440
+ "name": "label_key",
1441
+ "backendName": "labelKey",
1426
1442
  "type": "integer",
1427
- "description": "父项目 projectKey(用于子项目)。"
1443
+ "description": "关联标签 labelKey(映射到 Project.labelKey)。"
1444
+ },
1445
+ {
1446
+ "name": "target_key",
1447
+ "backendName": "targetKey",
1448
+ "type": "integer",
1449
+ "description": "关联目标 targetKey(映射到 Project.targetKey)。"
1428
1450
  },
1429
1451
  {
1430
1452
  "name": "state",
1431
1453
  "backendName": "projectState",
1432
1454
  "type": "integer",
1433
- "description": "0=未开始, 1=进行中, 2=已完成, 3=已暂停, 4=已取消。"
1455
+ "description": "项目状态(映射到 Project.projectState)。"
1434
1456
  },
1435
1457
  {
1436
- "name": "archived",
1437
- "backendName": "isArchived",
1458
+ "name": "star",
1459
+ "backendName": "isStar",
1438
1460
  "type": "boolean",
1439
- "transform": "booleanToString",
1440
- "description": "归档标记。"
1461
+ "description": "是否标星(映射到 Project.isStar)。"
1462
+ },
1463
+ {
1464
+ "name": "is_templete",
1465
+ "backendName": "isTemplete",
1466
+ "type": "boolean",
1467
+ "description": "是否模板(映射到 Project.isTemplete)。"
1468
+ },
1469
+ {
1470
+ "name": "end_time",
1471
+ "backendName": "endTime",
1472
+ "type": "datetime",
1473
+ "transform": "isoToBackendDateTime",
1474
+ "description": "项目结束时间(ISO,映射到 Project.endTime)。"
1441
1475
  },
1442
1476
  {
1443
1477
  "name": "sync_flag",
@@ -1619,13 +1653,14 @@
1619
1653
  "name": "zentodo.subproject.sync-push",
1620
1654
  "domain": "subproject",
1621
1655
  "action": "sync-push",
1622
- "description": "调用 /subProjectController/putSyncSubProject。",
1656
+ "description": "调用 /subProjectController/putSyncSubProject(后端 @RequestBody SubProject)JSON 体。",
1623
1657
  "http": {
1624
1658
  "method": "POST",
1625
1659
  "path": "/subProjectController/putSyncSubProject",
1626
1660
  "pragmas": [
1627
1661
  "stripAutoKeys"
1628
- ]
1662
+ ],
1663
+ "bodyFormat": "json"
1629
1664
  },
1630
1665
  "scopes": [
1631
1666
  "sync",
@@ -1639,9 +1674,9 @@
1639
1674
  "params": [
1640
1675
  {
1641
1676
  "name": "sub_project_key",
1642
- "backendName": "subProjectKey",
1677
+ "backendName": "spKey",
1643
1678
  "type": "integer",
1644
- "description": "已存在的子项目 key。"
1679
+ "description": "已存在的子项目 key(映射到 SubProject.spKey)。"
1645
1680
  },
1646
1681
  {
1647
1682
  "name": "project_key",
@@ -1652,9 +1687,27 @@
1652
1687
  },
1653
1688
  {
1654
1689
  "name": "name",
1655
- "backendName": "subProjectName",
1690
+ "backendName": "spName",
1656
1691
  "type": "string",
1657
- "description": "子项目名称。"
1692
+ "description": "子项目名称(映射到 SubProject.spName)。"
1693
+ },
1694
+ {
1695
+ "name": "desc",
1696
+ "backendName": "spDesc",
1697
+ "type": "string",
1698
+ "description": "子项目描述(映射到 SubProject.spDesc)。"
1699
+ },
1700
+ {
1701
+ "name": "bk_url",
1702
+ "backendName": "spBKUrl",
1703
+ "type": "string",
1704
+ "description": "子项目背景图(映射到 SubProject.spBKUrl)。"
1705
+ },
1706
+ {
1707
+ "name": "state",
1708
+ "backendName": "spState",
1709
+ "type": "integer",
1710
+ "description": "子项目状态(映射到 SubProject.spState)。"
1658
1711
  },
1659
1712
  {
1660
1713
  "name": "sync_flag",
@@ -1725,13 +1778,14 @@
1725
1778
  "name": "zentodo.scene.sync-push",
1726
1779
  "domain": "scene",
1727
1780
  "action": "sync-push",
1728
- "description": "调用 /sceneController/putSyncScene。",
1781
+ "description": "调用 /sceneController/putSyncScene(后端 @RequestBody Scene)JSON 体。Scene 实体仅含 sceneName / sceneState / sceneKey,没有 icon / desc 字段。",
1729
1782
  "http": {
1730
1783
  "method": "POST",
1731
1784
  "path": "/sceneController/putSyncScene",
1732
1785
  "pragmas": [
1733
1786
  "stripAutoKeys"
1734
- ]
1787
+ ],
1788
+ "bodyFormat": "json"
1735
1789
  },
1736
1790
  "scopes": [
1737
1791
  "sync",
@@ -1753,19 +1807,13 @@
1753
1807
  "name": "name",
1754
1808
  "backendName": "sceneName",
1755
1809
  "type": "string",
1756
- "description": "场景名称。"
1810
+ "description": "场景名称(映射到 Scene.sceneName)。"
1757
1811
  },
1758
1812
  {
1759
- "name": "icon",
1760
- "backendName": "sceneIcon",
1761
- "type": "string",
1762
- "description": "图标标识。"
1763
- },
1764
- {
1765
- "name": "desc",
1766
- "backendName": "sceneDescription",
1767
- "type": "string",
1768
- "description": "场景描述。"
1813
+ "name": "state",
1814
+ "backendName": "sceneState",
1815
+ "type": "boolean",
1816
+ "description": "场景启用状态(Scene.sceneState 为 Boolean)。"
1769
1817
  },
1770
1818
  {
1771
1819
  "name": "sync_flag",
@@ -1836,13 +1884,14 @@
1836
1884
  "name": "zentodo.target.sync-push",
1837
1885
  "domain": "target",
1838
1886
  "action": "sync-push",
1839
- "description": "调用 /targetController/putSyncTarget。",
1887
+ "description": "调用 /targetController/putSyncTarget(后端 @RequestBody Target)JSON 体。Target 实体用 ttName/ttDesc/ttState 系列字段,不是 targetTitle。",
1840
1888
  "http": {
1841
1889
  "method": "POST",
1842
1890
  "path": "/targetController/putSyncTarget",
1843
1891
  "pragmas": [
1844
1892
  "stripAutoKeys"
1845
- ]
1893
+ ],
1894
+ "bodyFormat": "json"
1846
1895
  },
1847
1896
  "scopes": [
1848
1897
  "sync",
@@ -1862,22 +1911,59 @@
1862
1911
  },
1863
1912
  {
1864
1913
  "name": "title",
1865
- "backendName": "targetTitle",
1914
+ "backendName": "ttName",
1866
1915
  "type": "string",
1867
- "description": "目标标题。"
1916
+ "description": "目标标题(映射到 Target.ttName)。"
1868
1917
  },
1869
1918
  {
1870
1919
  "name": "desc",
1871
- "backendName": "targetDescription",
1920
+ "backendName": "ttDesc",
1921
+ "type": "string",
1922
+ "description": "目标描述(映射到 Target.ttDesc)。"
1923
+ },
1924
+ {
1925
+ "name": "bk_url",
1926
+ "backendName": "bkUrl",
1872
1927
  "type": "string",
1873
- "description": "目标描述。"
1928
+ "description": "背景图(映射到 Target.bkUrl)。"
1929
+ },
1930
+ {
1931
+ "name": "state",
1932
+ "backendName": "ttState",
1933
+ "type": "integer",
1934
+ "description": "状态(映射到 Target.ttState)。"
1935
+ },
1936
+ {
1937
+ "name": "label_key",
1938
+ "backendName": "labelKey",
1939
+ "type": "integer",
1940
+ "description": "关联标签 labelKey。"
1941
+ },
1942
+ {
1943
+ "name": "label_name",
1944
+ "backendName": "labelName",
1945
+ "type": "string",
1946
+ "description": "标签名快照(映射到 Target.labelName)。"
1874
1947
  },
1875
1948
  {
1876
1949
  "name": "deadline",
1877
- "backendName": "targetDeadline",
1878
- "type": "date",
1879
- "transform": "isoToBackendDate",
1880
- "description": "截止日期(ISO)。"
1950
+ "backendName": "endTime",
1951
+ "type": "datetime",
1952
+ "transform": "isoToBackendDateTime",
1953
+ "description": "截止日期(ISO,映射到 Target.endTime)。"
1954
+ },
1955
+ {
1956
+ "name": "start_time",
1957
+ "backendName": "startTime",
1958
+ "type": "datetime",
1959
+ "transform": "isoToBackendDateTime",
1960
+ "description": "开始日期(ISO,映射到 Target.startTime)。"
1961
+ },
1962
+ {
1963
+ "name": "reward_value",
1964
+ "backendName": "rewardValue",
1965
+ "type": "integer",
1966
+ "description": "完成奖励(映射到 Target.rewardValue)。"
1881
1967
  },
1882
1968
  {
1883
1969
  "name": "sync_flag",
@@ -1948,13 +2034,14 @@
1948
2034
  "name": "zentodo.label.sync-push",
1949
2035
  "domain": "label",
1950
2036
  "action": "sync-push",
1951
- "description": "调用 /labelController/putSyncLabel。",
2037
+ "description": "调用 /labelController/putSyncLabel(后端 @RequestBody Label)JSON 体。Label 实体颜色字段是 iconColor,不是 labelColor;另有 labelDesc/labelBKUrl/iconIndex/labelType。",
1952
2038
  "http": {
1953
2039
  "method": "POST",
1954
2040
  "path": "/labelController/putSyncLabel",
1955
2041
  "pragmas": [
1956
2042
  "stripAutoKeys"
1957
- ]
2043
+ ],
2044
+ "bodyFormat": "json"
1958
2045
  },
1959
2046
  "scopes": [
1960
2047
  "sync",
@@ -1976,13 +2063,37 @@
1976
2063
  "name": "name",
1977
2064
  "backendName": "labelName",
1978
2065
  "type": "string",
1979
- "description": "标签名。"
2066
+ "description": "标签名(映射到 Label.labelName)。"
2067
+ },
2068
+ {
2069
+ "name": "desc",
2070
+ "backendName": "labelDesc",
2071
+ "type": "string",
2072
+ "description": "标签描述(映射到 Label.labelDesc)。"
1980
2073
  },
1981
2074
  {
1982
2075
  "name": "color",
1983
- "backendName": "labelColor",
2076
+ "backendName": "iconColor",
2077
+ "type": "string",
2078
+ "description": "图标/标签颜色十六进制(映射到 Label.iconColor)。"
2079
+ },
2080
+ {
2081
+ "name": "icon_index",
2082
+ "backendName": "iconIndex",
2083
+ "type": "integer",
2084
+ "description": "图标索引(映射到 Label.iconIndex)。"
2085
+ },
2086
+ {
2087
+ "name": "label_type",
2088
+ "backendName": "labelType",
2089
+ "type": "integer",
2090
+ "description": "标签类型:0 子任务 / 1 任务 / 2 项目 / 3 目标(映射到 Label.labelType)。"
2091
+ },
2092
+ {
2093
+ "name": "bk_url",
2094
+ "backendName": "labelBKUrl",
1984
2095
  "type": "string",
1985
- "description": "十六进制颜色。"
2096
+ "description": "背景图 URL(映射到 Label.labelBKUrl)。"
1986
2097
  },
1987
2098
  {
1988
2099
  "name": "sync_flag",
@@ -2059,7 +2170,7 @@
2059
2170
  "name": "zentodo.toplabel.sync-push",
2060
2171
  "domain": "toplabel",
2061
2172
  "action": "sync-push",
2062
- "description": "调用 /topLabelController/putSyncTopLabel",
2173
+ "description": "调用 /topLabelController/putSyncTopLabel。注意:后端暂未提供 TopLabel 实体/控制器,此 capability 为占位。",
2063
2174
  "http": {
2064
2175
  "method": "POST",
2065
2176
  "path": "/topLabelController/putSyncTopLabel",
@@ -2158,13 +2269,14 @@
2158
2269
  "name": "zentodo.quadrant.sync-push",
2159
2270
  "domain": "quadrant",
2160
2271
  "action": "sync-push",
2161
- "description": "调用 /quadrantController/putSyncQuadrant。",
2272
+ "description": "调用 /quadrantController/putSyncQuadrant(后端 @RequestBody Quadrant)JSON 体。Quadrant 实体用 meKey 作主键,字段为 time1..4/color1..4/rules。",
2162
2273
  "http": {
2163
2274
  "method": "POST",
2164
2275
  "path": "/quadrantController/putSyncQuadrant",
2165
2276
  "pragmas": [
2166
2277
  "stripAutoKeys"
2167
- ]
2278
+ ],
2279
+ "bodyFormat": "json"
2168
2280
  },
2169
2281
  "scopes": [
2170
2282
  "sync",
@@ -2177,22 +2289,64 @@
2177
2289
  },
2178
2290
  "params": [
2179
2291
  {
2180
- "name": "quadrant_key",
2181
- "backendName": "quadrantKey",
2292
+ "name": "me_key",
2293
+ "backendName": "meKey",
2182
2294
  "type": "integer",
2183
- "description": "已存在的 quadrantKey。"
2295
+ "description": "已存在的 meKey(映射到 Quadrant.meKey,四象限配置以 meKey 唯一识别)。"
2184
2296
  },
2185
2297
  {
2186
- "name": "title",
2187
- "backendName": "quadrantTitle",
2298
+ "name": "time1",
2299
+ "backendName": "time1",
2188
2300
  "type": "string",
2189
- "description": "象限标题。"
2301
+ "description": "第 1 象限时间值(映射到 Quadrant.time1)。"
2190
2302
  },
2191
2303
  {
2192
- "name": "index",
2193
- "backendName": "quadrantIndex",
2194
- "type": "integer",
2195
- "description": "象限索引 0..3。"
2304
+ "name": "time2",
2305
+ "backendName": "time2",
2306
+ "type": "string",
2307
+ "description": " 2 象限时间值。"
2308
+ },
2309
+ {
2310
+ "name": "time3",
2311
+ "backendName": "time3",
2312
+ "type": "string",
2313
+ "description": "第 3 象限时间值。"
2314
+ },
2315
+ {
2316
+ "name": "time4",
2317
+ "backendName": "time4",
2318
+ "type": "string",
2319
+ "description": "第 4 象限时间值。"
2320
+ },
2321
+ {
2322
+ "name": "color1",
2323
+ "backendName": "color1",
2324
+ "type": "string",
2325
+ "description": "第 1 象限颜色。"
2326
+ },
2327
+ {
2328
+ "name": "color2",
2329
+ "backendName": "color2",
2330
+ "type": "string",
2331
+ "description": "第 2 象限颜色。"
2332
+ },
2333
+ {
2334
+ "name": "color3",
2335
+ "backendName": "color3",
2336
+ "type": "string",
2337
+ "description": "第 3 象限颜色。"
2338
+ },
2339
+ {
2340
+ "name": "color4",
2341
+ "backendName": "color4",
2342
+ "type": "string",
2343
+ "description": "第 4 象限颜色。"
2344
+ },
2345
+ {
2346
+ "name": "rules",
2347
+ "backendName": "rules",
2348
+ "type": "string",
2349
+ "description": "象限规则配置(JSON 字符串)。"
2196
2350
  },
2197
2351
  {
2198
2352
  "name": "sync_flag",
@@ -2263,13 +2417,14 @@
2263
2417
  "name": "zentodo.timeline.sync-push",
2264
2418
  "domain": "timeline",
2265
2419
  "action": "sync-push",
2266
- "description": "调用 /timeLineController/putSyncTimeLine。",
2420
+ "description": "调用 /timeLineController/putSyncTimeLine(后端 @RequestBody TimeLine)JSON 体。TimeLine 实体字段为 tlKey/tlName/tlDesc/tlType/tlImageUrl/startTime/endTime,无 timeLineTitle/Content/Time 字段。",
2267
2421
  "http": {
2268
2422
  "method": "POST",
2269
2423
  "path": "/timeLineController/putSyncTimeLine",
2270
2424
  "pragmas": [
2271
2425
  "stripAutoKeys"
2272
- ]
2426
+ ],
2427
+ "bodyFormat": "json"
2273
2428
  },
2274
2429
  "scopes": [
2275
2430
  "sync",
@@ -2283,28 +2438,71 @@
2283
2438
  "params": [
2284
2439
  {
2285
2440
  "name": "time_line_key",
2286
- "backendName": "timeLineKey",
2441
+ "backendName": "tlKey",
2287
2442
  "type": "integer",
2288
- "description": "已存在的 timeLineKey。"
2443
+ "description": "已存在的 tlKey(映射到 TimeLine.tlKey)。"
2289
2444
  },
2290
2445
  {
2291
2446
  "name": "title",
2292
- "backendName": "timeLineTitle",
2447
+ "backendName": "tlName",
2293
2448
  "type": "string",
2294
- "description": "标题。"
2449
+ "description": "标题(映射到 TimeLine.tlName)。"
2295
2450
  },
2296
2451
  {
2297
2452
  "name": "content",
2298
- "backendName": "timeLineContent",
2453
+ "backendName": "tlDesc",
2299
2454
  "type": "string",
2300
- "description": "正文。"
2455
+ "description": "正文/描述(映射到 TimeLine.tlDesc)。"
2301
2456
  },
2302
2457
  {
2303
- "name": "time",
2304
- "backendName": "timeLineTime",
2458
+ "name": "type",
2459
+ "backendName": "tlType",
2460
+ "type": "string",
2461
+ "description": "类型(映射到 TimeLine.tlType)。"
2462
+ },
2463
+ {
2464
+ "name": "image_url",
2465
+ "backendName": "tlImageUrl",
2466
+ "type": "string",
2467
+ "description": "配图(映射到 TimeLine.tlImageUrl)。"
2468
+ },
2469
+ {
2470
+ "name": "start_time",
2471
+ "backendName": "startTime",
2472
+ "type": "datetime",
2473
+ "transform": "isoToBackendDateTime",
2474
+ "description": "开始时间(ISO,映射到 TimeLine.startTime)。"
2475
+ },
2476
+ {
2477
+ "name": "end_time",
2478
+ "backendName": "endTime",
2305
2479
  "type": "datetime",
2306
2480
  "transform": "isoToBackendDateTime",
2307
- "description": "时间戳(ISO)。"
2481
+ "description": "结束时间(ISO,映射到 TimeLine.endTime)。"
2482
+ },
2483
+ {
2484
+ "name": "match_key",
2485
+ "backendName": "matchKey",
2486
+ "type": "integer",
2487
+ "description": "关联对象 key(task/project/target,根据 tlType 解释)。"
2488
+ },
2489
+ {
2490
+ "name": "target_key",
2491
+ "backendName": "targetKey",
2492
+ "type": "integer",
2493
+ "description": "关联目标 targetKey。"
2494
+ },
2495
+ {
2496
+ "name": "project_key",
2497
+ "backendName": "projectKey",
2498
+ "type": "integer",
2499
+ "description": "关联项目 projectKey。"
2500
+ },
2501
+ {
2502
+ "name": "label_name",
2503
+ "backendName": "labelName",
2504
+ "type": "string",
2505
+ "description": "标签名快照(映射到 TimeLine.labelName)。"
2308
2506
  },
2309
2507
  {
2310
2508
  "name": "sync_flag",
@@ -2539,13 +2737,14 @@
2539
2737
  "name": "zentodo.attach.sync-push",
2540
2738
  "domain": "attach",
2541
2739
  "action": "sync-push",
2542
- "description": "调用 /attachmentController/putSyncAttchment。",
2740
+ "description": "调用 /attachmentController/putSyncAttchment(后端 @RequestBody Attachment)JSON 体,仅元数据,不包含文件二进制。Attachment 实体以 athKey 为主键,通过 matchKey 关联任务/导图节点。",
2543
2741
  "http": {
2544
2742
  "method": "POST",
2545
2743
  "path": "/attachmentController/putSyncAttchment",
2546
2744
  "pragmas": [
2547
2745
  "stripAutoKeys"
2548
- ]
2746
+ ],
2747
+ "bodyFormat": "json"
2549
2748
  },
2550
2749
  "scopes": [
2551
2750
  "sync",
@@ -2559,9 +2758,45 @@
2559
2758
  "params": [
2560
2759
  {
2561
2760
  "name": "attachment_key",
2562
- "backendName": "attachmentKey",
2761
+ "backendName": "athKey",
2762
+ "type": "integer",
2763
+ "description": "已存在的 athKey(映射到 Attachment.athKey)。"
2764
+ },
2765
+ {
2766
+ "name": "match_key",
2767
+ "backendName": "matchKey",
2563
2768
  "type": "integer",
2564
- "description": "已存在的 attachmentKey。"
2769
+ "description": "关联对象 key(映射到 Attachment.matchKey)。"
2770
+ },
2771
+ {
2772
+ "name": "file_url",
2773
+ "backendName": "fileUrl",
2774
+ "type": "string",
2775
+ "description": "客户端本地文件 URL(映射到 Attachment.fileUrl)。"
2776
+ },
2777
+ {
2778
+ "name": "service_file_url",
2779
+ "backendName": "serviceFileUrl",
2780
+ "type": "string",
2781
+ "description": "服务端文件 URL(映射到 Attachment.serviceFileUrl)。"
2782
+ },
2783
+ {
2784
+ "name": "file_type",
2785
+ "backendName": "fileType",
2786
+ "type": "string",
2787
+ "description": "文件类型(映射到 Attachment.fileType)。"
2788
+ },
2789
+ {
2790
+ "name": "file_desc",
2791
+ "backendName": "fileDesc",
2792
+ "type": "string",
2793
+ "description": "文件描述(映射到 Attachment.fileDesc)。"
2794
+ },
2795
+ {
2796
+ "name": "remark",
2797
+ "backendName": "remark",
2798
+ "type": "string",
2799
+ "description": "备注(映射到 Attachment.remark)。"
2565
2800
  },
2566
2801
  {
2567
2802
  "name": "sync_flag",
@@ -2750,13 +2985,14 @@
2750
2985
  "name": "zentodo.pomo.sync-push-worker",
2751
2986
  "domain": "pomo",
2752
2987
  "action": "sync-push-worker",
2753
- "description": "调用 /tomatoWorkerController/putSyncTomatoWorker。",
2988
+ "description": "调用 /tomatoWorkerController/putSyncTomatoWorker(后端 @RequestBody TomatoWorker)JSON 体。TomatoWorker 实体以 twKey 为主键,通过 matchKey 关联任务。",
2754
2989
  "http": {
2755
2990
  "method": "POST",
2756
2991
  "path": "/tomatoWorkerController/putSyncTomatoWorker",
2757
2992
  "pragmas": [
2758
2993
  "stripAutoKeys"
2759
- ]
2994
+ ],
2995
+ "bodyFormat": "json"
2760
2996
  },
2761
2997
  "scopes": [
2762
2998
  "sync",
@@ -2770,15 +3006,34 @@
2770
3006
  "params": [
2771
3007
  {
2772
3008
  "name": "tomato_key",
2773
- "backendName": "tomatoKey",
3009
+ "backendName": "twKey",
2774
3010
  "type": "integer",
2775
- "description": "已存在的 tomatoKey。"
3011
+ "description": "已存在的 twKey(映射到 TomatoWorker.twKey)。"
2776
3012
  },
2777
3013
  {
2778
3014
  "name": "task_key",
2779
- "backendName": "taskKey",
3015
+ "backendName": "matchKey",
2780
3016
  "type": "integer",
2781
- "description": "任务 taskKey。"
3017
+ "description": "关联任务的 taskKey(TomatoWorker 用 matchKey 关联)。"
3018
+ },
3019
+ {
3020
+ "name": "is_tomato",
3021
+ "backendName": "isTomato",
3022
+ "type": "boolean",
3023
+ "description": "是否番茄钟记录(映射到 TomatoWorker.isTomato)。"
3024
+ },
3025
+ {
3026
+ "name": "start_time",
3027
+ "backendName": "tomatoStartTime",
3028
+ "type": "datetime",
3029
+ "transform": "isoToBackendDateTime",
3030
+ "description": "开始时间(映射到 TomatoWorker.tomatoStartTime)。"
3031
+ },
3032
+ {
3033
+ "name": "execute_time",
3034
+ "backendName": "tomatoExecuteTime",
3035
+ "type": "string",
3036
+ "description": "实际执行时长(映射到 TomatoWorker.tomatoExecuteTime)。"
2782
3037
  },
2783
3038
  {
2784
3039
  "name": "sync_flag",
@@ -2818,13 +3073,14 @@
2818
3073
  "name": "zentodo.pomo.config-set",
2819
3074
  "domain": "pomo",
2820
3075
  "action": "config-set",
2821
- "description": "调用 /tomatoConfigController/putSyncTomatoConfig。",
3076
+ "description": "调用 /tomatoConfigController/putSyncTomatoConfig(后端 @RequestBody TomatoConfig)JSON 体。TomatoConfig 实体字段为 tcKey/workTime/shortRestTime/longRestTime/tomatoCircle/wirelessMode。",
2822
3077
  "http": {
2823
3078
  "method": "POST",
2824
3079
  "path": "/tomatoConfigController/putSyncTomatoConfig",
2825
3080
  "pragmas": [
2826
3081
  "stripAutoKeys"
2827
- ]
3082
+ ],
3083
+ "bodyFormat": "json"
2828
3084
  },
2829
3085
  "scopes": [
2830
3086
  "sync",
@@ -2838,33 +3094,39 @@
2838
3094
  "params": [
2839
3095
  {
2840
3096
  "name": "config_key",
2841
- "backendName": "configKey",
3097
+ "backendName": "tcKey",
2842
3098
  "type": "integer",
2843
- "description": "已存在的 configKey。"
3099
+ "description": "已存在的 tcKey(映射到 TomatoConfig.tcKey)。"
2844
3100
  },
2845
3101
  {
2846
3102
  "name": "focus_duration_sec",
2847
- "backendName": "focusDuration",
3103
+ "backendName": "workTime",
2848
3104
  "type": "integer",
2849
- "description": "专注秒数。"
3105
+ "description": "专注秒数(映射到 TomatoConfig.workTime)。"
2850
3106
  },
2851
3107
  {
2852
3108
  "name": "break_duration_sec",
2853
- "backendName": "breakDuration",
3109
+ "backendName": "shortRestTime",
2854
3110
  "type": "integer",
2855
- "description": "短休秒数。"
3111
+ "description": "短休秒数(映射到 TomatoConfig.shortRestTime)。"
2856
3112
  },
2857
3113
  {
2858
3114
  "name": "long_break_duration_sec",
2859
- "backendName": "longBreakDuration",
3115
+ "backendName": "longRestTime",
2860
3116
  "type": "integer",
2861
- "description": "长休秒数。"
3117
+ "description": "长休秒数(映射到 TomatoConfig.longRestTime)。"
2862
3118
  },
2863
3119
  {
2864
3120
  "name": "long_break_every",
2865
- "backendName": "longBreakEvery",
3121
+ "backendName": "tomatoCircle",
2866
3122
  "type": "integer",
2867
- "description": "每多少轮后长休。"
3123
+ "description": "每多少轮后长休(映射到 TomatoConfig.tomatoCircle)。"
3124
+ },
3125
+ {
3126
+ "name": "wireless_mode",
3127
+ "backendName": "wirelessMode",
3128
+ "type": "boolean",
3129
+ "description": "是否无线模式(映射到 TomatoConfig.wirelessMode)。"
2868
3130
  },
2869
3131
  {
2870
3132
  "name": "sync_flag",
@@ -3036,10 +3298,11 @@
3036
3298
  "name": "zentodo.workstate.update",
3037
3299
  "domain": "workstate",
3038
3300
  "action": "update",
3039
- "description": "调用 /workStateController/updateWorkState。",
3301
+ "description": "调用 /workStateController/updateWorkState(后端 @RequestBody WorkState)JSON 体。WorkState 实体以 wsKey 为主键,字段为 startTime/matchKey/workType/tomatoState/tomatoRound(无 title/note 字段)。",
3040
3302
  "http": {
3041
3303
  "method": "POST",
3042
- "path": "/workStateController/updateWorkState"
3304
+ "path": "/workStateController/updateWorkState",
3305
+ "bodyFormat": "json"
3043
3306
  },
3044
3307
  "scopes": [
3045
3308
  "write"
@@ -3052,22 +3315,41 @@
3052
3315
  "params": [
3053
3316
  {
3054
3317
  "name": "work_state_key",
3055
- "backendName": "workStateKey",
3056
- "type": "string",
3318
+ "backendName": "wsKey",
3319
+ "type": "integer",
3057
3320
  "required": true,
3058
- "description": "工作状态 key。"
3321
+ "description": "工作状态 key(映射到 WorkState.wsKey)。"
3059
3322
  },
3060
3323
  {
3061
- "name": "title",
3062
- "backendName": "title",
3063
- "type": "string",
3064
- "description": "新标题。"
3324
+ "name": "start_time",
3325
+ "backendName": "startTime",
3326
+ "type": "datetime",
3327
+ "transform": "isoToBackendDateTime",
3328
+ "description": "开始时间(映射到 WorkState.startTime)。"
3065
3329
  },
3066
3330
  {
3067
- "name": "note",
3068
- "backendName": "note",
3069
- "type": "string",
3070
- "description": "备注。"
3331
+ "name": "match_key",
3332
+ "backendName": "matchKey",
3333
+ "type": "integer",
3334
+ "description": "关联对象 key(映射到 WorkState.matchKey)。"
3335
+ },
3336
+ {
3337
+ "name": "work_type",
3338
+ "backendName": "workType",
3339
+ "type": "integer",
3340
+ "description": "工作类型(映射到 WorkState.workType)。"
3341
+ },
3342
+ {
3343
+ "name": "tomato_state",
3344
+ "backendName": "tomatoState",
3345
+ "type": "integer",
3346
+ "description": "番茄钟状态(映射到 WorkState.tomatoState)。"
3347
+ },
3348
+ {
3349
+ "name": "tomato_round",
3350
+ "backendName": "tomatoRound",
3351
+ "type": "integer",
3352
+ "description": "番茄钟轮次(映射到 WorkState.tomatoRound)。"
3071
3353
  }
3072
3354
  ],
3073
3355
  "output": {
@@ -3131,13 +3413,14 @@
3131
3413
  "name": "zentodo.workstate.sync-push",
3132
3414
  "domain": "workstate",
3133
3415
  "action": "sync-push",
3134
- "description": "调用 /workStateController/putSyncWorkState。",
3416
+ "description": "调用 /workStateController/putSyncWorkState(后端 @RequestBody WorkState)JSON 体。WorkState 实体以 wsKey 为主键。",
3135
3417
  "http": {
3136
3418
  "method": "POST",
3137
3419
  "path": "/workStateController/putSyncWorkState",
3138
3420
  "pragmas": [
3139
3421
  "stripAutoKeys"
3140
- ]
3422
+ ],
3423
+ "bodyFormat": "json"
3141
3424
  },
3142
3425
  "scopes": [
3143
3426
  "sync",
@@ -3151,9 +3434,28 @@
3151
3434
  "params": [
3152
3435
  {
3153
3436
  "name": "work_state_key",
3154
- "backendName": "workStateKey",
3155
- "type": "string",
3156
- "description": "已存在的 key。"
3437
+ "backendName": "wsKey",
3438
+ "type": "integer",
3439
+ "description": "已存在的 wsKey(映射到 WorkState.wsKey)。"
3440
+ },
3441
+ {
3442
+ "name": "start_time",
3443
+ "backendName": "startTime",
3444
+ "type": "datetime",
3445
+ "transform": "isoToBackendDateTime",
3446
+ "description": "开始时间(映射到 WorkState.startTime)。"
3447
+ },
3448
+ {
3449
+ "name": "match_key",
3450
+ "backendName": "matchKey",
3451
+ "type": "integer",
3452
+ "description": "关联对象 key(映射到 WorkState.matchKey)。"
3453
+ },
3454
+ {
3455
+ "name": "work_type",
3456
+ "backendName": "workType",
3457
+ "type": "integer",
3458
+ "description": "工作类型(映射到 WorkState.workType)。"
3157
3459
  },
3158
3460
  {
3159
3461
  "name": "sync_flag",
@@ -3382,13 +3684,14 @@
3382
3684
  "name": "zentodo.mindmap.sync-push",
3383
3685
  "domain": "mindmap",
3384
3686
  "action": "sync-push",
3385
- "description": "调用 /gdMetaController/putSyncGDMeta。",
3687
+ "description": "调用 /gdMetaController/putSyncGDMeta(后端 @RequestBody GDMeta)JSON 体。GDMeta 实体以 meKey 为主键,字段为 title/metaDesc/content/iconUrl/bkUrl/templeteName/matchKey 等。",
3386
3688
  "http": {
3387
3689
  "method": "POST",
3388
3690
  "path": "/gdMetaController/putSyncGDMeta",
3389
3691
  "pragmas": [
3390
3692
  "stripAutoKeys"
3391
- ]
3693
+ ],
3694
+ "bodyFormat": "json"
3392
3695
  },
3393
3696
  "scopes": [
3394
3697
  "sync",
@@ -3402,21 +3705,69 @@
3402
3705
  "params": [
3403
3706
  {
3404
3707
  "name": "gd_meta_key",
3405
- "backendName": "gdMetaKey",
3708
+ "backendName": "meKey",
3406
3709
  "type": "integer",
3407
- "description": "已存在的 gdMetaKey。"
3710
+ "description": "已存在的 meKey(映射到 GDMeta.meKey)。"
3408
3711
  },
3409
3712
  {
3410
3713
  "name": "parent_key",
3411
- "backendName": "parentKey",
3714
+ "backendName": "matchKey",
3412
3715
  "type": "integer",
3413
- "description": "父节点 key。"
3716
+ "description": "父/关联节点 key(映射到 GDMeta.matchKey)。"
3717
+ },
3718
+ {
3719
+ "name": "title",
3720
+ "backendName": "title",
3721
+ "type": "string",
3722
+ "description": "节点标题(映射到 GDMeta.title)。"
3414
3723
  },
3415
3724
  {
3416
3725
  "name": "content",
3417
3726
  "backendName": "content",
3418
3727
  "type": "string",
3419
- "description": "节点内容。"
3728
+ "description": "节点内容(映射到 GDMeta.content)。"
3729
+ },
3730
+ {
3731
+ "name": "desc",
3732
+ "backendName": "metaDesc",
3733
+ "type": "string",
3734
+ "description": "节点描述(映射到 GDMeta.metaDesc)。"
3735
+ },
3736
+ {
3737
+ "name": "icon_url",
3738
+ "backendName": "iconUrl",
3739
+ "type": "string",
3740
+ "description": "图标 URL(映射到 GDMeta.iconUrl)。"
3741
+ },
3742
+ {
3743
+ "name": "bk_url",
3744
+ "backendName": "bkUrl",
3745
+ "type": "string",
3746
+ "description": "背景图(映射到 GDMeta.bkUrl)。"
3747
+ },
3748
+ {
3749
+ "name": "templete_name",
3750
+ "backendName": "templeteName",
3751
+ "type": "string",
3752
+ "description": "模板名称(映射到 GDMeta.templeteName)。"
3753
+ },
3754
+ {
3755
+ "name": "is_templete",
3756
+ "backendName": "isTemplete",
3757
+ "type": "integer",
3758
+ "description": "是否模板(映射到 GDMeta.isTemplete)。"
3759
+ },
3760
+ {
3761
+ "name": "templete_key",
3762
+ "backendName": "templeteKey",
3763
+ "type": "integer",
3764
+ "description": "模板 key(映射到 GDMeta.templeteKey)。"
3765
+ },
3766
+ {
3767
+ "name": "state",
3768
+ "backendName": "state",
3769
+ "type": "integer",
3770
+ "description": "状态(映射到 GDMeta.state)。"
3420
3771
  },
3421
3772
  {
3422
3773
  "name": "sync_flag",
@@ -3487,13 +3838,14 @@
3487
3838
  "name": "zentodo.reward.store-sync-push",
3488
3839
  "domain": "reward",
3489
3840
  "action": "store-sync-push",
3490
- "description": "调用 /rewardStoreController/putSyncRewardStore。",
3841
+ "description": "调用 /rewardStoreController/putSyncRewardStore(后端 @RequestBody RewardStore)JSON 体。RewardStore 实体用 rsKey/rsName/rsPrice/rsDesc 系列字段。",
3491
3842
  "http": {
3492
3843
  "method": "POST",
3493
3844
  "path": "/rewardStoreController/putSyncRewardStore",
3494
3845
  "pragmas": [
3495
3846
  "stripAutoKeys"
3496
- ]
3847
+ ],
3848
+ "bodyFormat": "json"
3497
3849
  },
3498
3850
  "scopes": [
3499
3851
  "sync",
@@ -3507,21 +3859,45 @@
3507
3859
  "params": [
3508
3860
  {
3509
3861
  "name": "reward_key",
3510
- "backendName": "rewardKey",
3862
+ "backendName": "rsKey",
3511
3863
  "type": "integer",
3512
- "description": "已存在的 rewardKey。"
3864
+ "description": "已存在的 rsKey(映射到 RewardStore.rsKey)。"
3513
3865
  },
3514
3866
  {
3515
3867
  "name": "name",
3516
- "backendName": "rewardName",
3868
+ "backendName": "rsName",
3517
3869
  "type": "string",
3518
- "description": "奖励名称。"
3870
+ "description": "奖励名称(映射到 RewardStore.rsName)。"
3519
3871
  },
3520
3872
  {
3521
3873
  "name": "cost",
3522
- "backendName": "rewardCost",
3874
+ "backendName": "rsPrice",
3523
3875
  "type": "integer",
3524
- "description": "兑换所需奖励币。"
3876
+ "description": "兑换所需奖励币(映射到 RewardStore.rsPrice)。"
3877
+ },
3878
+ {
3879
+ "name": "desc",
3880
+ "backendName": "rsDesc",
3881
+ "type": "string",
3882
+ "description": "奖励描述(映射到 RewardStore.rsDesc)。"
3883
+ },
3884
+ {
3885
+ "name": "image_url",
3886
+ "backendName": "rsImageUrl",
3887
+ "type": "string",
3888
+ "description": "奖励图片 URL(映射到 RewardStore.rsImageUrl)。"
3889
+ },
3890
+ {
3891
+ "name": "state",
3892
+ "backendName": "rsState",
3893
+ "type": "integer",
3894
+ "description": "奖励状态(映射到 RewardStore.rsState)。"
3895
+ },
3896
+ {
3897
+ "name": "repeat_limit",
3898
+ "backendName": "repeatLimit",
3899
+ "type": "string",
3900
+ "description": "兑换次数限制(映射到 RewardStore.repeatLimit)。"
3525
3901
  },
3526
3902
  {
3527
3903
  "name": "sync_flag",
@@ -3629,13 +4005,14 @@
3629
4005
  "name": "zentodo.reward.record-sync-push",
3630
4006
  "domain": "reward",
3631
4007
  "action": "record-sync-push",
3632
- "description": "调用 /rewardRecordController/putSyncRewardRecord。",
4008
+ "description": "调用 /rewardRecordController/putSyncRewardRecord(后端 @RequestBody RewardRecord)JSON 体。RewardRecord 以 rsKey 标识记录对应的奖励,字段为 rrName/rrPrice/rrDesc/rrImageUrl。",
3633
4009
  "http": {
3634
4010
  "method": "POST",
3635
4011
  "path": "/rewardRecordController/putSyncRewardRecord",
3636
4012
  "pragmas": [
3637
4013
  "stripAutoKeys"
3638
- ]
4014
+ ],
4015
+ "bodyFormat": "json"
3639
4016
  },
3640
4017
  "scopes": [
3641
4018
  "sync",
@@ -3648,22 +4025,42 @@
3648
4025
  },
3649
4026
  "params": [
3650
4027
  {
3651
- "name": "record_key",
3652
- "backendName": "recordKey",
4028
+ "name": "reward_key",
4029
+ "backendName": "rsKey",
3653
4030
  "type": "integer",
3654
- "description": "已存在的记录 key。"
4031
+ "required": true,
4032
+ "description": "关联的奖励 rsKey(RewardRecord 通过 rsKey 识别对应商品)。"
3655
4033
  },
3656
4034
  {
3657
- "name": "reward_key",
3658
- "backendName": "rewardKey",
3659
- "type": "integer",
3660
- "description": "关联的奖励 key。"
4035
+ "name": "name",
4036
+ "backendName": "rrName",
4037
+ "type": "string",
4038
+ "description": "奖励名称快照(映射到 RewardRecord.rrName)。"
3661
4039
  },
3662
4040
  {
3663
4041
  "name": "cost",
3664
- "backendName": "cost",
4042
+ "backendName": "rrPrice",
3665
4043
  "type": "integer",
3666
- "description": "消耗的奖励币。"
4044
+ "description": "消耗的奖励币(映射到 RewardRecord.rrPrice)。"
4045
+ },
4046
+ {
4047
+ "name": "desc",
4048
+ "backendName": "rrDesc",
4049
+ "type": "string",
4050
+ "description": "备注(映射到 RewardRecord.rrDesc)。"
4051
+ },
4052
+ {
4053
+ "name": "image_url",
4054
+ "backendName": "rrImageUrl",
4055
+ "type": "string",
4056
+ "description": "图片(映射到 RewardRecord.rrImageUrl)。"
4057
+ },
4058
+ {
4059
+ "name": "record_time",
4060
+ "backendName": "recordTime",
4061
+ "type": "datetime",
4062
+ "transform": "isoToBackendDateTime",
4063
+ "description": "兑换时间(映射到 RewardRecord.recordTime)。"
3667
4064
  },
3668
4065
  {
3669
4066
  "name": "sync_flag",
@@ -3734,13 +4131,14 @@
3734
4131
  "name": "zentodo.fasttime.sync-push",
3735
4132
  "domain": "fasttime",
3736
4133
  "action": "sync-push",
3737
- "description": "调用 /fastTimeRecordController/putSyncFastTimeRecord。",
4134
+ "description": "调用 /fastTimeRecordController/putSyncFastTimeRecord(后端 @RequestBody FastTimeRecord)JSON 体。FastTimeRecord 实体以 ftKey 为主键,字段为 qtEvent/qtDescription/qtTimeValue/qtTimePriority。",
3738
4135
  "http": {
3739
4136
  "method": "POST",
3740
4137
  "path": "/fastTimeRecordController/putSyncFastTimeRecord",
3741
4138
  "pragmas": [
3742
4139
  "stripAutoKeys"
3743
- ]
4140
+ ],
4141
+ "bodyFormat": "json"
3744
4142
  },
3745
4143
  "scopes": [
3746
4144
  "sync",
@@ -3754,21 +4152,63 @@
3754
4152
  "params": [
3755
4153
  {
3756
4154
  "name": "record_key",
3757
- "backendName": "recordKey",
4155
+ "backendName": "ftKey",
3758
4156
  "type": "integer",
3759
- "description": "已存在的记录 key。"
4157
+ "description": "已存在的 ftKey(映射到 FastTimeRecord.ftKey)。"
3760
4158
  },
3761
4159
  {
3762
4160
  "name": "title",
3763
- "backendName": "title",
4161
+ "backendName": "qtEvent",
3764
4162
  "type": "string",
3765
- "description": "标题。"
4163
+ "description": "事件名称(映射到 FastTimeRecord.qtEvent)。"
4164
+ },
4165
+ {
4166
+ "name": "description",
4167
+ "backendName": "qtDescription",
4168
+ "type": "string",
4169
+ "description": "描述(映射到 FastTimeRecord.qtDescription)。"
3766
4170
  },
3767
4171
  {
3768
4172
  "name": "duration_sec",
3769
- "backendName": "duration",
4173
+ "backendName": "qtTimeValue",
4174
+ "type": "string",
4175
+ "description": "时长字符串(映射到 FastTimeRecord.qtTimeValue)。"
4176
+ },
4177
+ {
4178
+ "name": "time_priority",
4179
+ "backendName": "qtTimePriority",
4180
+ "type": "integer",
4181
+ "description": "时间优先级(映射到 FastTimeRecord.qtTimePriority)。"
4182
+ },
4183
+ {
4184
+ "name": "top_label",
4185
+ "backendName": "topLabel",
3770
4186
  "type": "integer",
3771
- "description": "时长()。"
4187
+ "description": "顶级标签 key(映射到 FastTimeRecord.topLabel)。"
4188
+ },
4189
+ {
4190
+ "name": "second_label",
4191
+ "backendName": "secondLabel",
4192
+ "type": "integer",
4193
+ "description": "二级标签 key(映射到 FastTimeRecord.secondLabel)。"
4194
+ },
4195
+ {
4196
+ "name": "project_key",
4197
+ "backendName": "projectKey",
4198
+ "type": "integer",
4199
+ "description": "关联项目 projectKey。"
4200
+ },
4201
+ {
4202
+ "name": "scene_key",
4203
+ "backendName": "sceneKey",
4204
+ "type": "integer",
4205
+ "description": "关联场景 sceneKey。"
4206
+ },
4207
+ {
4208
+ "name": "delete_able",
4209
+ "backendName": "deleteAble",
4210
+ "type": "boolean",
4211
+ "description": "是否可删除(映射到 FastTimeRecord.deleteAble)。"
3772
4212
  },
3773
4213
  {
3774
4214
  "name": "sync_flag",
@@ -3839,7 +4279,7 @@
3839
4279
  "name": "zentodo.wheel.sync-push",
3840
4280
  "domain": "wheel",
3841
4281
  "action": "sync-push",
3842
- "description": "调用 /wheelViewController/putSyncWheelView",
4282
+ "description": "调用 /wheelViewController/putSyncWheelView。注意:后端暂未提供 WheelView 实体/控制器,此 capability 为占位。",
3843
4283
  "http": {
3844
4284
  "method": "POST",
3845
4285
  "path": "/wheelViewController/putSyncWheelView",