ae-tracking 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +50 -0
  3. package/dist/bin/ae-tracking.d.ts +2 -0
  4. package/dist/bin/ae-tracking.js +20 -0
  5. package/dist/scripts/postinstall.d.ts +1 -0
  6. package/dist/scripts/postinstall.js +17 -0
  7. package/dist/src/auth.d.ts +12 -0
  8. package/dist/src/auth.js +215 -0
  9. package/dist/src/cli/auth.d.ts +8 -0
  10. package/dist/src/cli/auth.js +81 -0
  11. package/dist/src/cli/code.d.ts +2 -0
  12. package/dist/src/cli/code.js +85 -0
  13. package/dist/src/cli/debug.d.ts +2 -0
  14. package/dist/src/cli/debug.js +152 -0
  15. package/dist/src/cli/home.d.ts +4 -0
  16. package/dist/src/cli/home.js +15 -0
  17. package/dist/src/cli/init.d.ts +14 -0
  18. package/dist/src/cli/init.js +107 -0
  19. package/dist/src/cli/package-root.d.ts +1 -0
  20. package/dist/src/cli/package-root.js +20 -0
  21. package/dist/src/cli/plan.d.ts +2 -0
  22. package/dist/src/cli/plan.js +242 -0
  23. package/dist/src/cli/wiki.d.ts +2 -0
  24. package/dist/src/cli/wiki.js +20 -0
  25. package/dist/src/client.d.ts +62 -0
  26. package/dist/src/client.js +56 -0
  27. package/dist/src/config.d.ts +4 -0
  28. package/dist/src/config.js +29 -0
  29. package/dist/src/plan/autotrack.d.ts +18 -0
  30. package/dist/src/plan/autotrack.js +350 -0
  31. package/dist/src/plan/conflict.d.ts +34 -0
  32. package/dist/src/plan/conflict.js +106 -0
  33. package/dist/src/plan/draft.d.ts +39 -0
  34. package/dist/src/plan/draft.js +104 -0
  35. package/dist/src/plan/fix.d.ts +32 -0
  36. package/dist/src/plan/fix.js +187 -0
  37. package/dist/src/plan/types.d.ts +57 -0
  38. package/dist/src/plan/types.js +1 -0
  39. package/dist/src/project-detect/detect.d.ts +2 -0
  40. package/dist/src/project-detect/detect.js +120 -0
  41. package/dist/src/project-detect/types.d.ts +9 -0
  42. package/dist/src/project-detect/types.js +1 -0
  43. package/dist/src/te-debug/client.d.ts +12 -0
  44. package/dist/src/te-debug/client.js +54 -0
  45. package/dist/src/te-debug/types.d.ts +16 -0
  46. package/dist/src/te-debug/types.js +1 -0
  47. package/dist/src/te-plan/fetch.d.ts +3 -0
  48. package/dist/src/te-plan/fetch.js +47 -0
  49. package/dist/src/te-plan/types.d.ts +7 -0
  50. package/dist/src/te-plan/types.js +1 -0
  51. package/dist/src/wiki/block-to-md.d.ts +74 -0
  52. package/dist/src/wiki/block-to-md.js +88 -0
  53. package/dist/src/wiki/crawler.d.ts +3 -0
  54. package/dist/src/wiki/crawler.js +71 -0
  55. package/dist/src/wiki/index-writer.d.ts +4 -0
  56. package/dist/src/wiki/index-writer.js +70 -0
  57. package/dist/src/wiki/slugify.d.ts +1 -0
  58. package/dist/src/wiki/slugify.js +11 -0
  59. package/dist/src/wiki/types.d.ts +29 -0
  60. package/dist/src/wiki/types.js +1 -0
  61. package/dist/src/wiki-query/query.d.ts +8 -0
  62. package/dist/src/wiki-query/query.js +32 -0
  63. package/dist/src/xlsx/read.d.ts +2 -0
  64. package/dist/src/xlsx/read.js +457 -0
  65. package/dist/src/xlsx/write.d.ts +3 -0
  66. package/dist/src/xlsx/write.js +251 -0
  67. package/package.json +47 -0
  68. package/skills/generate-tracking-code/SKILL.md +551 -0
  69. package/skills/generate-tracking-code/references/client-sdk-insert.md +92 -0
  70. package/skills/generate-tracking-code/references/datax-config.md +41 -0
  71. package/skills/generate-tracking-code/references/debug-script.md +99 -0
  72. package/skills/generate-tracking-code/references/logbus-config.md +224 -0
  73. package/skills/generate-tracking-code/references/modes.md +81 -0
  74. package/skills/generate-tracking-code/references/restful-call.md +34 -0
  75. package/skills/generate-tracking-code/references/sdk-index.md +123 -0
  76. package/skills/generate-tracking-code/references/server-sdk-insert.md +175 -0
  77. package/skills/generate-tracking-code/references/snippet-delivery.md +240 -0
  78. package/skills/generate-tracking-code/references/te-api.md +181 -0
  79. package/skills/generate-tracking-plan/SKILL.md +826 -0
  80. package/skills/generate-tracking-plan/references/autotrack-events.md +238 -0
  81. package/skills/generate-tracking-plan/references/te-api.md +97 -0
  82. package/skills/generate-tracking-plan/references/xlsx-schema.md +149 -0
  83. package/skills/te-wiki-synthesize/SKILL.md +142 -0
  84. package/wiki/te-docs/index.md +223 -0
  85. package/wiki/te-docs/log.md +28 -0
  86. package/wiki/te-docs/raw//346/216/245/345/205/245/345/211/215/345/207/206/345/244/207/345/267/245/344/275/234//346/225/260/346/215/256/350/247/204/345/210/231.md +379 -0
  87. package/wiki/te-docs/raw//346/216/245/345/205/245/345/211/215/345/207/206/345/244/207/345/267/245/344/275/234//347/224/250/346/210/267/350/257/206/345/210/253/350/247/204/345/210/231.md +461 -0
  88. package/wiki/te-docs/raw//346/216/245/345/205/245/345/211/215/345/207/206/345/244/207/345/267/245/344/275/234//351/242/204/347/275/256/345/261/236/346/200/247/344/270/216/347/263/273/347/273/237/345/255/227/346/256/265.md +634 -0
  89. package/wiki/te-docs/raw//346/216/245/345/205/245/345/211/215/345/207/206/345/244/207/345/267/245/344/275/234.md +190 -0
  90. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227/restful-api-/344/275/277/347/224/250/346/214/207/345/215/227.md +195 -0
  91. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227/sdk-information-collection-rules.md +63 -0
  92. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/205/263/344/272/216-gdpr.md +81 -0
  93. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//345/220/210/350/247/204/346/214/207/345/215/227.md +34 -0
  94. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//346/233/264/346/226/260/346/227/245/345/277/227.md +502 -0
  95. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227//344/270/211/346/226/271/346/225/260/346/215/256.md +367 -0
  96. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +117 -0
  97. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +96 -0
  98. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +947 -0
  99. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +686 -0
  100. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227.md +1126 -0
  101. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android.md +461 -0
  102. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//346/233/264/346/226/260/346/227/245/345/277/227-RCu1wk.md +64 -0
  103. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//346/233/264/346/226/260/346/227/245/345/277/227.md +167 -0
  104. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225-T57MwB.md +56 -0
  105. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +57 -0
  106. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227-JARDwp.md +455 -0
  107. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227.md +477 -0
  108. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c-Uicgw2.md +145 -0
  109. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c.md +253 -0
  110. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/h5-/344/270/216-app-sdk-/346/211/223/351/200/232.md +179 -0
  111. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//345/220/210/350/247/204/346/214/207/345/215/227.md +37 -0
  112. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//346/233/264/346/226/260/346/227/245/345/277/227.md +491 -0
  113. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227//344/270/211/346/226/271/346/225/260/346/215/256.md +154 -0
  114. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +148 -0
  115. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +92 -0
  116. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +479 -0
  117. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +587 -0
  118. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227.md +912 -0
  119. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//351/232/220/347/247/201/346/270/205/345/215/225.md +183 -0
  120. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios.md +397 -0
  121. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//345/220/210/350/247/204/346/214/207/345/215/227.md +39 -0
  122. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//346/233/264/346/226/260/346/227/245/345/277/227.md +239 -0
  123. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +55 -0
  124. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +54 -0
  125. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +113 -0
  126. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +267 -0
  127. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//350/277/233/351/230/266/346/214/207/345/215/227.md +455 -0
  128. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript.md +257 -0
  129. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/macos//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +77 -0
  130. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/macos//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +249 -0
  131. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/macos//350/277/233/351/230/266/346/214/207/345/215/227.md +738 -0
  132. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/macos.md +317 -0
  133. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//345/220/210/350/247/204/346/214/207/345/215/227.md +345 -0
  134. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//346/233/264/346/226/260/346/227/245/345/277/227.md +128 -0
  135. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +60 -0
  136. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +54 -0
  137. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +121 -0
  138. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +286 -0
  139. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227.md +408 -0
  140. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony.md +209 -0
  141. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/256/242/346/210/267/347/253/257-sdk-/345/270/270/350/247/201/351/227/256/351/242/230.md +72 -0
  142. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//345/220/210/350/247/204/346/214/207/345/215/227.md +56 -0
  143. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//346/233/264/346/226/260/346/227/245/345/277/227.md +313 -0
  144. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +78 -0
  145. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +58 -0
  146. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +192 -0
  147. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +301 -0
  148. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227.md +644 -0
  149. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217.md +440 -0
  150. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//345/220/210/350/247/204/346/214/207/345/215/227.md +35 -0
  151. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//346/233/264/346/226/260/346/227/245/345/277/227.md +49 -0
  152. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +53 -0
  153. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +32 -0
  154. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +65 -0
  155. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227.md +288 -0
  156. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua.md +236 -0
  157. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//345/220/210/350/247/204/346/214/207/345/215/227.md +34 -0
  158. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//346/233/264/346/226/260/346/227/245/345/277/227.md +122 -0
  159. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +27 -0
  160. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +53 -0
  161. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +34 -0
  162. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +177 -0
  163. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//350/277/233/351/230/266/346/214/207/345/215/227.md +368 -0
  164. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x.md +311 -0
  165. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//345/220/210/350/247/204/346/214/207/345/215/227.md +42 -0
  166. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//346/233/264/346/226/260/346/227/245/345/277/227.md +184 -0
  167. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +142 -0
  168. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +60 -0
  169. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +96 -0
  170. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +255 -0
  171. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//350/277/233/351/230/266/346/214/207/345/215/227.md +659 -0
  172. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator.md +213 -0
  173. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//345/220/210/350/247/204/346/214/207/345/215/227.md +39 -0
  174. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//346/233/264/346/226/260/346/227/245/345/277/227.md +42 -0
  175. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +59 -0
  176. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +37 -0
  177. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +50 -0
  178. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//350/277/233/351/230/266/346/214/207/345/215/227.md +281 -0
  179. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona.md +304 -0
  180. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//346/233/264/346/226/260/346/227/245/345/277/227.md +129 -0
  181. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +74 -0
  182. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +60 -0
  183. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +74 -0
  184. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +228 -0
  185. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227.md +640 -0
  186. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret.md +210 -0
  187. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//346/233/264/346/226/260/346/227/245/345/277/227.md +129 -0
  188. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +79 -0
  189. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +60 -0
  190. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +73 -0
  191. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +254 -0
  192. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227.md +626 -0
  193. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair.md +228 -0
  194. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//345/216/206/345/217/262/347/211/210/346/234/254-unity-sdk-/344/275/277/347/224/250/346/214/207/345/215/227.md +503 -0
  195. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//345/220/210/350/247/204/346/214/207/345/215/227.md +34 -0
  196. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//346/233/264/346/226/260/346/227/245/345/277/227.md +505 -0
  197. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//344/270/211/346/226/271/346/225/260/346/215/256.md +86 -0
  198. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//345/216/237/347/224/237-sdk-/345/217/257/346/217/222/346/213/224.md +44 -0
  199. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +55 -0
  200. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +53 -0
  201. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +156 -0
  202. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +293 -0
  203. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227.md +667 -0
  204. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity.md +203 -0
  205. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//345/220/210/350/247/204/346/214/207/345/215/227.md +34 -0
  206. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//346/233/264/346/226/260/346/227/245/345/277/227.md +209 -0
  207. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//350/277/233/351/230/266/346/214/207/345/215/227//344/270/211/346/226/271/346/225/260/346/215/256.md +152 -0
  208. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +41 -0
  209. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +81 -0
  210. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +181 -0
  211. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//350/277/233/351/230/266/346/214/207/345/215/227.md +346 -0
  212. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal.md +228 -0
  213. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216.md +20 -0
  214. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//345/220/210/350/247/204/346/214/207/345/215/227.md +37 -0
  215. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//346/233/264/346/226/260/346/227/245/345/277/227.md +201 -0
  216. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +54 -0
  217. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +139 -0
  218. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +65 -0
  219. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//350/277/233/351/230/266/346/214/207/345/215/227.md +356 -0
  220. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter.md +176 -0
  221. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//345/220/210/350/247/204/346/214/207/345/215/227.md +37 -0
  222. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//346/233/264/346/226/260/346/227/245/345/277/227.md +162 -0
  223. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +60 -0
  224. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +140 -0
  225. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +23 -0
  226. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//350/277/233/351/230/266/346/214/207/345/215/227.md +375 -0
  227. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native.md +176 -0
  228. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//346/233/264/346/226/260/346/227/245/345/277/227.md +34 -0
  229. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +96 -0
  230. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +48 -0
  231. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +57 -0
  232. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +68 -0
  233. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +249 -0
  234. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227.md +420 -0
  235. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app.md +193 -0
  236. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266.md +15 -0
  237. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk.md +35 -0
  238. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/225/260/346/215/256/345/257/274/345/205/245/filebeat-logstash-/344/275/277/347/224/250/346/214/207/345/215/227.md +638 -0
  239. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/225/260/346/215/256/345/257/274/345/205/245/logbus2-/344/275/277/347/224/250/346/214/207/345/215/227.md +1140 -0
  240. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/225/260/346/215/256/345/257/274/345/205/245/ta-datax-writer-/346/217/222/344/273/266/344/275/277/347/224/250/346/214/207/345/215/227.md +256 -0
  241. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/225/260/346/215/256/345/257/274/345/205/245.md +17 -0
  242. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/225/260/346/225/260/347/247/221/346/212/200sdk/351/232/220/347/247/201/345/243/260/346/230/216.md +298 -0
  243. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//346/233/264/346/226/260/346/227/245/345/277/227-HZrPwz.md +80 -0
  244. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//346/233/264/346/226/260/346/227/245/345/277/227-U1zKwj.md +108 -0
  245. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//346/233/264/346/226/260/346/227/245/345/277/227.md +114 -0
  246. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225-LEb9wx.md +46 -0
  247. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225-TfR3wg.md +46 -0
  248. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +93 -0
  249. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247-U1Qvwk.md +75 -0
  250. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247-X08Fw7.md +75 -0
  251. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  252. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227-Jc1dwk.md +245 -0
  253. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227-YGuuwc.md +237 -0
  254. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227.md +242 -0
  255. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c-D4KBwg.md +211 -0
  256. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c-HF7Dwv.md +169 -0
  257. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c.md +225 -0
  258. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/erlang//346/233/264/346/226/260/346/227/245/345/277/227.md +55 -0
  259. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/erlang//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +51 -0
  260. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/erlang//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  261. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/erlang//350/277/233/351/230/266/346/214/207/345/215/227.md +151 -0
  262. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/erlang.md +204 -0
  263. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/golang//346/233/264/346/226/260/346/227/245/345/277/227.md +135 -0
  264. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/golang//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +46 -0
  265. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/golang//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  266. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/golang//350/277/233/351/230/266/346/214/207/345/215/227.md +208 -0
  267. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/golang.md +193 -0
  268. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/java//346/233/264/346/226/260/346/227/245/345/277/227.md +138 -0
  269. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/java//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +52 -0
  270. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/java//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  271. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/java//350/277/233/351/230/266/346/214/207/345/215/227.md +289 -0
  272. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/java.md +214 -0
  273. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/lua//346/233/264/346/226/260/346/227/245/345/277/227.md +123 -0
  274. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/lua//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +57 -0
  275. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/lua//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  276. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/lua//350/277/233/351/230/266/346/214/207/345/215/227.md +234 -0
  277. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/lua.md +165 -0
  278. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/nodejs//346/233/264/346/226/260/346/227/245/345/277/227.md +89 -0
  279. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/nodejs//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +65 -0
  280. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/nodejs//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  281. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/nodejs//350/277/233/351/230/266/346/214/207/345/215/227.md +263 -0
  282. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/nodejs.md +161 -0
  283. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/php//346/233/264/346/226/260/346/227/245/345/277/227.md +86 -0
  284. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/php//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +48 -0
  285. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/php//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  286. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/php//350/277/233/351/230/266/346/214/207/345/215/227.md +269 -0
  287. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/php.md +206 -0
  288. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/python//346/233/264/346/226/260/346/227/245/345/277/227.md +155 -0
  289. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/python//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +47 -0
  290. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/python//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  291. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/python//350/277/233/351/230/266/346/214/207/345/215/227.md +274 -0
  292. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/python.md +162 -0
  293. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/ruby//346/233/264/346/226/260/346/227/245/345/277/227.md +53 -0
  294. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/ruby//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +50 -0
  295. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/ruby//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  296. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/ruby//350/277/233/351/230/266/346/214/207/345/215/227.md +226 -0
  297. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/ruby.md +165 -0
  298. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk.md +23 -0
  299. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227.md +64 -0
  300. package/wiki/te-docs/raw//350/277/233/351/230/266/346/225/260/346/215/256/347/261/273/345/236/213//345/217/257/346/233/264/346/226/260/344/272/213/344/273/266.md +109 -0
  301. package/wiki/te-docs/raw//350/277/233/351/230/266/346/225/260/346/215/256/347/261/273/345/236/213//351/246/226/346/254/241/344/272/213/344/273/266/346/240/241/351/252/214.md +88 -0
  302. package/wiki/te-docs/raw//350/277/233/351/230/266/346/225/260/346/215/256/347/261/273/345/236/213.md +22 -0
  303. package/wiki/te-docs/schema.md +17 -0
  304. package/wiki/te-docs/synthesis/batch-ingest-comparison.md +117 -0
  305. package/wiki/te-docs/synthesis/js-sdk-cheatsheet.md +136 -0
  306. package/wiki/te-docs/synthesis/restful-api-reference.md +142 -0
  307. package/wiki/te-docs/synthesis/sdk-selection.md +79 -0
  308. package/wiki/te-docs/synthesis/server-sdk-overview.md +124 -0
