create-entity-app-server 0.0.4 → 0.1.13

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 (563) hide show
  1. package/.gitignore +1 -0
  2. package/README.md +11 -0
  3. package/bin/create.js +13 -8
  4. package/{dist → dist-create/template}/.env +3 -0
  5. package/{dist → dist-create/template}/.env.example +3 -0
  6. package/dist-create/template/.gateway-version +1 -0
  7. package/{dist → dist-create/template}/app/plugins/2fa/config.json +1 -2
  8. package/{dist → dist-create/template}/app/plugins/alimtalk/entity-adapter.ts +1 -1
  9. package/{dist → dist-create/template}/app/plugins/example/config.json +1 -3
  10. package/{dist → dist-create/template}/app/plugins/friendtalk/entity-adapter.ts +1 -1
  11. package/{dist → dist-create/template}/app/plugins/llm/chatbot-store.ts +2 -2
  12. package/{dist → dist-create/template}/app/plugins/oauth/config.json +0 -2
  13. package/dist-create/template/app/plugins/ocr/cache.ts +1 -0
  14. package/dist-create/template/app/plugins/ocr/config.ts +1 -0
  15. package/dist-create/template/app/plugins/ocr/direction.ts +1 -0
  16. package/dist-create/template/app/plugins/ocr/dispatch.ts +1 -0
  17. package/dist-create/template/app/plugins/ocr/entity-adapter.ts +1 -0
  18. package/dist-create/template/app/plugins/ocr/errors.ts +1 -0
  19. package/dist-create/template/app/plugins/ocr/handlers.ts +1 -0
  20. package/dist-create/template/app/plugins/ocr/index.ts +1 -0
  21. package/dist-create/template/app/plugins/ocr/llm-parser.ts +1 -0
  22. package/dist-create/template/app/plugins/ocr/parsing-pipeline.ts +1 -0
  23. package/dist-create/template/app/plugins/ocr/pdf-converter.ts +1 -0
  24. package/dist-create/template/app/plugins/ocr/preprocessor.ts +1 -0
  25. package/dist-create/template/app/plugins/ocr/providers/aws.ts +1 -0
  26. package/dist-create/template/app/plugins/ocr/providers/azure.ts +1 -0
  27. package/dist-create/template/app/plugins/ocr/providers/google.ts +1 -0
  28. package/dist-create/template/app/plugins/ocr/providers/index.ts +1 -0
  29. package/dist-create/template/app/plugins/ocr/providers/naver.ts +1 -0
  30. package/dist-create/template/app/plugins/ocr/providers/tesseract.ts +1 -0
  31. package/dist-create/template/app/plugins/ocr/providers/upstage.ts +1 -0
  32. package/dist-create/template/app/plugins/ocr/quota.ts +1 -0
  33. package/dist-create/template/app/plugins/ocr/refiner.ts +1 -0
  34. package/dist-create/template/app/plugins/ocr/routes.ts +1 -0
  35. package/dist-create/template/app/plugins/ocr/service.ts +1 -0
  36. package/dist-create/template/app/plugins/ocr/template-loader.ts +1 -0
  37. package/dist-create/template/app/plugins/ocr/template-matcher.ts +1 -0
  38. package/dist-create/template/app/plugins/ocr/types/config.ts +1 -0
  39. package/dist-create/template/app/plugins/ocr/types/driver.ts +1 -0
  40. package/dist-create/template/app/plugins/ocr/types/index.ts +1 -0
  41. package/dist-create/template/app/plugins/ocr/types/parsed.ts +1 -0
  42. package/dist-create/template/app/plugins/ocr/types/store.ts +1 -0
  43. package/dist-create/template/app/plugins/ocr/types/template.ts +1 -0
  44. package/dist-create/template/app/plugins/ocr/utils.ts +1 -0
  45. package/dist-create/template/app/plugins/sms/config.ts +158 -0
  46. package/dist-create/template/app/plugins/sms/entity-adapter.ts +213 -0
  47. package/dist-create/template/app/plugins/sms/handlers.ts +149 -0
  48. package/dist-create/template/app/plugins/sms/index.ts +93 -0
  49. package/dist-create/template/app/plugins/sms/providers/aligo.ts +73 -0
  50. package/dist-create/template/app/plugins/sms/providers/aws-sns.ts +182 -0
  51. package/dist-create/template/app/plugins/sms/providers/index.ts +47 -0
  52. package/dist-create/template/app/plugins/sms/providers/nhn.ts +82 -0
  53. package/dist-create/template/app/plugins/sms/providers/ppurio.ts +76 -0
  54. package/dist-create/template/app/plugins/sms/providers/solapi.ts +83 -0
  55. package/dist-create/template/app/plugins/sms/routes.ts +23 -0
  56. package/dist-create/template/app/plugins/sms/service.ts +239 -0
  57. package/dist-create/template/app/plugins/sms/types/client.ts +41 -0
  58. package/dist-create/template/app/plugins/sms/types/config.ts +46 -0
  59. package/dist-create/template/app/plugins/sms/types/index.ts +3 -0
  60. package/dist-create/template/app/plugins/sms/types/job.ts +51 -0
  61. package/dist-create/template/app/plugins/sms/verification.ts +162 -0
  62. package/dist-create/template/app/plugins/smtp/config.json +3 -0
  63. package/dist-create/template/app/plugins/smtp/config.ts +1 -0
  64. package/dist-create/template/app/plugins/smtp/handlers.ts +1 -0
  65. package/dist-create/template/app/plugins/smtp/index.ts +1 -0
  66. package/dist-create/template/app/plugins/smtp/routes.ts +1 -0
  67. package/dist-create/template/app/plugins/smtp/types/config.ts +1 -0
  68. package/dist-create/template/app/plugins/smtp/types/index.ts +1 -0
  69. package/{dist → dist-create/template}/app/plugins/vessel_kr/config.json +1 -3
  70. package/dist-create/template/app/routes/account/change-password/config.json +3 -0
  71. package/dist-create/template/app/routes/account/config.json +3 -0
  72. package/dist-create/template/app/routes/account/reactivate/config.json +3 -0
  73. package/{dist → dist-create/template}/app/routes/account/register/config.json +1 -3
  74. package/dist-create/template/app/routes/approval/config.json +3 -0
  75. package/dist-create/template/app/routes/auth/config.json +3 -0
  76. package/dist-create/template/app/routes/board/config.json +3 -0
  77. package/dist-create/template/app/routes/email-verify/config-loader.ts +47 -0
  78. package/dist-create/template/app/routes/email-verify/config.json +13 -0
  79. package/dist-create/template/app/routes/email-verify/entities/account.json +23 -0
  80. package/dist-create/template/app/routes/email-verify/handlers/activate.ts +103 -0
  81. package/dist-create/template/app/routes/email-verify/handlers/change.ts +106 -0
  82. package/dist-create/template/app/routes/email-verify/handlers/confirm.ts +87 -0
  83. package/dist-create/template/app/routes/email-verify/handlers/index.ts +20 -0
  84. package/dist-create/template/app/routes/email-verify/handlers/send.ts +157 -0
  85. package/dist-create/template/app/routes/email-verify/handlers/status.ts +53 -0
  86. package/dist-create/template/app/routes/email-verify/handlers/utils.ts +85 -0
  87. package/dist-create/template/app/routes/email-verify/routes.ts +54 -0
  88. package/dist-create/template/app/routes/email-verify/templates/verification.html +15 -0
  89. package/dist-create/template/app/routes/email-verify/templates/verification_link.html +19 -0
  90. package/dist-create/template/app/routes/email-verify/types/index.ts +77 -0
  91. package/dist-create/template/app/routes/email-verify/verification-utils.ts +57 -0
  92. package/dist-create/template/app/routes/example-db/config.json +3 -0
  93. package/dist-create/template/app/routes/example-db/handlers.ts +220 -0
  94. package/dist-create/template/app/routes/example-db/models/account-ext.ts +33 -0
  95. package/dist-create/template/app/routes/example-db/models/users.ts +30 -0
  96. package/dist-create/template/app/routes/example-db/routes.ts +23 -0
  97. package/dist-create/template/app/routes/example-db/types/defaults.ts +21 -0
  98. package/dist-create/template/app/routes/example-db/types/index.ts +4 -0
  99. package/dist-create/template/app/routes/example-db/types/params.ts +3 -0
  100. package/dist-create/template/app/routes/example-db/types/query.ts +6 -0
  101. package/dist-create/template/app/routes/example-db/types/user.ts +11 -0
  102. package/dist-create/template/app/routes/example-es/config.json +3 -0
  103. package/dist-create/template/app/routes/example-es/handlers.ts +216 -0
  104. package/dist-create/template/app/routes/example-es/routes.ts +24 -0
  105. package/dist-create/template/app/routes/example-es/types/defaults.ts +30 -0
  106. package/dist-create/template/app/routes/example-es/types/index.ts +4 -0
  107. package/dist-create/template/app/routes/example-es/types/params.ts +3 -0
  108. package/dist-create/template/app/routes/example-es/types/post.ts +12 -0
  109. package/dist-create/template/app/routes/example-es/types/query.ts +14 -0
  110. package/dist-create/template/app/routes/health/config.json +3 -0
  111. package/dist-create/template/app/routes/health/handlers.ts +69 -0
  112. package/dist-create/template/app/routes/health/routes.ts +14 -0
  113. package/dist-create/template/app/routes/privilege/config.json +3 -0
  114. package/dist-create/template/app/routes/user/config.json +3 -0
  115. package/{dist → dist-create/template}/app/schedules/data-retention/config.json +1 -3
  116. package/{dist → dist-create/template}/app/schedules/dormancy/config.json +1 -3
  117. package/{dist → dist-create/template}/docs/scripts-guide.md +101 -30
  118. package/dist-create/template/scripts/update-server.sh +391 -0
  119. package/dist-create/template/system-api.js +1 -0
  120. package/dist-create/template/system.js +1 -0
  121. package/package.json +105 -104
  122. package/dist/app/plugins/ocr/cache.ts +0 -1
  123. package/dist/app/plugins/ocr/config.ts +0 -1
  124. package/dist/app/plugins/ocr/direction.ts +0 -1
  125. package/dist/app/plugins/ocr/dispatch.ts +0 -1
  126. package/dist/app/plugins/ocr/entity-adapter.ts +0 -1
  127. package/dist/app/plugins/ocr/errors.ts +0 -1
  128. package/dist/app/plugins/ocr/handlers.ts +0 -1
  129. package/dist/app/plugins/ocr/index.ts +0 -1
  130. package/dist/app/plugins/ocr/llm-parser.ts +0 -1
  131. package/dist/app/plugins/ocr/parsing-pipeline.ts +0 -1
  132. package/dist/app/plugins/ocr/pdf-converter.ts +0 -1
  133. package/dist/app/plugins/ocr/preprocessor.ts +0 -1
  134. package/dist/app/plugins/ocr/providers/aws.ts +0 -1
  135. package/dist/app/plugins/ocr/providers/azure.ts +0 -1
  136. package/dist/app/plugins/ocr/providers/google.ts +0 -1
  137. package/dist/app/plugins/ocr/providers/index.ts +0 -1
  138. package/dist/app/plugins/ocr/providers/naver.ts +0 -1
  139. package/dist/app/plugins/ocr/providers/tesseract.ts +0 -1
  140. package/dist/app/plugins/ocr/providers/upstage.ts +0 -1
  141. package/dist/app/plugins/ocr/quota.ts +0 -1
  142. package/dist/app/plugins/ocr/refiner.ts +0 -1
  143. package/dist/app/plugins/ocr/routes.ts +0 -1
  144. package/dist/app/plugins/ocr/service.ts +0 -1
  145. package/dist/app/plugins/ocr/template-loader.ts +0 -1
  146. package/dist/app/plugins/ocr/template-matcher.ts +0 -1
  147. package/dist/app/plugins/ocr/types/config.ts +0 -1
  148. package/dist/app/plugins/ocr/types/driver.ts +0 -1
  149. package/dist/app/plugins/ocr/types/index.ts +0 -1
  150. package/dist/app/plugins/ocr/types/parsed.ts +0 -1
  151. package/dist/app/plugins/ocr/types/store.ts +0 -1
  152. package/dist/app/plugins/ocr/types/template.ts +0 -1
  153. package/dist/app/plugins/ocr/utils.ts +0 -1
  154. package/dist/app/plugins/sms/config.ts +0 -1
  155. package/dist/app/plugins/sms/entity-adapter.ts +0 -1
  156. package/dist/app/plugins/sms/handlers.ts +0 -1
  157. package/dist/app/plugins/sms/index.ts +0 -1
  158. package/dist/app/plugins/sms/providers/aligo.ts +0 -1
  159. package/dist/app/plugins/sms/providers/aws-sns.ts +0 -1
  160. package/dist/app/plugins/sms/providers/index.ts +0 -1
  161. package/dist/app/plugins/sms/providers/nhn.ts +0 -1
  162. package/dist/app/plugins/sms/providers/ppurio.ts +0 -1
  163. package/dist/app/plugins/sms/providers/solapi.ts +0 -1
  164. package/dist/app/plugins/sms/routes.ts +0 -1
  165. package/dist/app/plugins/sms/service.ts +0 -1
  166. package/dist/app/plugins/sms/types/client.ts +0 -1
  167. package/dist/app/plugins/sms/types/config.ts +0 -1
  168. package/dist/app/plugins/sms/types/index.ts +0 -1
  169. package/dist/app/plugins/sms/types/job.ts +0 -1
  170. package/dist/app/plugins/sms/verification.ts +0 -1
  171. package/dist/app/plugins/smtp/config.json +0 -5
  172. package/dist/app/plugins/smtp/config.ts +0 -1
  173. package/dist/app/plugins/smtp/handlers.ts +0 -1
  174. package/dist/app/plugins/smtp/index.ts +0 -1
  175. package/dist/app/plugins/smtp/routes.ts +0 -1
  176. package/dist/app/plugins/smtp/types/config.ts +0 -1
  177. package/dist/app/plugins/smtp/types/index.ts +0 -1
  178. package/dist/app/routes/account/change-password/config.json +0 -5
  179. package/dist/app/routes/account/config.json +0 -5
  180. package/dist/app/routes/account/reactivate/config.json +0 -5
  181. package/dist/app/routes/approval/config.json +0 -5
  182. package/dist/app/routes/auth/config.json +0 -5
  183. package/dist/app/routes/board/config.json +0 -5
  184. package/dist/app/routes/password-reset/config.json +0 -15
  185. package/dist/app/routes/privilege/config.json +0 -5
  186. package/dist/app/routes/user/config.json +0 -5
  187. package/dist/logs/access.1.log +0 -0
  188. package/dist/system-api.js +0 -1
  189. package/dist/system.js +0 -1
  190. /package/{dist → dist-create/template}/app/hooks/README.md +0 -0
  191. /package/{dist → dist-create/template}/app/hooks/account.ts +0 -0
  192. /package/{dist → dist-create/template}/app/hooks/index.ts +0 -0
  193. /package/{dist → dist-create/template}/app/hooks/order.ts +0 -0
  194. /package/{dist → dist-create/template}/app/hooks/post.ts +0 -0
  195. /package/{dist → dist-create/template}/app/plugins/2fa/config.ts +0 -0
  196. /package/{dist → dist-create/template}/app/plugins/2fa/docs/README.md +0 -0
  197. /package/{dist → dist-create/template}/app/plugins/2fa/entities/account.json +0 -0
  198. /package/{dist → dist-create/template}/app/plugins/2fa/handlers/disable.ts +0 -0
  199. /package/{dist → dist-create/template}/app/plugins/2fa/handlers/index.ts +0 -0
  200. /package/{dist → dist-create/template}/app/plugins/2fa/handlers/recovery.ts +0 -0
  201. /package/{dist → dist-create/template}/app/plugins/2fa/handlers/regenerate.ts +0 -0
  202. /package/{dist → dist-create/template}/app/plugins/2fa/handlers/setup-verify.ts +0 -0
  203. /package/{dist → dist-create/template}/app/plugins/2fa/handlers/setup.ts +0 -0
  204. /package/{dist → dist-create/template}/app/plugins/2fa/handlers/status.ts +0 -0
  205. /package/{dist → dist-create/template}/app/plugins/2fa/handlers/utils.ts +0 -0
  206. /package/{dist → dist-create/template}/app/plugins/2fa/handlers/verify.ts +0 -0
  207. /package/{dist → dist-create/template}/app/plugins/2fa/index.ts +0 -0
  208. /package/{dist → dist-create/template}/app/plugins/2fa/routes.ts +0 -0
  209. /package/{dist → dist-create/template}/app/plugins/2fa/templates/auth/2fa_disabled.html +0 -0
  210. /package/{dist → dist-create/template}/app/plugins/2fa/templates/auth/2fa_recovery_regenerated.html +0 -0
  211. /package/{dist → dist-create/template}/app/plugins/2fa/templates/auth/2fa_setup_complete.html +0 -0
  212. /package/{dist → dist-create/template}/app/plugins/2fa/totp-utils.ts +0 -0
  213. /package/{dist → dist-create/template}/app/plugins/2fa/types.ts +0 -0
  214. /package/{dist → dist-create/template}/app/plugins/README.md +0 -0
  215. /package/{dist → dist-create/template}/app/plugins/alimtalk/config.json +0 -0
  216. /package/{dist → dist-create/template}/app/plugins/alimtalk/config.ts +0 -0
  217. /package/{dist → dist-create/template}/app/plugins/alimtalk/docs/README.md +0 -0
  218. /package/{dist → dist-create/template}/app/plugins/alimtalk/entities/alimtalk_log.json +0 -0
  219. /package/{dist → dist-create/template}/app/plugins/alimtalk/entities/alimtalk_msg.json +0 -0
  220. /package/{dist → dist-create/template}/app/plugins/alimtalk/handlers.ts +0 -0
  221. /package/{dist → dist-create/template}/app/plugins/alimtalk/index.ts +0 -0
  222. /package/{dist → dist-create/template}/app/plugins/alimtalk/providers/aligo.ts +0 -0
  223. /package/{dist → dist-create/template}/app/plugins/alimtalk/providers/index.ts +0 -0
  224. /package/{dist → dist-create/template}/app/plugins/alimtalk/providers/nhn.ts +0 -0
  225. /package/{dist → dist-create/template}/app/plugins/alimtalk/providers/ppurio.ts +0 -0
  226. /package/{dist → dist-create/template}/app/plugins/alimtalk/providers/solapi.ts +0 -0
  227. /package/{dist → dist-create/template}/app/plugins/alimtalk/routes.ts +0 -0
  228. /package/{dist → dist-create/template}/app/plugins/alimtalk/service.ts +0 -0
  229. /package/{dist → dist-create/template}/app/plugins/alimtalk/template-cache.ts +0 -0
  230. /package/{dist → dist-create/template}/app/plugins/alimtalk/templates/alimtalk.json +0 -0
  231. /package/{dist → dist-create/template}/app/plugins/alimtalk/types/client.ts +0 -0
  232. /package/{dist → dist-create/template}/app/plugins/alimtalk/types/config.ts +0 -0
  233. /package/{dist → dist-create/template}/app/plugins/alimtalk/types/friendtalk.ts +0 -0
  234. /package/{dist → dist-create/template}/app/plugins/alimtalk/types/index.ts +0 -0
  235. /package/{dist → dist-create/template}/app/plugins/alimtalk/types/job.ts +0 -0
  236. /package/{dist → dist-create/template}/app/plugins/alimtalk/webhook.ts +0 -0
  237. /package/{dist → dist-create/template}/app/plugins/example/config.ts +0 -0
  238. /package/{dist → dist-create/template}/app/plugins/example/docs/README.md +0 -0
  239. /package/{dist → dist-create/template}/app/plugins/example/entity-adapter.ts +0 -0
  240. /package/{dist → dist-create/template}/app/plugins/example/handlers.ts +0 -0
  241. /package/{dist → dist-create/template}/app/plugins/example/index.ts +0 -0
  242. /package/{dist → dist-create/template}/app/plugins/example/routes.ts +0 -0
  243. /package/{dist → dist-create/template}/app/plugins/example/service.ts +0 -0
  244. /package/{dist → dist-create/template}/app/plugins/example/types/config.ts +0 -0
  245. /package/{dist → dist-create/template}/app/plugins/example/types/index.ts +0 -0
  246. /package/{dist → dist-create/template}/app/plugins/friendtalk/config.json +0 -0
  247. /package/{dist → dist-create/template}/app/plugins/friendtalk/config.ts +0 -0
  248. /package/{dist → dist-create/template}/app/plugins/friendtalk/docs/README.md +0 -0
  249. /package/{dist → dist-create/template}/app/plugins/friendtalk/entities/friendtalk_log.json +0 -0
  250. /package/{dist → dist-create/template}/app/plugins/friendtalk/entities/friendtalk_msg.json +0 -0
  251. /package/{dist → dist-create/template}/app/plugins/friendtalk/handlers.ts +0 -0
  252. /package/{dist → dist-create/template}/app/plugins/friendtalk/routes.ts +0 -0
  253. /package/{dist → dist-create/template}/app/plugins/friendtalk/templates/friendtalk.json +0 -0
  254. /package/{dist → dist-create/template}/app/plugins/holidays/config.json +0 -0
  255. /package/{dist → dist-create/template}/app/plugins/holidays/config.ts +0 -0
  256. /package/{dist → dist-create/template}/app/plugins/holidays/docs/README.md +0 -0
  257. /package/{dist → dist-create/template}/app/plugins/holidays/entities/holiday.json +0 -0
  258. /package/{dist → dist-create/template}/app/plugins/holidays/handlers.ts +0 -0
  259. /package/{dist → dist-create/template}/app/plugins/holidays/index.ts +0 -0
  260. /package/{dist → dist-create/template}/app/plugins/holidays/routes.ts +0 -0
  261. /package/{dist → dist-create/template}/app/plugins/holidays/service.ts +0 -0
  262. /package/{dist → dist-create/template}/app/plugins/holidays/types/api.ts +0 -0
  263. /package/{dist → dist-create/template}/app/plugins/holidays/types/config.ts +0 -0
  264. /package/{dist → dist-create/template}/app/plugins/holidays/types/index.ts +0 -0
  265. /package/{dist → dist-create/template}/app/plugins/identity/config.json +0 -0
  266. /package/{dist → dist-create/template}/app/plugins/identity/config.ts +0 -0
  267. /package/{dist → dist-create/template}/app/plugins/identity/crypto.ts +0 -0
  268. /package/{dist → dist-create/template}/app/plugins/identity/docs/README.md +0 -0
  269. /package/{dist → dist-create/template}/app/plugins/identity/entities/account.json +0 -0
  270. /package/{dist → dist-create/template}/app/plugins/identity/entities/identity_verification.json +0 -0
  271. /package/{dist → dist-create/template}/app/plugins/identity/entity-adapter.ts +0 -0
  272. /package/{dist → dist-create/template}/app/plugins/identity/handlers.ts +0 -0
  273. /package/{dist → dist-create/template}/app/plugins/identity/index.ts +0 -0
  274. /package/{dist → dist-create/template}/app/plugins/identity/providers/danal.ts +0 -0
  275. /package/{dist → dist-create/template}/app/plugins/identity/providers/index.ts +0 -0
  276. /package/{dist → dist-create/template}/app/plugins/identity/providers/kmc.ts +0 -0
  277. /package/{dist → dist-create/template}/app/plugins/identity/providers/nice.ts +0 -0
  278. /package/{dist → dist-create/template}/app/plugins/identity/routes.ts +0 -0
  279. /package/{dist → dist-create/template}/app/plugins/identity/service.ts +0 -0
  280. /package/{dist → dist-create/template}/app/plugins/identity/types/config.ts +0 -0
  281. /package/{dist → dist-create/template}/app/plugins/identity/types/index.ts +0 -0
  282. /package/{dist → dist-create/template}/app/plugins/identity/types/verification.ts +0 -0
  283. /package/{dist → dist-create/template}/app/plugins/llm/cache.ts +0 -0
  284. /package/{dist → dist-create/template}/app/plugins/llm/chunker.ts +0 -0
  285. /package/{dist → dist-create/template}/app/plugins/llm/config.json +0 -0
  286. /package/{dist → dist-create/template}/app/plugins/llm/config.ts +0 -0
  287. /package/{dist → dist-create/template}/app/plugins/llm/conversation-store.ts +0 -0
  288. /package/{dist → dist-create/template}/app/plugins/llm/docs/README.md +0 -0
  289. /package/{dist → dist-create/template}/app/plugins/llm/docs/api.md +0 -0
  290. /package/{dist → dist-create/template}/app/plugins/llm/document-store.ts +0 -0
  291. /package/{dist → dist-create/template}/app/plugins/llm/entities/llm_chatbot.json +0 -0
  292. /package/{dist → dist-create/template}/app/plugins/llm/entities/llm_conversation.json +0 -0
  293. /package/{dist → dist-create/template}/app/plugins/llm/entities/llm_document.json +0 -0
  294. /package/{dist → dist-create/template}/app/plugins/llm/entities/llm_usage.json +0 -0
  295. /package/{dist → dist-create/template}/app/plugins/llm/entities/llm_user_profile.json +0 -0
  296. /package/{dist → dist-create/template}/app/plugins/llm/handlers.ts +0 -0
  297. /package/{dist → dist-create/template}/app/plugins/llm/index.ts +0 -0
  298. /package/{dist → dist-create/template}/app/plugins/llm/profile-store.ts +0 -0
  299. /package/{dist → dist-create/template}/app/plugins/llm/providers/anthropic.ts +0 -0
  300. /package/{dist → dist-create/template}/app/plugins/llm/providers/azure.ts +0 -0
  301. /package/{dist → dist-create/template}/app/plugins/llm/providers/gemini.ts +0 -0
  302. /package/{dist → dist-create/template}/app/plugins/llm/providers/index.ts +0 -0
  303. /package/{dist → dist-create/template}/app/plugins/llm/providers/ollama.ts +0 -0
  304. /package/{dist → dist-create/template}/app/plugins/llm/providers/openai.ts +0 -0
  305. /package/{dist → dist-create/template}/app/plugins/llm/routes.ts +0 -0
  306. /package/{dist → dist-create/template}/app/plugins/llm/service.ts +0 -0
  307. /package/{dist → dist-create/template}/app/plugins/llm/template-loader.ts +0 -0
  308. /package/{dist → dist-create/template}/app/plugins/llm/templates/prompts/extract_json.json +0 -0
  309. /package/{dist → dist-create/template}/app/plugins/llm/templates/prompts/summarize.json +0 -0
  310. /package/{dist → dist-create/template}/app/plugins/llm/templates/prompts/translate.json +0 -0
  311. /package/{dist → dist-create/template}/app/plugins/llm/types/chat.ts +0 -0
  312. /package/{dist → dist-create/template}/app/plugins/llm/types/chatbot.ts +0 -0
  313. /package/{dist → dist-create/template}/app/plugins/llm/types/config.ts +0 -0
  314. /package/{dist → dist-create/template}/app/plugins/llm/types/conversation.ts +0 -0
  315. /package/{dist → dist-create/template}/app/plugins/llm/types/index.ts +0 -0
  316. /package/{dist → dist-create/template}/app/plugins/llm/types/profile.ts +0 -0
  317. /package/{dist → dist-create/template}/app/plugins/llm/types/store.ts +0 -0
  318. /package/{dist → dist-create/template}/app/plugins/llm/types/usage.ts +0 -0
  319. /package/{dist → dist-create/template}/app/plugins/llm/usage-store.ts +0 -0
  320. /package/{dist → dist-create/template}/app/plugins/oauth/account/handlers/index.ts +0 -0
  321. /package/{dist → dist-create/template}/app/plugins/oauth/account/handlers/link.ts +0 -0
  322. /package/{dist → dist-create/template}/app/plugins/oauth/account/handlers/providers-list.ts +0 -0
  323. /package/{dist → dist-create/template}/app/plugins/oauth/account/handlers/refresh.ts +0 -0
  324. /package/{dist → dist-create/template}/app/plugins/oauth/account/handlers/unlink.ts +0 -0
  325. /package/{dist → dist-create/template}/app/plugins/oauth/config.ts +0 -0
  326. /package/{dist → dist-create/template}/app/plugins/oauth/docs/README.md +0 -0
  327. /package/{dist → dist-create/template}/app/plugins/oauth/entities/account_oauth.json +0 -0
  328. /package/{dist → dist-create/template}/app/plugins/oauth/handlers/callback.ts +0 -0
  329. /package/{dist → dist-create/template}/app/plugins/oauth/handlers/index.ts +0 -0
  330. /package/{dist → dist-create/template}/app/plugins/oauth/handlers/redirect.ts +0 -0
  331. /package/{dist → dist-create/template}/app/plugins/oauth/index.ts +0 -0
  332. /package/{dist → dist-create/template}/app/plugins/oauth/providers/index.ts +0 -0
  333. /package/{dist → dist-create/template}/app/plugins/oauth/routes.ts +0 -0
  334. /package/{dist → dist-create/template}/app/plugins/oauth/service.ts +0 -0
  335. /package/{dist → dist-create/template}/app/plugins/oauth/state.ts +0 -0
  336. /package/{dist → dist-create/template}/app/plugins/oauth/types/index.ts +0 -0
  337. /package/{dist → dist-create/template}/app/plugins/oauth/upsert.ts +0 -0
  338. /package/{dist → dist-create/template}/app/plugins/ocr/config.json +0 -0
  339. /package/{dist → dist-create/template}/app/plugins/ocr/docs/README.md +0 -0
  340. /package/{dist → dist-create/template}/app/plugins/ocr/docs/api.md +0 -0
  341. /package/{dist → dist-create/template}/app/plugins/ocr/entities/ocr_result.json +0 -0
  342. /package/{dist → dist-create/template}/app/plugins/ocr/entities/ocr_usage.json +0 -0
  343. /package/{dist → dist-create/template}/app/plugins/ocr/templates/business_reg.json +0 -0
  344. /package/{dist → dist-create/template}/app/plugins/ocr/templates/career_cert.json +0 -0
  345. /package/{dist → dist-create/template}/app/plugins/ocr/templates/driver_license.json +0 -0
  346. /package/{dist → dist-create/template}/app/plugins/ocr/templates/facility_card.json +0 -0
  347. /package/{dist → dist-create/template}/app/plugins/ocr/templates/id_card.json +0 -0
  348. /package/{dist → dist-create/template}/app/plugins/ocr/templates/invoice.json +0 -0
  349. /package/{dist → dist-create/template}/app/plugins/ocr/templates/namecard.json +0 -0
  350. /package/{dist → dist-create/template}/app/plugins/ocr/templates/prompts/business_reg.json +0 -0
  351. /package/{dist → dist-create/template}/app/plugins/ocr/templates/prompts/career_cert.json +0 -0
  352. /package/{dist → dist-create/template}/app/plugins/ocr/templates/prompts/driver_license.json +0 -0
  353. /package/{dist → dist-create/template}/app/plugins/ocr/templates/prompts/facility_card.json +0 -0
  354. /package/{dist → dist-create/template}/app/plugins/ocr/templates/prompts/general.json +0 -0
  355. /package/{dist → dist-create/template}/app/plugins/ocr/templates/prompts/id_card.json +0 -0
  356. /package/{dist → dist-create/template}/app/plugins/ocr/templates/prompts/invoice.json +0 -0
  357. /package/{dist → dist-create/template}/app/plugins/ocr/templates/prompts/namecard.json +0 -0
  358. /package/{dist → dist-create/template}/app/plugins/ocr/templates/prompts/receipt.json +0 -0
  359. /package/{dist → dist-create/template}/app/plugins/ocr/templates/receipt.json +0 -0
  360. /package/{dist → dist-create/template}/app/plugins/pg/config.json +0 -0
  361. /package/{dist → dist-create/template}/app/plugins/pg/config.ts +0 -0
  362. /package/{dist → dist-create/template}/app/plugins/pg/docs/README.md +0 -0
  363. /package/{dist → dist-create/template}/app/plugins/pg/entities/pg_cancel.json +0 -0
  364. /package/{dist → dist-create/template}/app/plugins/pg/entities/pg_order.json +0 -0
  365. /package/{dist → dist-create/template}/app/plugins/pg/entities/pg_webhook_log.json +0 -0
  366. /package/{dist → dist-create/template}/app/plugins/pg/entity-adapter.ts +0 -0
  367. /package/{dist → dist-create/template}/app/plugins/pg/handlers.ts +0 -0
  368. /package/{dist → dist-create/template}/app/plugins/pg/index.ts +0 -0
  369. /package/{dist → dist-create/template}/app/plugins/pg/providers/danal.ts +0 -0
  370. /package/{dist → dist-create/template}/app/plugins/pg/providers/hecto.ts +0 -0
  371. /package/{dist → dist-create/template}/app/plugins/pg/providers/index.ts +0 -0
  372. /package/{dist → dist-create/template}/app/plugins/pg/providers/inicis.ts +0 -0
  373. /package/{dist → dist-create/template}/app/plugins/pg/providers/kakaopay.ts +0 -0
  374. /package/{dist → dist-create/template}/app/plugins/pg/providers/kcp.ts +0 -0
  375. /package/{dist → dist-create/template}/app/plugins/pg/providers/naverpay.ts +0 -0
  376. /package/{dist → dist-create/template}/app/plugins/pg/providers/payco.ts +0 -0
  377. /package/{dist → dist-create/template}/app/plugins/pg/providers/payletter.ts +0 -0
  378. /package/{dist → dist-create/template}/app/plugins/pg/providers/paypal.ts +0 -0
  379. /package/{dist → dist-create/template}/app/plugins/pg/providers/toss.ts +0 -0
  380. /package/{dist → dist-create/template}/app/plugins/pg/providers/wanna.ts +0 -0
  381. /package/{dist → dist-create/template}/app/plugins/pg/routes.ts +0 -0
  382. /package/{dist → dist-create/template}/app/plugins/pg/service.ts +0 -0
  383. /package/{dist → dist-create/template}/app/plugins/pg/types/client.ts +0 -0
  384. /package/{dist → dist-create/template}/app/plugins/pg/types/config.ts +0 -0
  385. /package/{dist → dist-create/template}/app/plugins/pg/types/error.ts +0 -0
  386. /package/{dist → dist-create/template}/app/plugins/pg/types/index.ts +0 -0
  387. /package/{dist → dist-create/template}/app/plugins/pg/types/payment.ts +0 -0
  388. /package/{dist → dist-create/template}/app/plugins/providers/docs/README.md +0 -0
  389. /package/{dist → dist-create/template}/app/plugins/providers/solapi-auth.ts +0 -0
  390. /package/{dist → dist-create/template}/app/plugins/push/config.json +0 -0
  391. /package/{dist → dist-create/template}/app/plugins/push/config.ts +0 -0
  392. /package/{dist → dist-create/template}/app/plugins/push/docs/README.md +0 -0
  393. /package/{dist → dist-create/template}/app/plugins/push/entities/push_log.json +0 -0
  394. /package/{dist → dist-create/template}/app/plugins/push/entities/push_msg.json +0 -0
  395. /package/{dist → dist-create/template}/app/plugins/push/entity-adapter.ts +0 -0
  396. /package/{dist → dist-create/template}/app/plugins/push/handlers.ts +0 -0
  397. /package/{dist → dist-create/template}/app/plugins/push/index.ts +0 -0
  398. /package/{dist → dist-create/template}/app/plugins/push/providers/apns.ts +0 -0
  399. /package/{dist → dist-create/template}/app/plugins/push/providers/fcm.ts +0 -0
  400. /package/{dist → dist-create/template}/app/plugins/push/providers/index.ts +0 -0
  401. /package/{dist → dist-create/template}/app/plugins/push/providers/utils.ts +0 -0
  402. /package/{dist → dist-create/template}/app/plugins/push/routes.ts +0 -0
  403. /package/{dist → dist-create/template}/app/plugins/push/service.ts +0 -0
  404. /package/{dist → dist-create/template}/app/plugins/push/types/config.ts +0 -0
  405. /package/{dist → dist-create/template}/app/plugins/push/types/index.ts +0 -0
  406. /package/{dist → dist-create/template}/app/plugins/push/types/job.ts +0 -0
  407. /package/{dist → dist-create/template}/app/plugins/shared/docs/README.md +0 -0
  408. /package/{dist → dist-create/template}/app/plugins/sms/config.json +0 -0
  409. /package/{dist → dist-create/template}/app/plugins/sms/docs/README.md +0 -0
  410. /package/{dist → dist-create/template}/app/plugins/sms/entities/sms_log.json +0 -0
  411. /package/{dist → dist-create/template}/app/plugins/sms/entities/sms_msg.json +0 -0
  412. /package/{dist → dist-create/template}/app/plugins/sms/entities/sms_verification.json +0 -0
  413. /package/{dist → dist-create/template}/app/plugins/smtp/docs/README.md +0 -0
  414. /package/{dist → dist-create/template}/app/plugins/smtp/templates/layout.html +0 -0
  415. /package/{dist → dist-create/template}/app/plugins/taxinvoice/config.json +0 -0
  416. /package/{dist → dist-create/template}/app/plugins/taxinvoice/config.ts +0 -0
  417. /package/{dist → dist-create/template}/app/plugins/taxinvoice/docs/README.md +0 -0
  418. /package/{dist → dist-create/template}/app/plugins/taxinvoice/entities/tax_invoice.json +0 -0
  419. /package/{dist → dist-create/template}/app/plugins/taxinvoice/entities/tax_invoice_item.json +0 -0
  420. /package/{dist → dist-create/template}/app/plugins/taxinvoice/entities/tax_invoice_log.json +0 -0
  421. /package/{dist → dist-create/template}/app/plugins/taxinvoice/entities/tax_invoice_party.json +0 -0
  422. /package/{dist → dist-create/template}/app/plugins/taxinvoice/entity-adapter.ts +0 -0
  423. /package/{dist → dist-create/template}/app/plugins/taxinvoice/handlers.ts +0 -0
  424. /package/{dist → dist-create/template}/app/plugins/taxinvoice/index.ts +0 -0
  425. /package/{dist → dist-create/template}/app/plugins/taxinvoice/providers/barobill.ts +0 -0
  426. /package/{dist → dist-create/template}/app/plugins/taxinvoice/providers/bolta.ts +0 -0
  427. /package/{dist → dist-create/template}/app/plugins/taxinvoice/providers/esero.ts +0 -0
  428. /package/{dist → dist-create/template}/app/plugins/taxinvoice/providers/index.ts +0 -0
  429. /package/{dist → dist-create/template}/app/plugins/taxinvoice/providers/popbill.ts +0 -0
  430. /package/{dist → dist-create/template}/app/plugins/taxinvoice/providers/sendbill.ts +0 -0
  431. /package/{dist → dist-create/template}/app/plugins/taxinvoice/providers/smartbill.ts +0 -0
  432. /package/{dist → dist-create/template}/app/plugins/taxinvoice/routes.ts +0 -0
  433. /package/{dist → dist-create/template}/app/plugins/taxinvoice/service.ts +0 -0
  434. /package/{dist → dist-create/template}/app/plugins/taxinvoice/types/client.ts +0 -0
  435. /package/{dist → dist-create/template}/app/plugins/taxinvoice/types/config.ts +0 -0
  436. /package/{dist → dist-create/template}/app/plugins/taxinvoice/types/index.ts +0 -0
  437. /package/{dist → dist-create/template}/app/plugins/taxinvoice/types/invoice.ts +0 -0
  438. /package/{dist → dist-create/template}/app/plugins/taxinvoice/types/queue.ts +0 -0
  439. /package/{dist → dist-create/template}/app/plugins/vessel_kr/config.ts +0 -0
  440. /package/{dist → dist-create/template}/app/plugins/vessel_kr/docs/README.md +0 -0
  441. /package/{dist → dist-create/template}/app/plugins/vessel_kr/entities/vessel_kr_entry.json +0 -0
  442. /package/{dist → dist-create/template}/app/plugins/vessel_kr/handlers.ts +0 -0
  443. /package/{dist → dist-create/template}/app/plugins/vessel_kr/index.ts +0 -0
  444. /package/{dist → dist-create/template}/app/plugins/vessel_kr/routes.ts +0 -0
  445. /package/{dist → dist-create/template}/app/plugins/vessel_kr/service.ts +0 -0
  446. /package/{dist → dist-create/template}/app/plugins/vessel_kr/types/index.ts +0 -0
  447. /package/{dist → dist-create/template}/app/routes/README.md +0 -0
  448. /package/{dist → dist-create/template}/app/routes/account/change-password/entities/password_history.json +0 -0
  449. /package/{dist → dist-create/template}/app/routes/account/change-password/handlers.ts +0 -0
  450. /package/{dist → dist-create/template}/app/routes/account/change-password/routes.ts +0 -0
  451. /package/{dist → dist-create/template}/app/routes/account/reactivate/handlers.ts +0 -0
  452. /package/{dist → dist-create/template}/app/routes/account/reactivate/routes.ts +0 -0
  453. /package/{dist → dist-create/template}/app/routes/account/register/config-loader.ts +0 -0
  454. /package/{dist → dist-create/template}/app/routes/account/register/handlers.ts +0 -0
  455. /package/{dist → dist-create/template}/app/routes/account/register/routes.ts +0 -0
  456. /package/{dist → dist-create/template}/app/routes/account/register/types/index.ts +0 -0
  457. /package/{dist → dist-create/template}/app/routes/account/routes.ts +0 -0
  458. /package/{dist → dist-create/template}/app/routes/account/templates/force_reset.html +0 -0
  459. /package/{dist → dist-create/template}/app/routes/account/templates/welcome.html +0 -0
  460. /package/{dist → dist-create/template}/app/routes/account/withdraw/handlers.ts +0 -0
  461. /package/{dist → dist-create/template}/app/routes/account/withdraw/routes.ts +0 -0
  462. /package/{dist → dist-create/template}/app/routes/approval/entities/approval.json +0 -0
  463. /package/{dist → dist-create/template}/app/routes/approval/entities/comments.json +0 -0
  464. /package/{dist → dist-create/template}/app/routes/approval/entities/reference.json +0 -0
  465. /package/{dist → dist-create/template}/app/routes/approval/routes.ts +0 -0
  466. /package/{dist → dist-create/template}/app/routes/auth/handlers.ts +0 -0
  467. /package/{dist → dist-create/template}/app/routes/auth/routes.ts +0 -0
  468. /package/{dist → dist-create/template}/app/routes/board/entities/board_category.json +0 -0
  469. /package/{dist → dist-create/template}/app/routes/board/entities/board_comment.json +0 -0
  470. /package/{dist → dist-create/template}/app/routes/board/entities/board_like.json +0 -0
  471. /package/{dist → dist-create/template}/app/routes/board/entities/board_mention.json +0 -0
  472. /package/{dist → dist-create/template}/app/routes/board/entities/board_post.json +0 -0
  473. /package/{dist → dist-create/template}/app/routes/board/entities/board_post_tag.json +0 -0
  474. /package/{dist → dist-create/template}/app/routes/board/entities/board_rating.json +0 -0
  475. /package/{dist → dist-create/template}/app/routes/board/entities/board_read_log.json +0 -0
  476. /package/{dist → dist-create/template}/app/routes/board/entities/board_report.json +0 -0
  477. /package/{dist → dist-create/template}/app/routes/board/entities/board_tag.json +0 -0
  478. /package/{dist → dist-create/template}/app/routes/board/handlers/categories.ts +0 -0
  479. /package/{dist → dist-create/template}/app/routes/board/handlers/comments.ts +0 -0
  480. /package/{dist → dist-create/template}/app/routes/board/handlers/files.ts +0 -0
  481. /package/{dist → dist-create/template}/app/routes/board/handlers/likes.ts +0 -0
  482. /package/{dist → dist-create/template}/app/routes/board/handlers/mentions.ts +0 -0
  483. /package/{dist → dist-create/template}/app/routes/board/handlers/posts.ts +0 -0
  484. /package/{dist → dist-create/template}/app/routes/board/handlers/ratings.ts +0 -0
  485. /package/{dist → dist-create/template}/app/routes/board/handlers/reports.ts +0 -0
  486. /package/{dist → dist-create/template}/app/routes/board/handlers/tags.ts +0 -0
  487. /package/{dist → dist-create/template}/app/routes/board/routes.ts +0 -0
  488. /package/{dist/app/routes/password-reset/config.example.json → dist-create/template/app/routes/password-reset/config.json} +0 -0
  489. /package/{dist → dist-create/template}/app/routes/password-reset/entities/account.json +0 -0
  490. /package/{dist → dist-create/template}/app/routes/password-reset/handlers.ts +0 -0
  491. /package/{dist → dist-create/template}/app/routes/password-reset/password-utils.ts +0 -0
  492. /package/{dist → dist-create/template}/app/routes/password-reset/routes.ts +0 -0
  493. /package/{dist → dist-create/template}/app/routes/password-reset/templates/password_reset.html +0 -0
  494. /package/{dist → dist-create/template}/app/routes/password-reset/templates/password_reset_link.html +0 -0
  495. /package/{dist → dist-create/template}/app/routes/password-reset/types/index.ts +0 -0
  496. /package/{dist → dist-create/template}/app/routes/privilege/entities/pv_group.json +0 -0
  497. /package/{dist → dist-create/template}/app/routes/privilege/entities/pv_group_item.json +0 -0
  498. /package/{dist → dist-create/template}/app/routes/privilege/entities/pv_item.json +0 -0
  499. /package/{dist → dist-create/template}/app/routes/privilege/entities/user_pv_group.json +0 -0
  500. /package/{dist → dist-create/template}/app/routes/privilege/entities/user_pv_item.json +0 -0
  501. /package/{dist → dist-create/template}/app/routes/privilege/routes.ts +0 -0
  502. /package/{dist → dist-create/template}/app/routes/user/entities/user.json +0 -0
  503. /package/{dist → dist-create/template}/app/routes/user/entities/user_biometric.json +0 -0
  504. /package/{dist → dist-create/template}/app/routes/user/routes.ts +0 -0
  505. /package/{dist → dist-create/template}/app/schedules/README.md +0 -0
  506. /package/{dist → dist-create/template}/app/schedules/data-retention/index.ts +0 -0
  507. /package/{dist → dist-create/template}/app/schedules/dormancy/entities/account.json +0 -0
  508. /package/{dist → dist-create/template}/app/schedules/dormancy/entities/privacy_cron_lock.json +0 -0
  509. /package/{dist → dist-create/template}/app/schedules/dormancy/index.ts +0 -0
  510. /package/{dist → dist-create/template}/app/schedules/dormancy/templates/dormancy_completed.html +0 -0
  511. /package/{dist → dist-create/template}/app/schedules/dormancy/templates/dormancy_warning.html +0 -0
  512. /package/{dist → dist-create/template}/configs/cache.json +0 -0
  513. /package/{dist → dist-create/template}/configs/cors.json +0 -0
  514. /package/{dist → dist-create/template}/configs/database.json +0 -0
  515. /package/{dist → dist-create/template}/configs/security.json +0 -0
  516. /package/{dist → dist-create/template}/configs/server.json +0 -0
  517. /package/{dist → dist-create/template}/docs/README.md +0 -0
  518. /package/{dist → dist-create/template}/docs/architecture.md +0 -0
  519. /package/{dist → dist-create/template}/docs/cache.md +0 -0
  520. /package/{dist → dist-create/template}/docs/configs.md +0 -0
  521. /package/{dist → dist-create/template}/docs/database.md +0 -0
  522. /package/{dist → dist-create/template}/docs/flows.md +0 -0
  523. /package/{dist → dist-create/template}/docs/getting-started.md +0 -0
  524. /package/{dist → dist-create/template}/docs/hooks.md +0 -0
  525. /package/{dist → dist-create/template}/docs/internals.md +0 -0
  526. /package/{dist → dist-create/template}/docs/plugins/2fa.md +0 -0
  527. /package/{dist → dist-create/template}/docs/plugins/alimtalk.md +0 -0
  528. /package/{dist → dist-create/template}/docs/plugins/friendtalk.md +0 -0
  529. /package/{dist → dist-create/template}/docs/plugins/holidays.md +0 -0
  530. /package/{dist → dist-create/template}/docs/plugins/how-to-create.md +0 -0
  531. /package/{dist → dist-create/template}/docs/plugins/identity.md +0 -0
  532. /package/{dist → dist-create/template}/docs/plugins/llm.md +0 -0
  533. /package/{dist → dist-create/template}/docs/plugins/oauth.md +0 -0
  534. /package/{dist → dist-create/template}/docs/plugins/ocr.md +0 -0
  535. /package/{dist → dist-create/template}/docs/plugins/pg.md +0 -0
  536. /package/{dist → dist-create/template}/docs/plugins/push.md +0 -0
  537. /package/{dist → dist-create/template}/docs/plugins/sms.md +0 -0
  538. /package/{dist → dist-create/template}/docs/plugins/taxinvoice.md +0 -0
  539. /package/{dist → dist-create/template}/docs/routes/README.md +0 -0
  540. /package/{dist → dist-create/template}/docs/routes/account-routes.md +0 -0
  541. /package/{dist → dist-create/template}/docs/routes/alimtalk-routes.md +0 -0
  542. /package/{dist → dist-create/template}/docs/routes/board-routes.md +0 -0
  543. /package/{dist → dist-create/template}/docs/routes/email-verification.md +0 -0
  544. /package/{dist → dist-create/template}/docs/routes/friendtalk-routes.md +0 -0
  545. /package/{dist → dist-create/template}/docs/routes/holidays-routes.md +0 -0
  546. /package/{dist → dist-create/template}/docs/routes/how-to-create.md +0 -0
  547. /package/{dist → dist-create/template}/docs/routes/identity-routes.md +0 -0
  548. /package/{dist → dist-create/template}/docs/routes/llm-routes.md +0 -0
  549. /package/{dist → dist-create/template}/docs/routes/ocr-routes.md +0 -0
  550. /package/{dist → dist-create/template}/docs/routes/password-reset.md +0 -0
  551. /package/{dist → dist-create/template}/docs/routes/pg-routes.md +0 -0
  552. /package/{dist → dist-create/template}/docs/routes/push-routes.md +0 -0
  553. /package/{dist → dist-create/template}/docs/routes/sms-routes.md +0 -0
  554. /package/{dist → dist-create/template}/docs/routes/smtp-routes.md +0 -0
  555. /package/{dist → dist-create/template}/docs/routes/tax-invoice-routes.md +0 -0
  556. /package/{dist → dist-create/template}/docs/schedules/dormancy-and-retention.md +0 -0
  557. /package/{dist → dist-create/template}/docs/schedules/how-to-create.md +0 -0
  558. /package/{dist → dist-create/template}/docs/security.md +0 -0
  559. /package/{dist → dist-create/template}/docs/system.md +0 -0
  560. /package/{dist → dist-create/template}/scripts/entity.sh +0 -0
  561. /package/{dist → dist-create/template}/scripts/reset-all.sh +0 -0
  562. /package/{dist → dist-create/template}/scripts/run.sh +0 -0
  563. /package/{dist → dist-create/template}/tsconfig.json +0 -0
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Entity Server Example 핸들러 — entityServer 클라이언트 사용 예제
3
+ *
4
+ * 이 파일은 Gateway에서 Entity Server에 접속하여 엔티티 CRUD를 수행하는 방법을 보여줍니다.
5
+ * entityServer 는 @gateway/api 에서 import 하며 Entity Server의 REST API를 호출합니다.
6
+ *
7
+ * ⚠ 주의: .env 에 ENTITY_SERVER_URL, ENTITY_API_KEY 이 설정되어 있어야 합니다.
8
+ * 사용하는 엔티티(예: "post")는 entities/ 폴더에 JSON 정의가 필요합니다.
9
+ */
10
+
11
+ import type { FastifyRequest, FastifyReply } from "fastify";
12
+ import { ok, fail, entityServer, NotFoundError } from "@gateway/api";
13
+ import type {
14
+ CreatePostBody,
15
+ UpdatePostBody,
16
+ SeqParams,
17
+ SearchPostsQuery,
18
+ HistoryQuery,
19
+ } from "./types/index.ts";
20
+
21
+ // 엔티티 이름 — entities/post.json 에 정의된 엔티티
22
+ const ENTITY = "post";
23
+
24
+ // ─────────────────────────────────────────────────
25
+ // 기본 CRUD 예제
26
+ // ─────────────────────────────────────────────────
27
+
28
+ /**
29
+ * GET /example-es/posts?page=1&limit=20
30
+ * 게시글 목록 조회 (list)
31
+ */
32
+ export async function listPosts(
33
+ req: FastifyRequest<{ Querystring: SearchPostsQuery }>,
34
+ reply: FastifyReply,
35
+ ) {
36
+ const { page = 1, limit = 20, orderBy, orderDir } = req.query;
37
+
38
+ const resp = await entityServer.list(ENTITY, {
39
+ page,
40
+ limit,
41
+ orderBy,
42
+ orderDir,
43
+ });
44
+
45
+ return reply.send(ok(resp.data));
46
+ }
47
+
48
+ /**
49
+ * GET /example-es/posts/:seq
50
+ * 게시글 단건 조회 (get)
51
+ */
52
+ export async function getPost(
53
+ req: FastifyRequest<{ Params: SeqParams }>,
54
+ reply: FastifyReply,
55
+ ) {
56
+ const seq = Number(req.params.seq);
57
+
58
+ const resp = await entityServer.get(ENTITY, seq);
59
+ if (!resp.data) {
60
+ throw new NotFoundError(`Post ${seq} not found`);
61
+ }
62
+
63
+ return reply.send(ok(resp.data));
64
+ }
65
+
66
+ /**
67
+ * POST /example-es/posts
68
+ * 게시글 생성 (submit — seq 없으면 INSERT)
69
+ */
70
+ export async function createPost(
71
+ req: FastifyRequest<{ Body: CreatePostBody }>,
72
+ reply: FastifyReply,
73
+ ) {
74
+ const { title, content, category = "general" } = req.body;
75
+
76
+ const resp = await entityServer.submit(ENTITY, {
77
+ title,
78
+ content,
79
+ category,
80
+ status: "draft",
81
+ });
82
+
83
+ return reply.code(201).send(ok({ seq: resp.seq }));
84
+ }
85
+
86
+ /**
87
+ * PUT /example-es/posts/:seq
88
+ * 게시글 수정 (submit — seq 있으면 UPDATE)
89
+ */
90
+ export async function updatePost(
91
+ req: FastifyRequest<{ Params: SeqParams; Body: UpdatePostBody }>,
92
+ reply: FastifyReply,
93
+ ) {
94
+ const seq = Number(req.params.seq);
95
+ const updates = req.body;
96
+
97
+ const resp = await entityServer.submit(ENTITY, {
98
+ seq,
99
+ ...updates,
100
+ });
101
+
102
+ return reply.send(ok({ seq: resp.seq }));
103
+ }
104
+
105
+ /**
106
+ * DELETE /example-es/posts/:seq
107
+ * 게시글 삭제 (soft delete)
108
+ */
109
+ export async function deletePost(
110
+ req: FastifyRequest<{ Params: SeqParams }>,
111
+ reply: FastifyReply,
112
+ ) {
113
+ const seq = Number(req.params.seq);
114
+
115
+ const resp = await entityServer.delete(ENTITY, seq);
116
+
117
+ return reply.send(ok({ deleted: resp.deleted }));
118
+ }
119
+
120
+ // ─────────────────────────────────────────────────
121
+ // 고급 예제
122
+ // ─────────────────────────────────────────────────
123
+
124
+ /**
125
+ * GET /example-es/posts/search?q=keyword&category=tech&status=published
126
+ * 게시글 검색 (query — 조건 기반 검색)
127
+ */
128
+ export async function searchPosts(
129
+ req: FastifyRequest<{ Querystring: SearchPostsQuery }>,
130
+ reply: FastifyReply,
131
+ ) {
132
+ const { q, category, status, page = 1, limit = 20 } = req.query;
133
+
134
+ // conditions 동적 구성
135
+ const conditions: Record<string, unknown> = {};
136
+ if (category) conditions.category = category;
137
+ if (status) conditions.status = status;
138
+ if (q) conditions.title = q; // title 필드에서 검색 (엔티티 인덱스 필드)
139
+
140
+ const resp = await entityServer.list(ENTITY, {
141
+ page,
142
+ limit,
143
+ conditions,
144
+ });
145
+
146
+ if (resp.data.items.length === 0) {
147
+ return reply.send(fail("No posts found"));
148
+ }
149
+
150
+ return reply.send(ok(resp.data));
151
+ }
152
+
153
+ /**
154
+ * POST /example-es/posts/:seq/publish
155
+ * 게시글 발행 — 트랜잭션 예제
156
+ *
157
+ * 게시글 상태를 published로 변경하고,
158
+ * publish_log 엔티티에 발행 기록을 남기는 것을 하나의 트랜잭션으로 처리합니다.
159
+ */
160
+ export async function publishPost(
161
+ req: FastifyRequest<{ Params: SeqParams }>,
162
+ reply: FastifyReply,
163
+ ) {
164
+ const seq = Number(req.params.seq);
165
+
166
+ // 트랜잭션 시작
167
+ const txId = await entityServer.transStart();
168
+
169
+ try {
170
+ // 1) 게시글 상태 변경
171
+ await entityServer.submit(
172
+ ENTITY,
173
+ {
174
+ seq,
175
+ status: "published",
176
+ published_time: new Date().toISOString(),
177
+ },
178
+ { transactionId: txId },
179
+ );
180
+
181
+ // 2) 발행 로그 기록 (publish_log 엔티티가 있다고 가정)
182
+ await entityServer.submit(
183
+ "publish_log",
184
+ {
185
+ post_seq: seq,
186
+ action: "publish",
187
+ created_time: new Date().toISOString(),
188
+ },
189
+ { transactionId: txId },
190
+ );
191
+
192
+ // 커밋
193
+ const result = await entityServer.transCommit(txId);
194
+ return reply.send(ok({ published: true, results: result.results }));
195
+ } catch (err) {
196
+ // 롤백
197
+ await entityServer.transRollback(txId).catch(() => {});
198
+ throw err;
199
+ }
200
+ }
201
+
202
+ /**
203
+ * GET /example-es/posts/:seq/history?page=1&limit=10
204
+ * 게시글 변경 이력 조회 (history)
205
+ */
206
+ export async function getPostHistory(
207
+ req: FastifyRequest<{ Params: SeqParams; Querystring: HistoryQuery }>,
208
+ reply: FastifyReply,
209
+ ) {
210
+ const seq = Number(req.params.seq);
211
+ const { page = 1, limit = 10 } = req.query;
212
+
213
+ const resp = await entityServer.history(ENTITY, seq, { page, limit });
214
+
215
+ return reply.send(ok(resp.data));
216
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Entity Server Example 라우트 테이블
3
+ * 등록 경로: /api/v1/example-es/*
4
+ *
5
+ * entityServer 클라이언트를 사용한 Entity Server CRUD 예제입니다.
6
+ * 실제 프로젝트에서는 이 폴더를 복사하여 새 라우트를 만들 수 있습니다.
7
+ */
8
+
9
+ import type { FastifyInstance } from "fastify";
10
+ import * as h from "./handlers.ts";
11
+
12
+ export default async function esExampleRoutes(app: FastifyInstance) {
13
+ // ── 기본 CRUD ──────────────────────────────
14
+ app.get("/posts", h.listPosts);
15
+ app.get("/posts/:seq", h.getPost);
16
+ app.post("/posts", h.createPost);
17
+ app.put("/posts/:seq", h.updatePost);
18
+ app.delete("/posts/:seq", h.deletePost);
19
+
20
+ // ── 고급: 검색, 트랜잭션, 이력 ─────────────
21
+ app.get("/posts/search", h.searchPosts);
22
+ app.post("/posts/:seq/publish", h.publishPost);
23
+ app.get("/posts/:seq/history", h.getPostHistory);
24
+ }
@@ -0,0 +1,30 @@
1
+ import type { CreatePostBody, UpdatePostBody } from "./post.ts";
2
+ import type { SearchPostsQuery, HistoryQuery } from "./query.ts";
3
+
4
+ export const defaultCreatePostBody: CreatePostBody = {
5
+ title: "",
6
+ content: "",
7
+ category: "general",
8
+ };
9
+
10
+ export const defaultUpdatePostBody: UpdatePostBody = {
11
+ title: undefined,
12
+ content: undefined,
13
+ category: undefined,
14
+ status: undefined,
15
+ };
16
+
17
+ export const defaultSearchPostsQuery: SearchPostsQuery = {
18
+ q: undefined,
19
+ category: undefined,
20
+ status: undefined,
21
+ page: 1,
22
+ limit: 20,
23
+ orderBy: undefined,
24
+ orderDir: "DESC",
25
+ };
26
+
27
+ export const defaultHistoryQuery: HistoryQuery = {
28
+ page: 1,
29
+ limit: 10,
30
+ };
@@ -0,0 +1,4 @@
1
+ export type { CreatePostBody, UpdatePostBody } from "./post.ts";
2
+ export type { SeqParams } from "./params.ts";
3
+ export type { SearchPostsQuery, HistoryQuery } from "./query.ts";
4
+ export * from "./defaults.ts";
@@ -0,0 +1,3 @@
1
+ export interface SeqParams {
2
+ seq: string;
3
+ }
@@ -0,0 +1,12 @@
1
+ export interface CreatePostBody {
2
+ title: string;
3
+ content: string;
4
+ category?: string;
5
+ }
6
+
7
+ export interface UpdatePostBody {
8
+ title?: string;
9
+ content?: string;
10
+ category?: string;
11
+ status?: "draft" | "published";
12
+ }
@@ -0,0 +1,14 @@
1
+ export interface SearchPostsQuery {
2
+ q?: string;
3
+ category?: string;
4
+ status?: string;
5
+ page?: number;
6
+ limit?: number;
7
+ orderBy?: string;
8
+ orderDir?: "ASC" | "DESC";
9
+ }
10
+
11
+ export interface HistoryQuery {
12
+ page?: number;
13
+ limit?: number;
14
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "enabled": true
3
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Health 핸들러 구현
3
+ */
4
+
5
+ import type { FastifyRequest, FastifyReply } from "fastify";
6
+ import { loadPacketEncryptConfig } from "../../../system/config/packet-encrypt.ts";
7
+ import { deriveAnonymousPacketToken } from "../../../system/security/anonymous-packet-token.ts";
8
+ import { ensureAndSyncAnonymousDevice } from "../../../system/security/anonymous-device.ts";
9
+
10
+ async function buildPacketHealthPayload(
11
+ req: FastifyRequest,
12
+ reply: FastifyReply,
13
+ ) {
14
+ const cfg = loadPacketEncryptConfig();
15
+ if (!cfg.enabled) {
16
+ return {
17
+ ok: true,
18
+ packet_encryption: false,
19
+ };
20
+ }
21
+
22
+ const deviceId = await ensureAndSyncAnonymousDevice(req, reply, cfg);
23
+ return {
24
+ ok: true,
25
+ packet_encryption: true,
26
+ packet_mode: cfg.anonymousEnabled ? "anonymous" : "authenticated",
27
+ packet_token:
28
+ cfg.anonymousEnabled && deviceId
29
+ ? deriveAnonymousPacketToken(deviceId, cfg)
30
+ : undefined,
31
+ };
32
+ }
33
+
34
+ export async function getPacketHealth(
35
+ req: FastifyRequest,
36
+ reply: FastifyReply,
37
+ ) {
38
+ return reply.send(await buildPacketHealthPayload(req, reply));
39
+ }
40
+
41
+ /** 서버 기본 상태를 반환한다 */
42
+ export async function getHealth(req: FastifyRequest, reply: FastifyReply) {
43
+ const packet = await buildPacketHealthPayload(req, reply);
44
+ return reply.send({
45
+ success: true,
46
+ data: {
47
+ status: "ok",
48
+ timestamp: new Date().toISOString(),
49
+ uptime: process.uptime(),
50
+ packet_encryption: packet.packet_encryption,
51
+ packet_mode: packet.packet_mode,
52
+ },
53
+ });
54
+ }
55
+
56
+ /** DB 연결 등 준비 상태를 반환한다 */
57
+ export async function getReady(req: FastifyRequest, reply: FastifyReply) {
58
+ const dbOk = (req.server as any).db !== null;
59
+ const status = dbOk ? "ready" : "degraded";
60
+
61
+ return reply.code(dbOk ? 200 : 503).send({
62
+ success: dbOk,
63
+ data: {
64
+ status,
65
+ db: dbOk ? "connected" : "not configured",
66
+ timestamp: new Date().toISOString(),
67
+ },
68
+ });
69
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Health 라우트 테이블 — 샘플 라우트
3
+ * 등록 경로: /api/v1/health/*
4
+ *
5
+ * 새 라우트 추가 방법: src/app/routes/README.md 참고
6
+ */
7
+
8
+ import type { FastifyInstance } from "fastify";
9
+ import * as h from "./handlers.ts";
10
+
11
+ export default async function healthRoutes(app: FastifyInstance) {
12
+ app.get("/", h.getHealth);
13
+ app.get("/ready", h.getReady);
14
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "enabled": true
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "enabled": true
3
+ }
@@ -3,7 +3,5 @@
3
3
  "enabled": false,
4
4
  "retention_days": 1095,
5
5
  "action": "anonymize",
6
- "cron": "30 2 * * *",
7
- "deploy": true,
8
- "minify": false
6
+ "cron": "30 2 * * *"
9
7
  }
@@ -9,7 +9,5 @@
9
9
  "login_url": "",
10
10
  "send_completed_email": false,
11
11
  "completed_email_subject": "계정이 휴면 처리되었습니다",
12
- "completed_email_template": "dormancy_completed",
13
- "deploy": true,
14
- "minify": false
12
+ "completed_email_template": "dormancy_completed"
15
13
  }
@@ -12,9 +12,10 @@
12
12
  | [build.sh](#2-buildsh) | TypeScript 빌드 + dist/ 패키징 |
13
13
  | [push.sh](#3-pushsh) | 버전 관리 + Git push |
14
14
  | [release.sh](#4-releasesh) | 빌드 + 버전업 + push (원스텝) |
15
- | [entity.sh](#5-entitysh) | Gateway 전용 엔티티 테이블 생성 |
16
- | [reset-all.sh](#6-reset-allsh) | Gateway 전용 엔티티 테이블 초기화 |
17
- | [gen-table-type.sh](#7-gen-table-typesh) | 엔티티 Kysely 테이블 타입 자동 생성 |
15
+ | [update-server.sh](#5-update-serversh) | 최신 gateway 코어 업데이트 |
16
+ | [entity.sh](#6-entitysh) | Gateway 전용 엔티티 테이블 생성 |
17
+ | [reset-all.sh](#7-reset-allsh) | Gateway 전용 엔티티 테이블 초기화 |
18
+ | [gen-table-type.sh](#8-gen-table-typesh) | 엔티티 → Kysely 테이블 타입 자동 생성 |
18
19
 
19
20
  ---
20
21
 
@@ -61,16 +62,24 @@ TypeScript를 컴파일하고 배포용 `dist/`를 패키징합니다.
61
62
  ```bash
62
63
  ./scripts/build.sh # 프로덕션 빌드 + dist/ 패키징 + dist.tar.gz 생성
63
64
  ./scripts/build.sh --no-tar # tar.gz 없이 빌드만
65
+ npm run pack:npm # npm 패키지(.cache/npm-pack/*.tgz) 생성
64
66
  ```
65
67
 
68
+ `dist.tar.gz`는 서버 배포용 아카이브이고, `npm run pack:npm`으로 만드는 `.tgz`는 `create-entity-app-server` npm 패키지 아카이브입니다.
69
+
66
70
  ### 단계별 동작
67
71
 
68
72
  | 단계 | 내용 |
69
73
  | --------------- | ------------------------------------------------------------------------- |
70
- | [1/4] Build | `npm run build` → TypeScript 컴파일 → `dist/system.js`, `system-api.js` |
71
- | [2/4] Package | `src/app/` 복사, 플러그인 `config.json` ← `config.example.json` 으로 교체 |
72
- | [3/4] Resources | `configs/`, `entities/`, `templates/`, `scripts/`, `docs/`, `.env` 복사 |
73
- | [4/4] Archive | `dist.tar.gz` 생성 (`--no-tar` 시 생략) |
74
+ | [1/5] Build | `npm run build` → TypeScript 컴파일 → `dist/system.js`, `system-api.js` |
75
+ | [2/5] Package | `src/app/` 복사, 플러그인 `config.json` ← `config.example.json` 으로 교체 |
76
+ | [3/5] Resources | `configs/`, `entities/`, `templates/`, `scripts/`, `docs/`, `.env` 복사 |
77
+ | [4/5] Template | `dist-create/template/` 생성 |
78
+ | [5/5] Archive | `dist.tar.gz` 생성 (`--no-tar` 시 생략) |
79
+
80
+ - 플러그인 배포용 `config.example.json` 에는 `deploy`, `minify` 를 넣지 않습니다.
81
+ - build 시 플러그인은 `config.example.json` 내용이 그대로 `dist/app/plugins/*/config.json` 으로 복사됩니다.
82
+ - `routes/`, `schedules/` 는 source `config.json` 을 그대로 사용하므로, 배포 산출물에서는 이들만 `deploy`, `minify` 필드를 제거합니다.
74
83
 
75
84
  ### dist/ 포함 항목
76
85
 
@@ -80,8 +89,8 @@ dist/
80
89
  ├── system-api.js — 공개 API 번들 (ok/fail/logger/entityServer 등)
81
90
  ├── tsconfig.json — @gateway/api, @app/* 경로 별칭
82
91
  ├── app/ — 사용자 편집 가능한 TypeScript 소스
83
- │ ├── plugins/ — 플러그인 (config.json = config.example.json 내용)
84
- │ └── routes/ — 비즈니스 라우트 (config.json 원본 유지)
92
+ │ ├── plugins/ — 플러그인 (config.json = config.example.json 내용, deploy/minify 없음)
93
+ │ └── routes/ — 비즈니스 라우트 (config.json 원본 유지, 배포 시 deploy/minify 제거)
85
94
  ├── configs/ — 서버·DB·CORS 설정 파일
86
95
  ├── entities/ — 엔티티 스키마 JSON
87
96
  ├── templates/ — 확장 템플릿
@@ -94,49 +103,101 @@ dist/
94
103
 
95
104
  ## 3) push.sh
96
105
 
97
- 버전 번호를 올리고 Git push합니다. `package.json`의 `version` 필드를 기준으로 동작합니다.
106
+ 버전 번호를 올리고 현재 작업 트리 변경을 함께 commit/push합니다. `package.json`의 `version` 필드를 기준으로 태그를 만듭니다.
98
107
 
99
108
  ```bash
100
109
  ./scripts/push.sh # 현재 버전 확인 + 사용법 출력
101
- ./scripts/push.sh version patch # x.y.Z+1 버그 수정
102
- ./scripts/push.sh version minor # x.Y+1.0 기능 추가
103
- ./scripts/push.sh version major # X+1.0.0호환성 변경
110
+ ./scripts/push.sh bump patch # 로컬 버전만 증가
111
+ ./scripts/push.sh version # 현재 버전 확인
112
+ ./scripts/push.sh patch # x.y.Z+1 — 버그 수정
113
+ ./scripts/push.sh minor # x.Y+1.0 — 기능 추가
114
+ ./scripts/push.sh major # X+1.0.0 — 호환성 변경
115
+ ./scripts/push.sh push-current # 현재 버전 commit + tag + push
104
116
  ./scripts/push.sh tag # 현재 버전으로 git tag만 생성 + push
105
117
  ```
106
118
 
107
- ### 동작 순서 (version)
119
+ ### 동작 순서
108
120
 
109
- 1. `package.json` 버전
110
- 2. `git add package.json && git commit -m "chore: bump version to vX.Y.Z"`
111
- 3. `git tag gateway-vX.Y.Z`
112
- 4. `git push origin <현재 브랜치>`
113
- 5. `git push origin gateway-vX.Y.Z`
121
+ 1. `./scripts/push.sh bump <type>`: `package.json` 버전만 로컬에서 증가
122
+ 2. `./scripts/push.sh patch|minor|major`: 버전 증가 + 현재 작업 트리 전체 commit + tag + push + upstream 연결
123
+ 3. `./scripts/push.sh push-current`: 현재 버전 기준으로 작업 트리 전체 commit + tag + push
124
+ 4. `./scripts/push.sh tag`: 현재 버전으로 태그만 push
114
125
 
115
- > 태그는 `gateway-v` 접두어를 사용합니다 (부모 서버 태그와 구분).
126
+ > 태그는 `v` 접두어를 사용합니다. 예: `v0.1.8`
116
127
 
117
128
  ---
118
129
 
119
130
  ## 4) release.sh
120
131
 
121
- 빌드 + 버전업 + push를 번에 실행합니다.
132
+ GitHub PR 기반으로 `현재 브랜치 -> main -> release` 승격을 진행합니다.
122
133
 
123
134
  ```bash
124
- ./scripts/release.sh # patch 릴리즈 (기본값)
125
- ./scripts/release.sh patch # 버그 수정 릴리즈
126
- ./scripts/release.sh minor # 기능 추가 릴리즈
127
- ./scripts/release.sh major # 호환 변경 릴리즈
135
+ ./scripts/release.sh # 사용법 출력
136
+ ./scripts/release.sh start # 현재 브랜치 -> main -> release PR 생성/머지
128
137
  ```
129
138
 
130
139
  ### 동작 순서
131
140
 
132
- 1. `build.sh` 실행 (빌드 + 패키징)
133
- 2. `push.sh version <type>` 실행 (버전업 + push)
141
+ 1. 현재 브랜치에 커밋 된 변경과 push 안 된 커밋이 없는지 검사
142
+ 2. 현재 브랜치가 `main` 아니면 `현재 브랜치 -> main` PR 생성/머지
143
+ 3. `main -> release` PR 생성/머지
144
+ 4. `release` 브랜치 push 이벤트에서 GitHub Actions 가 `v<version>` 태그 생성
145
+ 5. 태그 push 이벤트에서 GitHub Actions 가 GitHub Release 생성
146
+ 6. 같은 태그 이벤트에서 `build.sh` 실행 후 npm publish 수행
147
+
148
+ > 실제 릴리즈는 `./scripts/release.sh start` 로 실행합니다. `./scripts/release.sh` 는 사용법만 출력합니다.
149
+
150
+ ### 사전 조건
151
+
152
+ - `./scripts/build.sh` 로 빌드 검증이 끝나 있어야 합니다.
153
+ - `./scripts/push.sh` 로 현재 브랜치 변경 사항이 원격에 push 되어 있어야 합니다. 이 스크립트는 origin/<현재브랜치> upstream 도 함께 연결합니다.
154
+ - `gh auth status` 가 정상이어야 합니다.
155
+ - GitHub 저장소에 `release` 브랜치가 있어야 합니다.
156
+ - GitHub Secrets 에 `NPM_TOKEN` 이 설정되어 있어야 태그 생성 후 npm publish 가 성공합니다.
157
+
158
+ > GitHub Releases 페이지에 버전이 보이려면 태그만으로는 부족하고, 태그 push 시 GitHub Release 객체도 생성되어야 합니다. 현재 워크플로는 이 단계까지 자동 처리합니다.
159
+
160
+ > `release.sh` 는 로컬 커밋, Git push, npm publish 를 직접 하지 않습니다. 릴리즈 승격만 담당합니다.
161
+
162
+ ---
163
+
164
+ ## 5) update-server.sh
165
+
166
+ 생성된 Gateway 프로젝트의 코어 파일을 최신 npm 패키지 버전으로 업데이트합니다.
167
+
168
+ ```bash
169
+ ./scripts/update-server.sh version # 현재 코어 버전 + 최신 버전 확인
170
+ ./scripts/update-server.sh latest # 최신 버전으로 업데이트
171
+ ./scripts/update-server.sh 0.0.8 # 특정 버전으로 업데이트
172
+ ```
173
+
174
+ ### 동작
175
+
176
+ 1. npm registry 에서 `create-entity-app-server` 최신 버전을 조회
177
+ 2. 해당 패키지 tarball 을 내려받아 `dist-create/template/` 기준으로 코어 파일 추출
178
+ 3. 아래 항목만 업데이트
179
+
180
+ - `system.js`
181
+ - `system-api.js`
182
+ - `scripts/run.sh`, `scripts/entity.sh`, `scripts/reset-all.sh`, `scripts/update-server.sh`
183
+ - `docs/`
184
+ - `tsconfig.json`
185
+ - `.env.example`
186
+ - `.gateway-version`
187
+ - `package.json`의 `scripts`, `dependencies`, `optionalDependencies`, `devDependencies`, `engines`, `os`, `cpu`
188
+
189
+ ### 보존 대상
190
+
191
+ - `app/`
192
+ - `configs/`
193
+ - `.env`
194
+ - `package.json`의 `name`, `version`, `private` 등 앱 고유 메타데이터
134
195
 
135
- > 빠른 배포 사이클에서 사용합니다. 빌드와 push를 개별적으로 제어하려면 `build.sh` `push.sh`를 따로 실행하세요.
196
+ > 업데이트 후에는 `npm install` 자동 실행됩니다.
136
197
 
137
198
  ---
138
199
 
139
- ## 5) entity.sh
200
+ ## 6) entity.sh
140
201
 
141
202
  `entities/` 폴더의 JSON 스키마를 entity-server에 등록(테이블 생성)합니다.
142
203
 
@@ -175,7 +236,7 @@ dist/
175
236
 
176
237
  ---
177
238
 
178
- ## 6) reset-all.sh
239
+ ## 7) reset-all.sh
179
240
 
180
241
  Gateway 전용 엔티티 테이블을 **드롭 후 재생성**합니다.
181
242
 
@@ -205,6 +266,16 @@ Gateway 전용 엔티티 테이블을 **드롭 후 재생성**합니다.
205
266
 
206
267
  ---
207
268
 
269
+ ## 8) gen-table-type.sh
270
+
271
+ 엔티티 JSON을 기준으로 Kysely 타입 정의를 생성합니다.
272
+
273
+ ```bash
274
+ ./scripts/gen-table-type.sh
275
+ ```
276
+
277
+ ---
278
+
208
279
  ## 자주 쓰는 워크플로
209
280
 
210
281
  ### 첫 설치 후 초기화