@@ -0,0 +1,826 @@
1
+ ---
2
+ name: generate-tracking-plan
3
+ description: 交互式生成 AE 埋点方案并上传。触发词:埋点方案、埋点模板、tracking plan、AE 方案生成。走 anchor → draft → refine → token → upload 五阶段,产物是 AE 后台里真实创建好的埋点方案。
4
+ ---
5
+
6
+ # generate-tracking-plan
7
+
8
+ ## 何时触发
9
+
10
+ 用户提到"埋点方案 / 埋点模板 / tracking plan / AE 方案 / 帮我建埋点"等意图时触发。
11
+ 应用类型覆盖 H5 / Web / iOS / Android / 小程序 / Unity。进入本 skill 后严格按
12
+ Phase 0 → 1 → 2 → 3 → 4 推进,不得跳步。
13
+
14
+ > Phase 1 / 3 / 4 通过 `ae-tracking` CLI 执行(`ae-tracking plan draft`
15
+ > / `ae-tracking auth` / `ae-tracking plan upload` / `ae-tracking plan delete`)。
16
+ > 本 skill 只关心命令行为,不关心内部实现。
17
+
18
+ ---
19
+
20
+ ## Phase 0 — Anchor(每个问题单独一条消息)
21
+
22
+ 依次收集以下 **5 项**,**不得一次问完**:
23
+
24
+ ### 第 1 项 — 应用业务场景(多轮对话)
25
+
26
+ #### 1.1 应用概述
27
+
28
+ 问:**"应用业务场景是什么?一句话概括,比如:电商网站,用户可以浏览商品和下单购买"**
29
+
30
+ 用户回答后,记录到 `meta.scenario`,并生成 `meta.plan_name`(方案名称)。
31
+
32
+ #### 1.2 应用详情
33
+
34
+ 问:**"选择素材来源,最多选 2 项:"**
35
+
36
+ 用户可多选(最多 2 项),选项如下:
37
+
38
+ 1. **产品文档**(本地路径或 URL)— 从产品文档抽取事件和属性
39
+ 2. **详细描述**(对话形式)— 描述应用业务流程、核心功能、用户行为、盈利模式等
40
+ 3. **工程代码**(本地目录路径)— 分析源码提取事件和属性
41
+ 4. **预置模板**(游戏(MMO,SLG,卡牌,塔防,棋牌,休闲养成)/电商/阅读/社交/短剧)— 选择内置模板
42
+ 5. **应用官网**(URL)— 抓取官网内容了解产品功能和业务
43
+
44
+ 根据用户选择判定素材来源并记录到 `meta.source_type`:
45
+
46
+ | 选择 | source_type | 处理方式 |
47
+ |---|---|---|
48
+ | 仅产品文档 | `prd` | 读产品文档,抽取事件和属性 |
49
+ | 仅详细描述 | `chat` | 根据描述在 Draft 阶段构造事件 |
50
+ | 仅工程代码 | `codebase` | 扫描源码,从业务逻辑提取事件和属性 |
51
+ | 仅预置模板 | `template` | 提供内置模板选择 |
52
+ | 仅应用官网 | `website` | 抓取官网页面,抽取产品功能描述 |
53
+ | 任意两项组合 | 用 `_` 连接两项 type | 第一项为 baseline,第二项补充(优先级:template → codebase → prd → website → chat) |
54
+
55
+ **追问**(按选择顺序逐一追问):
56
+ - 产品文档 → 问 **"产品文档路径是什么?(本地路径或 URL)"**
57
+ - 详细描述 → 如果描述过于简单,追问核心功能、用户行为、业务流程、盈利模式
58
+ - 工程代码 → 问 **"工程目录路径是什么?"**,然后扫描源码提取业务逻辑
59
+ - 预置模板 → 展示匹配的模板内容让用户确认
60
+ - 应用官网 → 问 **"应用官网 URL 是什么?"**
61
+
62
+ **工程代码分析流程(source_type 含 `codebase` 时)**:
63
+
64
+ 1. 用户提供工程目录路径
65
+ 2. 扫描目录结构,识别技术栈(引擎/框架/语言)
66
+ 3. 读取核心业务模块(游戏逻辑、场景管理、UI 交互、状态/数据模型、网络/支付等)
67
+ 4. 从代码中提取:
68
+ - **事件**:玩家交互动作(点击/滑动/触发)、场景切换、游戏状态变化(开始/暂停/结束)、业务流程节点(购买/升级/解锁)
69
+ - **事件属性**:动作参数(子弹类型/敌人等级/道具 ID)、状态值(分数/血量/金币)、上下文(关卡 ID/难度/模式)
70
+ - **用户属性**:持久状态(等级/经验/VIP/累计充值)
71
+ 5. 将提取结果映射为 AE 呝名规则(`snake_case` 事件名 + 中文 `display_name`)
72
+ 6. 与用户确认提取结果,补充遗漏
73
+
74
+ **应用官网分析流程(source_type 含 `website` 时)**:
75
+
76
+ 1. 用户提供官网 URL
77
+ 2. 抓取官网主要页面(首页、功能介绍、定价等)
78
+ 3. 从页面内容提取:
79
+ - **产品功能列表** → 映射为核心事件
80
+ - **用户操作流程** → 映射为事件属性
81
+ - **用户身份/等级体系** → 映射为用户属性
82
+ 4. 将提取结果映射为 AE 命名规则,与用户确认
83
+
84
+ ---
85
+
86
+ ### 第 2 项 — 客户端 SDK 配置
87
+
88
+ 问:**"应用类型和开发工具是什么?"**
89
+
90
+ > SDK 支持列表来源于 `wiki/te-docs/raw/接入指南/客户端-sdk/`,如有更新请同步修改本表。
91
+
92
+ **选项**(应用类型 - 开发工具):
93
+
94
+ - **H5/Web应用** (Vue / React / 原生JS / 其他前端框架)
95
+ - **手机游戏** (Android原生 / iOS原生 / Unity / CocosCreator / Cocos2d-x / LayaAir / Egret / Unreal / 其他引擎)
96
+ - **手机APP** (Android原生 / iOS原生 / React Native / Flutter / uni-app / OpenHarmony)
97
+ - **小游戏** (小游戏平台:微信 / QQ / 抖音 / 百度等)
98
+ - **小程序** (小程序平台:微信 / 抖音 / 支付宝 / 百度 / 钉钉 / 快手 / QQ / 京东 / 360 / 快应用等)
99
+ - **PC游戏** (Unreal / Unity / 其他引擎)
100
+ - **PC应用** (C++ / C# / MacOS原生 / 其他)
101
+ - **不集成客户端 SDK**
102
+
103
+ **追问**:选 `其他` 相关选项 → 问 **"请描述具体开发工具"**
104
+
105
+ **SDK 类型映射**:
106
+
107
+ | 选择 | 客户端 SDK 类型 |
108
+ |---|---|
109
+ | H5/Web应用 - * | JavaScript SDK |
110
+ | 手机游戏 - Android原生 | Android SDK |
111
+ | 手机游戏 - iOS原生 | iOS SDK |
112
+ | 手机游戏 - Unity | Unity SDK |
113
+ | 手机游戏 - CocosCreator | CocosCreator SDK |
114
+ | 手机游戏 - Cocos2d-x | Cocos2d-x SDK |
115
+ | 手机游戏 - LayaAir | LayaAir SDK |
116
+ | 手机游戏 - Egret | Egret SDK |
117
+ | 手机游戏 - Unreal | Unreal SDK |
118
+ | 手机APP - Android原生 | Android SDK |
119
+ | 手机APP - iOS原生 | iOS SDK |
120
+ | 手机APP - React Native | React Native SDK |
121
+ | 手机APP - Flutter | Flutter SDK |
122
+ | 手机APP - uni-app | uni-app SDK |
123
+ | 手机APP - OpenHarmony | OpenHarmony SDK |
124
+ | 小游戏 | 小游戏 SDK(统一 SDK,支持微信/QQ/抖音/百度等平台) |
125
+ | 小程序 | 小程序 SDK(统一 SDK,支持微信/抖音/支付宝/百度等平台) |
126
+ | PC游戏 - Unreal | Unreal SDK |
127
+ | PC游戏 - Unity | Unity SDK |
128
+ | PC应用 - C++ | C++ SDK |
129
+ | PC应用 - C# | C# SDK |
130
+ | PC应用 - MacOS原生 | MacOS SDK |
131
+ | PC应用 - OpenHarmony | OpenHarmony SDK |
132
+ | 不集成客户端 SDK | 无(`sdk_integration_mode: "server_only"`) |
133
+
134
+ **多平台选择说明**:
135
+ 若用户选择了多个平台(如"Android 和 OpenHarmony"),则 `client_platforms` 记录为数组:
136
+ ```json
137
+ "client_platforms": ["android", "openharmony"]
138
+ ```
139
+ `client_sdk_type` 保留第一个作为主平台(向后兼容)。
140
+
141
+ **开发语言选择**(仅 Android / iOS SDK 需要):
142
+
143
+ | SDK 类型 | 支持的开发语言 |
144
+ |---|---|
145
+ | Android SDK | Java / Kotlin(可多选) |
146
+ | iOS SDK | Objective-C / Swift(可多选) |
147
+ | 其他 SDK | 固定语言,无需选择 |
148
+
149
+ **追问**:选择 Android SDK → 问 **"开发语言是什么?Java / Kotlin / 两者都支持"**
150
+ 选择 iOS SDK → 问 **"开发语言是什么?Objective-C / Swift / 两者都支持"**
151
+
152
+ 记录到 `client_platform_languages`:
153
+ ```json
154
+ "client_platform_languages": {
155
+ "android": ["java", "kotlin"],
156
+ "openharmony": ["typescript"]
157
+ }
158
+ ```
159
+
160
+ ---
161
+
162
+ ### 第 3 项 — 服务端 SDK 配置
163
+
164
+ 问:**"是否集成服务端 SDK?服务端开发语言是什么?"**
165
+
166
+ > SDK 支持列表来源于 `wiki/te-docs/raw/接入指南/服务端-sdk/`,如有更新请同步修改本表。
167
+
168
+ **选项**:
169
+
170
+ - Java
171
+ - Python
172
+ - Go
173
+ - Node.js
174
+ - PHP
175
+ - C# / .NET
176
+ - C++
177
+ - Erlang
178
+ - Lua
179
+ - Ruby
180
+ - 其他(请提供开发语言)
181
+ - 不集成服务端 SDK
182
+
183
+ **SDK 类型映射**:
184
+
185
+ | 选择 | 服务端 SDK 类型 | sdk_integration_mode |
186
+ |---|---|---|
187
+ | Java | Java SDK | `both` |
188
+ | Python | Python SDK | `both` |
189
+ | Go | Go SDK | `both` |
190
+ | Node.js | Node SDK | `both` |
191
+ | PHP | PHP SDK | `both` |
192
+ | C# / .NET | C# SDK | `both` |
193
+ | C++ | C++ SDK | `both` |
194
+ | Erlang | Erlang SDK | `both` |
195
+ | Lua | Lua SDK | `both` |
196
+ | Ruby | Ruby SDK | `both` |
197
+ | 其他 | 追问具体语言,查询 wiki 是否有对应 SDK | `both` |
198
+ | 不集成服务端 SDK | 无 | `client_only` |
199
+
200
+ ---
201
+
202
+ ### 第 4 项 — 用户体系配置(访客 ID)
203
+
204
+ 问:**"访客 ID 生成策略是什么?"**
205
+
206
+ 选项:
207
+ - `auto` — SDK 自动生成(默认,适用于大多数场景)
208
+ - `device_id` — 使用设备 ID(iOS IDFV / Android AndroidID)
209
+ - `custom` — 自定义访客 ID(需在 SDK 初始化后立刻调用 `identify()`)
210
+
211
+ **追问**:如果选 `custom`,问 **"访客 ID 取什么值?例如:设备 ID / UUID / 游客临时 ID"**
212
+
213
+ ---
214
+
215
+ ### 第 5 项 — 用户体系配置(账号 ID)
216
+
217
+ 问:**"账号 ID 来源是什么?"**
218
+
219
+ 选项:
220
+ - `user_account` — 用户账号 ID(登录后的唯一标识)
221
+ - `role_id` — 角色 ID(游戏类专用,一个账号可能有多个角色)
222
+ - `none` — 无账号体系(纯游客模式)
223
+
224
+ **追问**:
225
+ - 选 `user_account` → 问 **"账号 ID 具体取什么值?例如:user_id(用户 ID)、phone(手机号)、email(邮箱)"**
226
+ - 选 `role_id` → 说明 **"角色 ID 适合游戏类应用,一个账号可创建多个角色,可更细粒度分析每个角色的行为"**
227
+
228
+ ---
229
+
230
+ ### SDK 集成模式判定
231
+
232
+ 根据第 2、3 项的回答,自动判定 `sdk_integration_mode`:
233
+
234
+ | 客户端集成 | 服务端集成 | sdk_integration_mode |
235
+ |---|---|---|
236
+ | 需要 | 需要 | `both` |
237
+ | 需要 | 不需要 | `client_only` |
238
+ | 不需要 | 需要 | `server_only` |
239
+ | 不需要 | 不需要 | `none`(通过 RESTful API / LogBus / DataX 等方式上报) |
240
+
241
+ **`none` 模式说明**:
242
+ - 适用于历史数据导入、批量数据同步、第三方系统对接等场景
243
+ - 在 Refine 阶段不注入 SDK 自动采集事件
244
+ - 在 generate-tracking-code skill 中只生成 RESTful / LogBus / DataX 配置
245
+
246
+ ---
247
+
248
+ ### 事件上报平台分布(仅 `both` 模式)
249
+
250
+ 如果 `sdk_integration_mode === "both"`,在 Refine 阶段(第 3 段业务事件)引导用户指定:
251
+ - 哪些事件由客户端上报(用户行为事件)
252
+ - 哪些事件由服务端上报(业务数据事件)
253
+ - 是否有事件需要两端同时上报
254
+
255
+ **platform 字段写入 xlsx**:
256
+ - `platform: "client"` → xlsx "采集端" 列填 `client`
257
+ - `platform: "server"` → xlsx "采集端" 列填 `server`
258
+ - `platform: "both"` → xlsx "采集端" 列填 `client,server`
259
+ - `platform: undefined`(未指定)→ xlsx "采集端" 列留空
260
+
261
+ ---
262
+
263
+ ### 用户体系确认说明
264
+
265
+ 用户体系确认决定代码埋点时的 SDK 调用策略:
266
+
267
+ | 场景 | SDK 调用时机 |
268
+ |---|---|
269
+ | 有账号体系 | 用户登录时调用 `login("<账号ID值>")`,退出登录时调用 `logout()` |
270
+ | 自定义访客 ID | SDK 初始化后立刻调用 `identify("<访客ID值>")` |
271
+ | 纯游客模式 | 无需调用 `login()`,只用 SDK 自动生成的访客 ID |
272
+
273
+ **关键提醒**:
274
+ - 避免在上报事件后调用 `identify()` 更改访客 ID,会导致用户匹配问题
275
+ - 游戏类应用推荐使用「角色 ID」作为账号 ID(粒度更细,可分析不同角色行为)
276
+ - 一个账号 ID 可绑定多个访客 ID(多设备登录场景)
277
+
278
+ ---
279
+
280
+ ## Phase 1 — Draft
281
+
282
+ ### 1.1 构造 canonical draft
283
+
284
+ Draft 的概念结构(**内部 json,用户不直接看**):
285
+
286
+ ```
287
+ Draft
288
+ ├── meta:
289
+ │ ├── app_type: 应用类型
290
+ │ ├── sdk_integration_mode: SDK 集成模式:client_only / server_only / both
291
+ │ ├── client_sdk_type?: 客户端 SDK 类型(仅 client_only 或 both)
292
+ │ ├── client_language?: 客户端开发语言(游戏引擎需指定)
293
+ │ ├── server_language?: 服务端开发语言(仅 server_only 或 both)
294
+ │ ├── project_id?: AE 项目 ID(Phase 3 补充)
295
+ │ ├── host?: AE web 地址(Phase 3 补充)
296
+ │ ├── plan_name: 方案名称
297
+ │ ├── scenario: 业务场景描述
298
+ │ └── user_identity: 用户体系配置
299
+ │ ├── account_id_source: 账号 ID 来源:user_account / role_id / none
300
+ │ ├── account_id_field?: 账号 ID 具体字段名(仅 user_account 时填写,如 user_id / phone / email)
301
+ │ ├── distinct_id_strategy: 访客 ID 策略:auto / device_id / custom
302
+ │ └── distinct_id_custom_value?: 自定义访客 ID 取值
303
+ ├── events: 一组事件,每个事件含 platform 字段
304
+ ├── event_properties: 全局事件属性池(去重后)
305
+ ├── common_event_properties: 公共事件属性(每个事件自动带)
306
+ └── user_properties: 用户属性
307
+ ```
308
+
309
+ **SDK 集成模式字段**:
310
+
311
+ ```json
312
+ {
313
+ "sdk_integration_mode": "both", // client_only / server_only / both
314
+ "client_sdk_type": "android", // 仅 client_only 或 both 时填写
315
+ "client_language": "java", // 游戏引擎 SDK 需指定
316
+ "server_language": "java" // 仅 server_only 或 both 时填写
317
+ }
318
+ ```
319
+
320
+ **事件平台标记(`events[].platform`)**:
321
+
322
+ ```json
323
+ {
324
+ "event_name": "order_create",
325
+ "display_name": "订单创建",
326
+ "platform": "server", // client / server / both
327
+ "prop_names": ["order_id", "order_amount", "payment_method"],
328
+ "source": "prd"
329
+ }
330
+ ```
331
+
332
+ - `platform: "client"` — 客户端上报(用户行为事件)
333
+ - `platform: "server"` — 服务端上报(业务数据事件)
334
+ - `platform: "both"` — 两端同时上报(需同步时间戳)
335
+
336
+ **用户体系字段(`meta.user_identity`)**:
337
+
338
+ ```json
339
+ {
340
+ "account_id_source": "user_account", // 账号 ID 来源:user_account / role_id / none
341
+ "account_id_field": "user_id", // 账号 ID 具体字段名(仅 user_account 时填写)
342
+ "distinct_id_strategy": "auto", // 访客 ID 策略:auto / device_id / custom
343
+ "distinct_id_custom_value": null // 自定义访客 ID 取值说明(仅 strategy=custom 时填写)
344
+ }
345
+ ```
346
+
347
+ **属性类型**(枚举):`string` / `number` / `bool` / `datetime` /
348
+ `array_row`(对象数组,支持 `父名.子名` 嵌套)/ `array_string`(字符串数组)
349
+
350
+ **命名规则**:事件名 / 属性名必须 `snake_case`;中文放 `display_name` 字段。
351
+
352
+ ### 1.2 合并素材
353
+
354
+ 按优先级从低到高:**template → codebase → prd → website → chat → autotrack**
355
+
356
+ - **template**:用户选的行业模板(见下方「模板查找约定」)作为 baseline,每项标记 `source: "template"`
357
+ - **codebase**:扫描工程目录源码,从业务逻辑提取事件/属性,**同名事件合并 prop_names,不覆盖既有字段**;新项 `source: "codebase"`
358
+ - **prd**:读产品文档(md / pdf / docx / URL),抽取产品特有事件/属性,**同名事件合并 prop_names,不覆盖既有字段**;新项 `source: "prd"`
359
+ - **website**:抓取应用官网,从页面内容提取产品功能和业务逻辑,**同名事件合并 prop_names**;新项 `source: "website"`
360
+ - **chat**:anchor 阶段的业务场景 + refine 阶段的编辑指令,`source: "chat"`
361
+ - **autotrack**:根据 `meta.client_sdk_type` 自动注入 SDK 自动采集事件(仅 `client_only` 或 `both` 模式),`source: "autotrack"`
362
+
363
+ ### 1.3 自动注入 SDK 自动采集事件
364
+
365
+ 根据 Phase 0 收集的 SDK 集成模式,决定是否注入自动采集事件:
366
+
367
+ **注入条件**:
368
+ - `sdk_integration_mode === "client_only"` → 注入自动采集事件
369
+ - `sdk_integration_mode === "both"` → 注入自动采集事件(仅客户端端)
370
+ - `sdk_integration_mode === "server_only"` → **不注入**(服务端 SDK 无自动采集)
371
+ - `sdk_integration_mode === "none"` → **不注入**(无 SDK,通过其他方式上报)
372
+
373
+ **注入规则**:
374
+ 1. 自动采集事件放在 `events` 数组末尾,标记 `source: "autotrack"`
375
+ 2. 自动采集事件的 `event_tag` 设为 `"系统事件"`
376
+ 3. 自动采集事件只携带预置属性(`prop_names` 为空或仅含预置属性名)
377
+ 4. 预置属性以 `#` 开头,不加入 `event_properties` 池(由 SDK 自动采集)
378
+
379
+ **SDK 类型 → 自动采集事件映射**(详见 `references/autotrack-events.md`):
380
+
381
+ | SDK 类型 | 自动采集事件 |
382
+ |---|---|
383
+ | Android / iOS | `ta_app_install`, `ta_app_start`, `ta_app_end`, `ta_app_view`, `ta_app_click`, `ta_app_crash` |
384
+ | JavaScript | `ta_pageview`, `ta_page_show`, `ta_page_hide` |
385
+ | 微信小程序 | `ta_mp_launch`, `ta_mp_show`, `ta_mp_hide`, `ta_mp_view`, `ta_mp_share`, `ta_page_leave`, `ta_add_favorite`, `ta_mp_click` |
386
+ | 微信小游戏 | `ta_mp_launch`, `ta_mp_show`, `ta_mp_hide` |
387
+ | Unity | `ta_app_install`, `ta_app_start`, `ta_app_end`, `ta_app_crash`, `ta_scene_loaded`, `ta_scene_unloaded` |
388
+ | Unity 微信小游戏 | `ta_mg_launch`, `ta_mg_show`, `ta_mg_hide`, `ta_app_crash`, `ta_scene_loaded`, `ta_scene_unloaded` |
389
+
390
+ **Draft JSON 示例**:
391
+
392
+ ```json
393
+ {
394
+ "event_name": "ta_app_install",
395
+ "display_name": "APP 安装",
396
+ "event_desc": "APP 首次安装时上报,升级不触发,删除重装会触发",
397
+ "event_tag": "系统事件",
398
+ "platform": "client",
399
+ "prop_names": [],
400
+ "source": "autotrack"
401
+ }
402
+ ```
403
+
404
+ **注意**:自动采集事件 `platform` 固定为 `"client"`,因为只有客户端 SDK 有自动采集能力。
405
+
406
+ ### 1.4 持久化 + 生成 xlsx
407
+
408
+ - 保存 draft 到 `.ae-tracking/draft.json`
409
+ - 生成上传用 xlsx:
410
+
411
+ ```bash
412
+ ae-tracking plan draft --in .ae-tracking/draft.json --out .ae-tracking/draft.xlsx
413
+ ```
414
+
415
+ ### 1.5 规则校验(必须执行)
416
+
417
+ 生成 xlsx 时自动执行校验,确保符合 AE 埋点方案规则:
418
+
419
+ ```bash
420
+ ae-tracking plan draft --in .ae-tracking/draft.json --out .ae-tracking/draft.xlsx --fix
421
+ ```
422
+
423
+ **校验规则**:
424
+
425
+ | 规则 | 说明 | 自动修复 |
426
+ |---|---|---|
427
+ | 显示名唯一 | 同一属性池内 `display_name` 不能重复 | ✅ 添加区分前缀 |
428
+ | 对象组一致性 | 同一个 `array_row` 在不同事件中子属性必须一致 | ✅ 补充缺失子属性 |
429
+ | snake_case | 事件名/属性名必须符合 `^[a-z][a-z0-9_]*$` | ❌ 需手动修改 |
430
+ | 属性名唯一 | 属性名不能重复 | ❌ 需手动修改 |
431
+ | 事件名唯一 | 事件名不能重复 | ✅ 移除后续重复事件 |
432
+
433
+ **校验流程**:
434
+
435
+ 1. CLI 自动校验 draft.json
436
+ 2. 发现可修复问题 → 自动修复 → 更新 draft.json → 生成 xlsx
437
+ 3. 发现不可修复问题 → 报错,需手动修改 draft.json
438
+ 4. 无问题 → 进入 Phase 1.6
439
+
440
+ **注意**:不同属性池的显示名可以相同(如 `vip_level` 可以同时作为事件属性和用户属性)。
441
+
442
+ ### 1.6 展示 Summary
443
+
444
+ 向用户 markdown 表格展示:事件数 / 事件属性池大小 / 公共属性数 / 用户属性数;告知产物路径。
445
+
446
+ ### 📁 模板查找约定
447
+
448
+ 按以下顺序找第一个存在的位置:
449
+
450
+ 1. `./tracking-plan-template/` —— 本项目根(开发期)
451
+ 2. `~/.ae-tracking/templates/` —— `ae-tracking` CLI 安装后的用户目录(未来默认)
452
+ 3. `require.resolve('ae-tracking/tracking-plan-template')` —— 作为 npm 依赖装入时(未来)
453
+
454
+ 模板文件:官方模板 `TE官方模板_dataTrackSample.xlsx`,行业模板 `电商 / 卡牌游戏 / 社交聊天类 / 阅读类APP埋点模板_v1.xlsx`。
455
+
456
+ ---
457
+
458
+ ## Phase 2 — Refine(分 7 段循环)
459
+
460
+ 按顺序,每段一轮对话:
461
+
462
+ 1. **sdk_integration(SDK 集成配置)** — 展示 SDK 集成模式:
463
+ - SDK 集成模式(client_only / server_only / both)
464
+ - 客户端 SDK 类型及开发语言(如有)
465
+ - 服务端开发语言(如有)
466
+
467
+ **展示示例**:
468
+ ```
469
+ SDK 集成配置:
470
+ - 集成模式:both(客户端 + 服务端)
471
+ - 客户端:Android SDK(Java)
472
+ - 服务端:Java(Spring Boot)
473
+
474
+ 代码埋点提示:
475
+ - 客户端事件:使用 Android SDK API(TDAnalytics.track())
476
+ - 服务端事件:使用 Java SDK API(TaAnalytics.track())
477
+ ```
478
+
479
+ 2. **user_identity(用户体系)** — 展示用户体系配置:
480
+ - 账号 ID 来源及取值说明
481
+ - 访客 ID 生成策略
482
+ - 提示用户代码埋点时对应的 SDK 调用(`login()` / `identify()`)
483
+
484
+ **展示示例**:
485
+ ```
486
+ 用户体系配置:
487
+ - 账号 ID 来源:user_id(用户注册 ID)
488
+ - 访客 ID 策略:auto(SDK 自动生成)
489
+
490
+ 代码埋点提示:
491
+ - 用户登录时调用:ta.login("<用户ID>")
492
+ - 用户退出登录时调用:ta.logout()
493
+ ```
494
+
495
+ 3. **events(业务事件)** — 表格展示,**按 platform 分组**:
496
+ - **客户端事件**(`platform === "client"`):用户行为事件
497
+ - **服务端事件**(`platform === "server"`):业务数据事件
498
+ - **两端同时上报**(`platform === "both"`):特殊标记
499
+
500
+ 表格列:`event_name` / `display_name` / `platform` / `event_tag` / `event_desc` / `prop_names`
501
+
502
+ **仅展示 `source != "autotrack"` 的业务事件**
503
+
504
+ 4. **events(自动采集事件)** — 单独表格展示 SDK 自动采集事件(`source == "autotrack"`)
505
+ - 仅在 `sdk_integration_mode !== "server_only"` 时展示
506
+ - 提示用户"这些是 SDK 自动采集事件,无需代码埋点,SDK 初始化时开启即可"
507
+
508
+ 5. **common_event_properties** — 表格(`name` / `display_name` / `type` / `desc`)
509
+ - 提示用户:公共属性是每个事件都会携带的属性,适合**业务全局维度**
510
+ - **举例需结合应用实际情况**:
511
+ - H5/Web 应用:`channel`(来源渠道)、`referrer_domain`(来源域名)
512
+ - 手机 APP:`channel`、`app_version`(应用版本)、`platform`(iOS/Android)
513
+ - 游戏:`channel`、`vip_level`(会员等级)、`server_id`(服务器 ID)
514
+ - 小程序:`channel`、`scene`(进入场景值)
515
+ - **警告**:不要将 SDK 预置属性设为公共属性
516
+ - 预置属性以 `#` 开头,由 SDK 自动采集
517
+ - 根据已选定的客户端 SDK 类型,从 wiki 查找对应预置属性列表:
518
+ - JavaScript SDK → `wiki/te-docs/raw/接入指南/客户端-sdk/javascript/进阶指南/预置属性.md`
519
+ - Android SDK → `wiki/te-docs/raw/接入指南/客户端-sdk/android/进阶指南/预置属性.md`
520
+ - iOS SDK → `wiki/te-docs/raw/接入指南/客户端-sdk/ios/进阶指南/预置属性.md`
521
+ - Unity SDK → `wiki/te-docs/raw/接入指南/客户端-sdk/游戏引擎/unity/进阶指南/预置属性.md`
522
+ - 其他 SDK → 查找对应 SDK 目录下的 `进阶指南/预置属性.md`
523
+
524
+ 6. **event_properties** — 按事件分组,每组展示其引用的属性
525
+
526
+ 7. **user_properties** — 表格(`name` / `display_name` / `type` / `desc`)
527
+
528
+ 每段流程:
529
+
530
+ 1. 展示当前 draft 对应部分
531
+ 2. 问 **"这段对吗?`ok` 进入下一段,或描述要改什么"**
532
+ 3. 用户给自然语言指令 → 更新 `.ae-tracking/draft.json` → 重跑:
533
+ ```bash
534
+ ae-tracking plan draft --in .ae-tracking/draft.json --out .ae-tracking/draft.xlsx
535
+ ```
536
+ 4. 用户 `ok` 进下一段
537
+
538
+ 允许用户随时说 **"回到第 N 段"** 跳回任意段。
539
+
540
+ ---
541
+
542
+ ### SDK 集成配置展示说明(第 1 段)
543
+
544
+ SDK 集成配置决定代码埋点的实现方式:
545
+
546
+ | 集成模式 | 展示内容 |
547
+ |---|---|
548
+ | `client_only` | SDK 类型 + 开发语言 + 客户端 API 提示 |
549
+ | `server_only` | 服务端语言 + 服务端 API 提示 |
550
+ | `both` | 客户端 SDK + 服务端语言 + 两端 API 提示 |
551
+
552
+ **代码埋点提示**:
553
+ - 客户端事件:提示使用客户端 SDK API
554
+ - 服务端事件:提示使用服务端 SDK API
555
+ - 两端同时上报:提示两端需同步 `#event_time`
556
+
557
+ ---
558
+
559
+ ### 用户体系展示说明(第 2 段)
560
+
561
+ 用户体系配置是埋点方案的关键部分,影响:
562
+ 1. **用户识别准确性** — 登录前后数据能否正确关联
563
+ 2. **代码埋点实现** — 何时调用 `login()` / `identify()` / `logout()` |
564
+ 3. **用户属性上报** — 用户属性关联的是账号 ID 还是访客 ID
565
+
566
+ **展示内容**:
567
+ - 账号 ID 来源(user_account / role_id / none)
568
+ - 账号 ID 具体字段名(如 user_account 时的 user_id / phone / email)
569
+ - 访客 ID 生成策略(auto / device_id / custom)
570
+ - 自定义访客 ID 取值说明(如有)
571
+ - 对应的 SDK 调用时机和代码示例
572
+
573
+ ---
574
+
575
+ ### 业务事件展示说明(第 3 段)
576
+
577
+ **按 platform 分组展示**:
578
+ - 客户端事件:用户行为(页面浏览、点击、搜索等)
579
+ - 服务端事件:业务数据(订单、支付、充值等)
580
+ - 两端同时:需同步时间戳,确保数据关联
581
+
582
+ **平台标记调整**:
583
+ - 用户可通过自然语言指令修改事件的 `platform` 字段
584
+ - 例如:"订单创建改为服务端上报" → `platform: "server"`
585
+
586
+ ---
587
+
588
+ ### 自动采集事件展示说明(第 4 段)
589
+
590
+ - 自动采集事件单独展示在第 2 段,与业务事件分开
591
+ - 自动采集事件不可删除(必须存在),但可修改 `display_name` 和 `event_desc`
592
+ - 自动采集事件的预置属性由 SDK 自动采集,不需要定义到 `event_properties` 池
593
+ - 提示用户在代码中通过 `enableAutoTrack()` 开启对应的自动采集事件
594
+
595
+ ### Refine 阶段的几个启发式建议
596
+
597
+ - **公共属性 vs 事件属性**:
598
+ - 如果一个属性出现在 3 个以上事件上,考虑升为公共属性(减少上报冗余)
599
+ - 公共属性适合**业务维度**:`channel`(来源渠道)、`vip_level`(会员等级)、`ab_test_group`(实验分组)、`is_new_user`(是否新用户)
600
+ - **禁止**将 SDK 预置属性设为公共属性:`#app_version`、`#os`、`#device_model`、`#network_type` 等由 SDK 自动采集,手动设置会造成冗余或冲突
601
+ - **事件要不要有属性**:每个事件至少带一个有语义的属性(如登出事件带 `session_duration_ms`);否则 AE 上传可能被当成无效事件
602
+ - **嵌套属性**:`array_row` 类型的父属性下可以挂 `父.子` 子属性,用来描述一组对象(如 `card_detail.hero_name`)
603
+
604
+ ---
605
+
606
+ ## Phase 2 完成后 — 归档
607
+
608
+ 所有 7 段 Refine 确认完毕后(用户 `ok` 通过第 7 段后),立即归档:
609
+
610
+ ```bash
611
+ cp .ae-tracking/draft.xlsx ./plans/$(date +%F)-<plan_name>.xlsx
612
+ git add ./plans/$(date +%F)-<plan_name>.xlsx
613
+ ```
614
+
615
+ **提示用户**:
616
+ - 归档已完成,后续上传不会覆盖本地文件
617
+ - 上传后可在 AE 后台查看,或继续调整后重新归档
618
+
619
+ ---
620
+
621
+ ## Phase 3 — Token & projectId
622
+
623
+ ### 3.1 获取 AE web 地址
624
+
625
+ ❌ **禁止在此处提供未经确认的示例 URL**,直接询问用户即可。
626
+
627
+ 问用户:**"AE web 地址是什么?"**
628
+
629
+ 用户回答后,保存到 `.ae-tracking/draft.json` 的 `meta.host` 字段。
630
+
631
+ 根据 AE web 地址引导获取和保存 token:
632
+
633
+ ```bash
634
+ ae-tracking auth login --host <host>
635
+ ae-tracking auth status
636
+ ```
637
+
638
+ 常见错误提示与自助恢复:
639
+
640
+ | 错误 | 原因 | 提示用户做什么 |
641
+ |---|---|---|
642
+ | `Chrome JS-from-AppleEvents disabled` | Chrome 禁用了 AppleScript 执行 JS | Chrome 菜单 View → Developer → Allow JavaScript from Apple Events,重试 |
643
+ | `not_mac` | 非 macOS | 手动设置 `export AE_TOKEN=<uuid>`(从 DevTools → Application → Local Storage → `ACCESS_TOKEN` 取,去掉首尾引号)|
644
+ | `NO_TAB_FOUND` | 没在 Chrome 登录 AE | 先在 Chrome 打开并登录 TE,重试 |
645
+
646
+ Token 缓存 20 小时,同 host 下次免取。
647
+
648
+ ### 3.2 获取 AE 项目ID 并更新 draft
649
+
650
+ 问用户:**"AE 项目ID 是什么?请前往 AE 系统「项目管理」→「接入配置」→ 复制「项目ID」,或者查看 AE 系统 URL 参数 currentProjectId=<id>"**
651
+
652
+ 用户提供 projectId 后,更新到 `.ae-tracking/draft.json` 的 `meta.project_id` 字段。
653
+
654
+ ---
655
+
656
+ ## Phase 4 — Upload
657
+
658
+ ### 4.1 检查项目现有方案
659
+
660
+ 上传前先检查项目是否已有埋点方案:
661
+
662
+ ```bash
663
+ ae-tracking plan fetch --project <projectId> --host <host> > .ae-tracking/existing-plan.json
664
+ ```
665
+
666
+ **判断结果**:
667
+ - 文件为空或命令报错 `404` → 项目无方案,直接上传
668
+ - 文件有内容 → 项目已有方案,展示 summary + **冲突检测**
669
+
670
+ **已有方案时展示**:
671
+ ```
672
+ 项目已有埋点方案:
673
+ - 事件数:XX
674
+ - 事件属性数:YY
675
+ - 公共属性数:ZZ
676
+ - 用户属性数:WW
677
+
678
+ 请选择上传方式:
679
+ 1. 追加(保留现有方案,添加新事件/属性)
680
+ 2. 替换(删除现有方案,上传新方案)
681
+
682
+ 追加 / 替换?
683
+ ```
684
+
685
+ ---
686
+
687
+ ### 4.2 追加模式的冲突检测
688
+
689
+ 用户选择"追加"时,**必须检测冲突**(AE merge-by-name 有静默丢弃风险):
690
+
691
+ **读取两份文件**:
692
+ - 既有方案:`.ae-tracking/existing-plan.json`
693
+ - 新方案:`.ae-tracking/draft.json`
694
+
695
+ **检测两类冲突**:
696
+
697
+ #### 冲突类型 A:同名属性类型不一致(严重)
698
+
699
+ AE 规定:同名属性必须类型一致,否则上报数据会被抛弃。
700
+
701
+ **检测逻辑**:
702
+
703
+ 对比 `event_properties` / `common_event_properties` / `user_properties` 三个属性池:
704
+ - 遍历新方案每个属性,在既有方案中查找同名属性
705
+ - 若同名但类型不一致 → 记录为 `property_type_conflict`(严重错误)
706
+
707
+ **冲突展示**:
708
+ ```
709
+ ⚠️ 严重冲突:同名属性类型不一致
710
+
711
+ 以下属性在既有方案和新方案中类型不同,
712
+ 追加上传会导致上报数据被抛弃:
713
+
714
+ | 属性名 | 既有类型 | 新方案类型 |
715
+ |---|---|---|
716
+ | order_amount | number | string |
717
+ | vip_level | string | number |
718
+
719
+ 建议:
720
+ 1. 修改新方案的属性类型,与既有方案一致
721
+ 2. 或选择「替换」模式重新定义类型
722
+
723
+ 继续追加(不修复) / 修改 draft / 改用替换?
724
+ ```
725
+
726
+ #### 冲突类型 B:同名事件(提醒)
727
+
728
+ AE merge-by-name:同名事件不覆盖,新名事件新增。
729
+
730
+ **检测逻辑**:
731
+
732
+ 遍历新方案每个事件,在既有方案中查找同名事件:
733
+ - 若同名事件已存在 → 记录为 `event_exists`(提醒,非错误)
734
+
735
+ **冲突展示**(仅有提醒时):
736
+ ```
737
+ ⚠️ 提醒:以下事件已存在于项目中(追加模式不会覆盖)
738
+
739
+ - user_login(既有:2 属性,新方案:3 属性)
740
+ - order_create(既有:5 属性,新方案:5 属性)
741
+
742
+ 追加后:
743
+ - 既有事件的属性关联不会改变
744
+ - 既有事件的新属性不会被添加
745
+ - 新事件会正常添加
746
+
747
+ 是否继续追加?yes / no
748
+ ```
749
+
750
+ ---
751
+
752
+ ### 4.3 上传流程
753
+
754
+ 根据冲突检测结果决定:
755
+
756
+ | 检测结果 | 处理方式 |
757
+ |---|---|
758
+ | 无冲突 | 直接上传 |
759
+ | 仅有提醒(类型 B) | 用户确认后上传 |
760
+ | 有严重冲突(类型 A) | 用户修复或改用替换 |
761
+
762
+ 上传命令:
763
+ ```bash
764
+ ae-tracking plan upload --project <projectId> --xlsx .ae-tracking/draft.xlsx [--replace]
765
+ ```
766
+
767
+ - **加 `--replace`**:先删除项目现有方案再上传(用户选择"替换"时,或严重冲突改用替换)
768
+ - **不加 `--replace`**:AE merge-by-name 合并(无冲突或仅有提醒,用户确认追加)
769
+
770
+ 成功上传后,提示用户去 AE 后台确认,**提供完整 URL**。
771
+
772
+ ---
773
+
774
+ ### 4.4 上传失败处理与自动修复
775
+
776
+ 上传时使用 `--auto-fix` 选项(默认开启),CLI 会自动检测错误并修复:
777
+
778
+ ```bash
779
+ ae-tracking plan upload --project <projectId> --xlsx .ae-tracking/draft.xlsx --draft .ae-tracking/draft.json [--replace]
780
+ ```
781
+
782
+ #### AE API 错误类型
783
+
784
+ | 错误类型 | 错误描述 | 自动修复 |
785
+ |---|---|---|
786
+ | `event_prop_display_duplicate` | 事件属性显示名重复 | ✅ 添加区分前缀 |
787
+ | `complex_event_property_should_has_same_child_property` | 对象组子属性不一致 | ✅ 补充缺失子属性 |
788
+ | `event_name_duplicate` | 事件名重复 | ✅ 移除后续重复事件 |
789
+ | `property_type_conflict` | 属性类型不一致(追加模式) | ❌ 改用替换模式 |
790
+
791
+ #### 自动修复流程
792
+
793
+ CLI 自动执行:
794
+ 1. 上传 xlsx 到 TE
795
+ 2. 检查 `eventErrorMap` 是否有错误
796
+ 3. 有可修复错误 → 自动修复 draft.json → 重新生成 xlsx → 重新上传
797
+ 4. 循环最多 3 次,超过后提示用户手动介入
798
+
799
+ **示例输出**:
800
+ ```
801
+ 🔧 Auto-fixing upload errors (attempt 1/3)...
802
+ Fixed: 修复对象组子属性不一致, 修复显示名重复
803
+ [plan-upload] regenerated: .ae-tracking/draft.xlsx
804
+ ```
805
+
806
+ ---
807
+
808
+ ### 4.5 成功后处理
809
+
810
+ 成功上传后,提示用户去 AE 后台确认,**提供完整 URL**
811
+
812
+ ## 禁止
813
+
814
+ - 一次问完所有 anchor 问题
815
+ - 跳过 Phase 3 直接 upload
816
+ - 手动拼 xlsx 绕过 `.ae-tracking/draft.json`
817
+ - 在 skill 里直接 `fetch` AE API —— 所有 AE 通信必须通过项目的脚本 / 未来的 CLI
818
+
819
+ ---
820
+
821
+ ## 内部参考(贡献者用,不是 skill 使用路径)
822
+
823
+ - `skills/generate-tracking-plan/references/te-api.md` — AE 后端三个端点的抓包文档
824
+ - `skills/generate-tracking-plan/references/xlsx-schema.md` — xlsx 格式契约(writer 规则 + reader 兼容)
825
+ - `skills/generate-tracking-plan/references/autotrack-events.md` — SDK 自动采集事件定义(各平台事件列表 + SDK 类型映射)
826
+ - `src/plan/types.ts` — Draft 的 TypeScript 类型定义