weaver-work-cli 0.1.42 → 0.1.44

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 (318) hide show
  1. package/README.md +17 -0
  2. package/dist/chunks/{archive-J4I6MCKF.js → archive-P6TBQGKL.js} +13 -5
  3. package/dist/chunks/{archive-oa-BRZKKTO4.js → archive-oa-7TQ2NXOH.js} +12 -5
  4. package/dist/chunks/{asset-L7D4FAOZ.js → asset-3ELRG37G.js} +11 -4
  5. package/dist/chunks/{asset-idle-DADLLV75.js → asset-idle-WIGMUFMD.js} +7 -3
  6. package/dist/chunks/{attachment-content-K4C7VLWQ.js → attachment-content-E3276UOV.js} +5 -4
  7. package/dist/chunks/{blog-BVGQ7NZL.js → blog-C5NMZAAC.js} +11 -4
  8. package/dist/chunks/{caizhilian-SAADNFD6.js → caizhilian-5XSM2DFP.js} +13 -6
  9. package/dist/chunks/{calendar-Q7NQY5Z2.js → calendar-FI2WNSBO.js} +12 -5
  10. package/dist/chunks/{chunk-YRSZQUD2.js → chunk-3YBDYOC4.js} +3 -3
  11. package/dist/chunks/{chunk-OOUTBLZ4.js → chunk-56EZERK4.js} +1 -1
  12. package/dist/chunks/chunk-6N4JPNFL.js +76 -0
  13. package/dist/chunks/{chunk-ZUX3P6BQ.js → chunk-727FH2NI.js} +1 -1
  14. package/dist/chunks/chunk-7BDPM5ST.js +11 -0
  15. package/dist/chunks/{chunk-EKWAQSLU.js → chunk-BCVYBYYT.js} +432 -2248
  16. package/dist/chunks/{chunk-W7BEHOSR.js → chunk-CWYGFU5B.js} +2 -2
  17. package/dist/chunks/{chunk-NOODWMCL.js → chunk-D4ADSZ7H.js} +1 -1
  18. package/dist/chunks/{chunk-SA6VBIHY.js → chunk-ETNJSKMM.js} +214 -16
  19. package/dist/chunks/{chunk-BBKDXQEC.js → chunk-F4E4EM35.js} +3 -3
  20. package/dist/chunks/{chunk-IZ7S7QUS.js → chunk-FAZTGX7S.js} +6 -6
  21. package/dist/chunks/{chunk-NKZRQXST.js → chunk-FRZKBMSW.js} +52 -36
  22. package/dist/chunks/{chunk-BYBSCN4X.js → chunk-G7PQWD4L.js} +6 -3
  23. package/dist/chunks/{chunk-GEWYMQME.js → chunk-GAMZLAG2.js} +1 -1
  24. package/dist/chunks/{chunk-R4CHUSKC.js → chunk-GM6J7Q4B.js} +4 -4
  25. package/dist/chunks/{chunk-APVFJUQH.js → chunk-GRDRG6HP.js} +3 -3
  26. package/dist/chunks/{chunk-LDZQPUIA.js → chunk-HIT4Y6OI.js} +1 -1
  27. package/dist/chunks/{chunk-EZALDOQH.js → chunk-HP7JIYMT.js} +5 -2
  28. package/dist/chunks/{chunk-LADPYOWC.js → chunk-IAZ3UPY6.js} +3 -3
  29. package/dist/chunks/{chunk-ZEDWSH32.js → chunk-IC62NFM5.js} +1 -1
  30. package/dist/chunks/{chunk-P26ZWSKU.js → chunk-KIHNAS25.js} +5 -2
  31. package/dist/chunks/{chunk-BIPYLLVS.js → chunk-N4M2DDFE.js} +15 -15
  32. package/dist/chunks/{chunk-QKNKR4RH.js → chunk-OF4S23UB.js} +4 -4
  33. package/dist/chunks/{chunk-JPRO6ER2.js → chunk-PC7VKEB5.js} +57 -60
  34. package/dist/chunks/{chunk-4PD5NWAX.js → chunk-PUQS5MWL.js} +2 -2
  35. package/dist/chunks/{chunk-2LV74IWP.js → chunk-Q4OYAQYH.js} +1 -1
  36. package/dist/chunks/{chunk-72CKAUAG.js → chunk-QVSWRLLU.js} +7 -5
  37. package/dist/chunks/{chunk-4RAE6JXP.js → chunk-TA7FXXJD.js} +6 -3
  38. package/dist/chunks/{chunk-GPMFD4RD.js → chunk-TXUG266F.js} +1 -1
  39. package/dist/chunks/{chunk-FOAA27U5.js → chunk-UFIT2UU3.js} +16 -4
  40. package/dist/chunks/{chunk-LUSPKZKY.js → chunk-UG5G54VL.js} +1 -0
  41. package/dist/chunks/{chunk-NIAJ5ZCG.js → chunk-UL5XUQ25.js} +5 -2
  42. package/dist/chunks/{chunk-FMPJJYYI.js → chunk-WRXSAVKO.js} +1 -1
  43. package/dist/chunks/{chunk-G4UR6NXN.js → chunk-WSF4NNMR.js} +3 -3
  44. package/dist/chunks/chunk-XHK4MDR5.js +2497 -0
  45. package/dist/chunks/{chunk-3KTFS4IA.js → chunk-XNIK66I4.js} +19 -9
  46. package/dist/chunks/{chunk-3SO6QL6U.js → chunk-YWX377BY.js} +5 -2
  47. package/dist/chunks/{chunk-BYATLLEF.js → chunk-Z3GDFVJR.js} +1 -1
  48. package/dist/chunks/{chunk-GHXCDPTM.js → chunk-Z7VYWPZV.js} +1 -1
  49. package/dist/chunks/{conflict-F2OMZRTO.js → conflict-ARLSZJ6V.js} +4 -3
  50. package/dist/chunks/{continuation-2CKSBLA6.js → continuation-3S37AUSH.js} +4 -3
  51. package/dist/chunks/{continuation-RN6PZN2M.js → continuation-3XLYYTKV.js} +4 -3
  52. package/dist/chunks/{continuation-HZIZRZBX.js → continuation-HFW2YT5S.js} +4 -3
  53. package/dist/chunks/{continuation-NLECEJPX.js → continuation-KI7DRRZN.js} +4 -3
  54. package/dist/chunks/{contract-5BETHRSG.js → contract-DNIIW5VJ.js} +13 -5
  55. package/dist/chunks/{cowork-3MN6EQQO.js → cowork-GMLRGVIW.js} +11 -4
  56. package/dist/chunks/{create-flow-5FQNNMVO.js → create-flow-J22BO65E.js} +8 -7
  57. package/dist/chunks/{ebuilder-form-SBHOYBUD.js → ebuilder-form-ANV2FHYV.js} +12 -7
  58. package/dist/chunks/{ehr-KMOJULKG.js → ehr-GSTGAIY3.js} +266 -24
  59. package/dist/chunks/{employee-SAK2QYXX.js → employee-22BGJ3QS.js} +3 -3
  60. package/dist/chunks/{env-LB7NBL2O.js → env-BX3VRFS7.js} +4 -3
  61. package/dist/chunks/{esb-W2PJCFCX.js → esb-ATAIASX2.js} +12 -7
  62. package/dist/chunks/{factory-6ZFQXQ46.js → factory-PETTFME6.js} +3 -2
  63. package/dist/chunks/{fna-ZQPCUV4R.js → fna-YEKBSFSX.js} +14 -8
  64. package/dist/chunks/{group-chat-2HHAJN46.js → group-chat-BFVXAYFX.js} +5 -4
  65. package/dist/chunks/{host-ATKVNZAT.js → host-HRBXEPDQ.js} +5 -5
  66. package/dist/chunks/{host-BQH22NTQ.js → host-LR55CTHP.js} +5 -5
  67. package/dist/chunks/{host-X2CSLFM6.js → host-SUOY6VYQ.js} +5 -5
  68. package/dist/chunks/{host-4CBHGOHT.js → host-SZGV4UNT.js} +5 -5
  69. package/dist/chunks/{host-YTODKMSL.js → host-WIKN2EJ5.js} +5 -5
  70. package/dist/chunks/{hrm-FFM4UJFS.js → hrm-NRDO4W5G.js} +11 -7
  71. package/dist/chunks/{im-VEHKDQPB.js → im-IQ2HN23S.js} +8 -7
  72. package/dist/chunks/{invoice-LVIKSIIF.js → invoice-MNRW76PP.js} +636 -1768
  73. package/dist/chunks/{jiuchuanhui-X6DINO5P.js → jiuchuanhui-DTRBAX4N.js} +14 -6
  74. package/dist/chunks/{lazy-dispatch-KSWTN5L6.js → lazy-dispatch-ZVWAI25B.js} +7 -6
  75. package/dist/chunks/{mail-VDKRGUD3.js → mail-ZVAUXOJA.js} +16 -14
  76. package/dist/chunks/{meeting-CLC6HP3Z.js → meeting-FEVPZ67S.js} +21 -14
  77. package/dist/chunks/{okr-CHG4OO3U.js → okr-SDH3E5RA.js} +12 -5
  78. package/dist/chunks/{operations-5QL3AECO.js → operations-62N6EP3C.js} +4 -3
  79. package/dist/chunks/{plan-XWR75667.js → plan-E35JFDI7.js} +12 -5
  80. package/dist/chunks/{project-5BXOOKMG.js → project-73QXBAB2.js} +11 -4
  81. package/dist/chunks/reception-UWZVACBN.js +1899 -0
  82. package/dist/chunks/{recruit-stage-DGMFNNDE.js → recruit-stage-4MAOCKFY.js} +320 -57
  83. package/dist/chunks/registry-IM5G23LS.js +24 -0
  84. package/dist/chunks/{registry-RHMW6ANW.js → registry-JDUS4E7D.js} +7 -6
  85. package/dist/chunks/{registry-7FFOXIAW.js → registry-KNKSCJNT.js} +7 -6
  86. package/dist/chunks/{registry-Z43434VG.js → registry-PO7SI256.js} +4 -4
  87. package/dist/chunks/{registry-OZSMDVPP.js → registry-PVUZQDDQ.js} +3 -3
  88. package/dist/chunks/{room-recommend-62H7ZQQ6.js → room-recommend-H7KLXA5R.js} +6 -5
  89. package/dist/chunks/{schedule-FNXKH3DQ.js → schedule-ESZIBAUO.js} +6 -5
  90. package/dist/chunks/{workflow-ADHKCAJK.js → workflow-CWJFJLQU.js} +13 -8
  91. package/dist/cmd/action.js +6 -0
  92. package/dist/cmd/identity/index.js +45 -0
  93. package/dist/cmd/index.js +2 -0
  94. package/dist/core/continuation-ttl.js +18 -0
  95. package/dist/core/error-codes.js +85 -0
  96. package/dist/core/logger.js +11 -0
  97. package/dist/index.js +37 -31
  98. package/dist/internal/e10/auth/commands.js +163 -8
  99. package/dist/internal/e10/auth/error-log.js +182 -0
  100. package/dist/internal/e10/auth/session.js +17 -3
  101. package/dist/internal/e10/auth-recovery.js +39 -12
  102. package/dist/internal/e10/context.js +17 -2
  103. package/dist/internal/skills/install.js +9 -1
  104. package/dist/shortcuts/archive/continuation.js +2 -1
  105. package/dist/shortcuts/archive/index.js +3 -0
  106. package/dist/shortcuts/archive/operations/confirm.js +2 -1
  107. package/dist/shortcuts/archive-oa/continuation.js +2 -1
  108. package/dist/shortcuts/archive-oa/index.js +2 -0
  109. package/dist/shortcuts/archive-oa/operations/confirm.js +2 -1
  110. package/dist/shortcuts/asset/continuation.js +2 -1
  111. package/dist/shortcuts/asset/index.js +2 -0
  112. package/dist/shortcuts/asset-idle/index.js +2 -0
  113. package/dist/shortcuts/blog/continuation.js +2 -1
  114. package/dist/shortcuts/blog/index.js +2 -0
  115. package/dist/shortcuts/caizhilian/continuation.js +2 -1
  116. package/dist/shortcuts/caizhilian/index.js +2 -0
  117. package/dist/shortcuts/caizhilian/operations/confirm.js +3 -2
  118. package/dist/shortcuts/calendar/continuation.js +2 -1
  119. package/dist/shortcuts/calendar/index.js +2 -0
  120. package/dist/shortcuts/calendar/operations/write.js +1 -1
  121. package/dist/shortcuts/contract/continuation.js +2 -1
  122. package/dist/shortcuts/contract/index.js +2 -0
  123. package/dist/shortcuts/contract/operations/write.js +2 -1
  124. package/dist/shortcuts/cowork/continuation.js +2 -1
  125. package/dist/shortcuts/cowork/index.js +2 -0
  126. package/dist/shortcuts/ebuilder-form/continuation.js +2 -1
  127. package/dist/shortcuts/ebuilder-form/index.js +2 -0
  128. package/dist/shortcuts/ebuilder-form/operations/write.js +3 -2
  129. package/dist/shortcuts/ehr/continuation.js +2 -1
  130. package/dist/shortcuts/ehr/index.js +2 -0
  131. package/dist/shortcuts/ehr/operations/attend-write.js +1 -1
  132. package/dist/shortcuts/ehr/operations/recruit-candidate-import.js +182 -3
  133. package/dist/shortcuts/ehr/operations/recruit-position.js +134 -2
  134. package/dist/shortcuts/ehr/operations/recruit-write.js +1 -1
  135. package/dist/shortcuts/esb/continuation.js +2 -1
  136. package/dist/shortcuts/esb/index.js +2 -0
  137. package/dist/shortcuts/esb/operations/trigger.js +2 -1
  138. package/dist/shortcuts/fna/continuation.js +2 -1
  139. package/dist/shortcuts/fna/index.js +2 -0
  140. package/dist/shortcuts/fna/operations/invoice-writeoff.js +1 -1
  141. package/dist/shortcuts/fna/operations/loan.js +1 -1
  142. package/dist/shortcuts/hrm/index.js +2 -0
  143. package/dist/shortcuts/im/continuation.js +2 -1
  144. package/dist/shortcuts/index.js +5 -0
  145. package/dist/shortcuts/invoice/continuation.js +2 -1
  146. package/dist/shortcuts/invoice/index.js +14 -15
  147. package/dist/shortcuts/invoice/invoice-record.js +93 -0
  148. package/dist/shortcuts/invoice/manifest.js +190 -393
  149. package/dist/shortcuts/invoice/operations/add.js +2 -1
  150. package/dist/shortcuts/invoice/operations/delete.js +2 -1
  151. package/dist/shortcuts/invoice/operations/import.js +2 -1
  152. package/dist/shortcuts/invoice/operations/issuing-contract-detail.js +86 -0
  153. package/dist/shortcuts/invoice/operations/issuing-contracts.js +210 -0
  154. package/dist/shortcuts/invoice/operations/registry.js +17 -17
  155. package/dist/shortcuts/invoice/operations/reim-auto.js +4 -569
  156. package/dist/shortcuts/invoice/operations/reim.js +52 -341
  157. package/dist/shortcuts/invoice/operations/shared.js +21 -4
  158. package/dist/shortcuts/invoice/operations/update.js +2 -1
  159. package/dist/shortcuts/invoice/projection.js +10 -62
  160. package/dist/shortcuts/jiuchuanhui/continuation.js +2 -1
  161. package/dist/shortcuts/jiuchuanhui/index.js +2 -0
  162. package/dist/shortcuts/jiuchuanhui/operations/datajson.js +2 -1
  163. package/dist/shortcuts/jiuchuanhui/operations/esb.js +2 -1
  164. package/dist/shortcuts/mail/continuation.js +2 -1
  165. package/dist/shortcuts/mail/index.js +2 -0
  166. package/dist/shortcuts/mail/operations/mail-blacklist.js +1 -1
  167. package/dist/shortcuts/mail/operations/mail-contacts.js +1 -1
  168. package/dist/shortcuts/mail/operations/mail-send.js +1 -1
  169. package/dist/shortcuts/mail/operations/mail-sign.js +1 -1
  170. package/dist/shortcuts/mail/operations/mail-template.js +1 -1
  171. package/dist/shortcuts/meeting/continuation.js +2 -1
  172. package/dist/shortcuts/meeting/index.js +2 -0
  173. package/dist/shortcuts/meeting/operations/change.js +1 -1
  174. package/dist/shortcuts/meeting/operations/create.js +1 -1
  175. package/dist/shortcuts/meeting/operations/eb/create-flow.js +16 -7
  176. package/dist/shortcuts/meeting/operations/eb/decision.js +1 -1
  177. package/dist/shortcuts/meeting/operations/eb/factory.js +1 -1
  178. package/dist/shortcuts/meeting/operations/lifecycle.js +1 -1
  179. package/dist/shortcuts/meeting/operations/receipts.js +1 -1
  180. package/dist/shortcuts/meeting/operations/signs.js +1 -1
  181. package/dist/shortcuts/okr/continuation.js +2 -1
  182. package/dist/shortcuts/okr/index.js +2 -0
  183. package/dist/shortcuts/okr/operations/write.js +1 -1
  184. package/dist/shortcuts/plan/continuation.js +2 -1
  185. package/dist/shortcuts/plan/index.js +2 -0
  186. package/dist/shortcuts/plan/operations/write.js +1 -1
  187. package/dist/shortcuts/project/continuation.js +2 -1
  188. package/dist/shortcuts/project/index.js +2 -0
  189. package/dist/shortcuts/reception/constants.js +53 -0
  190. package/dist/shortcuts/reception/errors.js +54 -0
  191. package/dist/shortcuts/reception/host.js +125 -0
  192. package/dist/shortcuts/reception/index.js +198 -0
  193. package/dist/shortcuts/reception/manifest.js +177 -0
  194. package/dist/shortcuts/reception/operations/ask.js +71 -0
  195. package/dist/shortcuts/reception/operations/browsertool.js +58 -0
  196. package/dist/shortcuts/reception/operations/compose.js +129 -0
  197. package/dist/shortcuts/reception/operations/customparams.js +74 -0
  198. package/dist/shortcuts/reception/operations/doc.js +238 -0
  199. package/dist/shortcuts/reception/operations/docrender.js +36 -0
  200. package/dist/shortcuts/reception/operations/panels.js +179 -0
  201. package/dist/shortcuts/reception/operations/registry.js +26 -0
  202. package/dist/shortcuts/reception/operations/render-assets.js +184 -0
  203. package/dist/shortcuts/reception/operations/render.js +123 -0
  204. package/dist/shortcuts/reception/operations/runs.js +38 -0
  205. package/dist/shortcuts/reception/operations/schedule.js +127 -0
  206. package/dist/shortcuts/reception/operations/shared.js +196 -0
  207. package/dist/shortcuts/reception/operations/snapshot.js +68 -0
  208. package/dist/shortcuts/reception/operations/types.js +1 -0
  209. package/dist/shortcuts/reception/operations.js +33 -0
  210. package/dist/shortcuts/reception/upload.js +218 -0
  211. package/dist/shortcuts/recruit-stage/context.js +145 -33
  212. package/dist/shortcuts/recruit-stage/continuation.js +2 -1
  213. package/dist/shortcuts/recruit-stage/operations/jd-create.js +106 -17
  214. package/dist/shortcuts/recruit-stage/operations/resume-import.js +166 -10
  215. package/dist/shortcuts/workflow/continuation.js +2 -1
  216. package/dist/shortcuts/workflow/index.js +2 -0
  217. package/dist/shortcuts/workflow/operations/form.js +32 -8
  218. package/dist/shortcuts/workflow/operations/write.js +1 -1
  219. package/docs/_catalog.md +3 -0
  220. package/docs/agent-invoice.md +1 -1
  221. package/docs/archive-oa.md +1 -1
  222. package/docs/caizhilian.md +1 -1
  223. package/docs/calendar.md +1 -1
  224. package/docs/contract.md +1 -1
  225. package/docs/e10-auth.md +16 -0
  226. package/docs/ehr.md +2 -2
  227. package/docs/esb.md +1 -1
  228. package/docs/im.md +1 -1
  229. package/docs/invoice.md +8 -12
  230. package/docs/okr.md +1 -1
  231. package/docs/reception.md +119 -0
  232. package/package.json +1 -1
  233. package/scripts/clean.mjs +43 -2
  234. package/skill-template/business-info.json +18 -2
  235. package/skill-template/domains/caizhilian.md +1 -1
  236. package/skill-template/domains/reception-flow.md +18 -0
  237. package/skill-template/domains/yepiaotong.md +4 -7
  238. package/skills/weaver-e10-archive-oa/references/source-manifest.json +14 -14
  239. package/skills/weaver-e10-blog/references/blog-publish.md +1 -1
  240. package/skills/weaver-e10-blog/references/source-manifest.json +7 -7
  241. package/skills/weaver-e10-caizhilian/references/source-manifest.json +21 -21
  242. package/skills/weaver-e10-caizhilian/references/write-protocol.md +2 -2
  243. package/skills/weaver-e10-calendar/references/calendar-write.md +1 -1
  244. package/skills/weaver-e10-cowork/SKILL.md +1 -1
  245. package/skills/weaver-e10-ebuilder-form/SKILL.md +1 -1
  246. package/skills/weaver-e10-ebuilder-form/references/custom-api.md +1 -1
  247. package/skills/weaver-e10-ebuilder-form/references/openapi-write.md +1 -1
  248. package/skills/weaver-e10-esb/SKILL.md +2 -2
  249. package/skills/weaver-e10-esb/references/source-manifest.json +22 -22
  250. package/skills/weaver-e10-esb/references/trigger.md +2 -2
  251. package/skills/weaver-e10-jinchengda/references/contract-clause-library-crud.md +1 -1
  252. package/skills/weaver-e10-jinchengda/references/contract-clause-reference-save.md +1 -1
  253. package/skills/weaver-e10-jinchengda/references/contract-request-write.md +1 -1
  254. package/skills/weaver-e10-jinchengda/references/source-manifest.json +29 -29
  255. package/skills/weaver-e10-jucailin/SKILL.md +1 -1
  256. package/skills/weaver-e10-jucailin/references/attend-write.md +2 -2
  257. package/skills/weaver-e10-jucailin/references/recruit-create.md +12 -3
  258. package/skills/weaver-e10-jucailin/references/recruit-write.md +1 -1
  259. package/skills/weaver-e10-meeting/SKILL.md +8 -6
  260. package/skills/weaver-e10-meeting/references/meeting-change.md +1 -1
  261. package/skills/weaver-e10-meeting/references/meeting-create.md +1 -1
  262. package/skills/weaver-e10-meeting/references/meeting-lifecycle.md +1 -1
  263. package/skills/weaver-e10-meeting/references/meeting-verification.md +1 -1
  264. package/skills/weaver-e10-okr/references/okr-align.md +1 -1
  265. package/skills/weaver-e10-okr/references/okr-keyresult.md +1 -1
  266. package/skills/weaver-e10-okr/references/okr-write.md +1 -1
  267. package/skills/weaver-e10-okr/references/source-manifest.json +8 -8
  268. package/skills/weaver-e10-plan/references/plan-report-write.md +1 -1
  269. package/skills/weaver-e10-plan/references/source-manifest.json +20 -20
  270. package/skills/weaver-e10-qiyecheng/references/loan-management.md +1 -1
  271. package/skills/weaver-e10-qiyecheng/references/source-manifest.json +18 -18
  272. package/skills/weaver-e10-reception-flow/SKILL.md +173 -0
  273. package/skills/weaver-e10-reception-flow/assets//350/241/214/347/250/213/345/215/225/346/250/241/346/235/277-/346/263/233/345/276/256.docx +0 -0
  274. package/skills/weaver-e10-reception-flow/data/fields-snapshot.json +213 -0
  275. package/skills/weaver-e10-reception-flow/references/browsertool.md +68 -0
  276. package/skills/weaver-e10-reception-flow/references/env-pitfalls.md +51 -0
  277. package/skills/weaver-e10-reception-flow/references/fields-snapshot.md +227 -0
  278. package/skills/weaver-e10-reception-flow/references/guide.md +179 -0
  279. package/skills/weaver-e10-reception-flow/scripts/locate.sh +14 -0
  280. package/skills/weaver-e10-reception-flow/scripts/render.py +724 -0
  281. package/skills/weaver-e10-recruit-stage/SKILL.md +9 -5
  282. package/skills/weaver-e10-recruit-stage/lib/recruit-xiaoe-file.mjs +1 -1
  283. package/skills/weaver-e10-recruit-stage/lib/xiaoe-session.mjs +66 -0
  284. package/skills/weaver-e10-recruit-stage/references/position-templates.md +202 -0
  285. package/skills/weaver-e10-recruit-stage/references/recruit-jd-create.md +22 -0
  286. package/skills/weaver-e10-recruit-stage/references/recruit-resume-import.md +14 -1
  287. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +6 -0
  288. package/skills/weaver-e10-shijingran/SKILL.md +5 -5
  289. package/skills/weaver-e10-shijingran/references/source-manifest.json +37 -36
  290. package/skills/weaver-e10-skill-maker/references/module-cli-generation.md +2 -0
  291. package/skills/weaver-e10-wenshuding/references/source-manifest.json +3 -3
  292. package/skills/weaver-e10-workflow/references/source-manifest.json +32 -32
  293. package/skills/weaver-e10-yepiaotong/SKILL.md +19 -26
  294. package/skills/weaver-e10-yepiaotong/references/invoice-detail.md +13 -10
  295. package/skills/weaver-e10-yepiaotong/references/invoice-enterprise-list.md +2 -0
  296. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-workflow.md +194 -155
  297. package/skills/weaver-e10-yepiaotong/references/invoice-output-view.md +28 -32
  298. package/skills/weaver-e10-yepiaotong/references/invoice-personal-list.md +5 -1
  299. package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +8 -10
  300. package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +211 -616
  301. package/skills/weaver-e10-yepiaotong/references/reim-examples.md +149 -117
  302. package/skills/weaver-e10-yepiaotong/references/reim-expense-subject-rules.md +17 -20
  303. package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +20 -39
  304. package/skills/weaver-e10-yepiaotong/references/reim-matching-rules.md +55 -22
  305. package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +7 -17
  306. package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +88 -92
  307. package/skills/weaver-e10-yepiaotong/references/source-manifest.json +144 -354
  308. package/skills/weaver-e10-yimiaoban/SKILL.md +1 -1
  309. package/skills/weaver-e10-yimiaoban/references/msg-write.md +1 -1
  310. package/skills/weaver-e10-yimiaoban/references/safety-boundaries.md +1 -1
  311. package/skills/weaver-e10-yimiaoban/references/source-manifest.json +7 -7
  312. package/dist/chunks/chunk-TTPJJJC4.js +0 -465
  313. package/dist/chunks/registry-BKBZPBAJ.js +0 -23
  314. package/dist/shortcuts/invoice/markdown.js +0 -172
  315. package/dist/shortcuts/invoice/operations/issuing-qys.js +0 -424
  316. package/skills/weaver-e10-meeting.zip +0 -0
  317. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +0 -131
  318. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-form-fill-rules.md +0 -179
@@ -37,21 +37,28 @@ import {
37
37
  toNumber,
38
38
  toPageQuery,
39
39
  toPositiveInt
40
- } from "./chunk-LDZQPUIA.js";
40
+ } from "./chunk-HIT4Y6OI.js";
41
+ import {
42
+ reportPlatformError
43
+ } from "./chunk-6N4JPNFL.js";
44
+ import {
45
+ CONTINUATION_TTL_MS,
46
+ CONTINUATION_TTL_SECONDS
47
+ } from "./chunk-7BDPM5ST.js";
41
48
  import {
42
49
  E10ApiError,
43
50
  createE10RequestRuntime,
44
51
  isE10SessionExpiredResponse,
45
52
  requireE10Session
46
- } from "./chunk-SA6VBIHY.js";
53
+ } from "./chunk-ETNJSKMM.js";
47
54
  import {
48
55
  E10_SESSION_EXPIRED_MESSAGE,
49
56
  getActiveProfile
50
- } from "./chunk-FOAA27U5.js";
57
+ } from "./chunk-UFIT2UU3.js";
51
58
  import {
52
59
  isCliError,
53
60
  toErrorEnvelope
54
- } from "./chunk-LUSPKZKY.js";
61
+ } from "./chunk-UG5G54VL.js";
55
62
  import "./chunk-BUSC6UAE.js";
56
63
 
57
64
  // src/shortcuts/ehr/index.ts
@@ -90,7 +97,7 @@ function signature(payload, key) {
90
97
  }
91
98
  function createEhrContinuationSigner(ctx) {
92
99
  return {
93
- async issue(payload, ttlMs = 10 * 6e4) {
100
+ async issue(payload, ttlMs = CONTINUATION_TTL_MS) {
94
101
  const issuedAt = Date.now();
95
102
  const body = encode({ ...payload, issuedAt, expiresAt: issuedAt + ttlMs });
96
103
  const sig = signature(body, await loadKey(ctx));
@@ -708,7 +715,6 @@ var attendReadOperations = [
708
715
 
709
716
  // src/shortcuts/ehr/operations/attend-write.ts
710
717
  import { createHash as createHash2 } from "node:crypto";
711
- var CONTINUATION_TTL_SECONDS = 600;
712
718
  var CARD_TYPES = ["CHECKIN", "CHECKOUT", "LEAVE", "RETURN", "CHECKIN_AND_RETURN", "CHECKOUT_AND_LEAVE"];
713
719
  var APPEAL_TYPES = [
714
720
  "leave",
@@ -2263,7 +2269,6 @@ var hrReportOperations = [
2263
2269
 
2264
2270
  // src/shortcuts/ehr/operations/recruit-write.ts
2265
2271
  import { createHash as createHash3 } from "node:crypto";
2266
- var CONTINUATION_TTL_SECONDS2 = 600;
2267
2272
  function fingerprint2(value) {
2268
2273
  return createHash3("sha256").update(JSON.stringify(value ?? null)).digest("hex").slice(0, 32);
2269
2274
  }
@@ -2660,14 +2665,14 @@ var candidateCreatePrepare = {
2660
2665
  payload: { name, mobile, channel: channelName, formId: talentObj?.formId || talentObj?.objId, objId: talentObj?.objId, dataDetails },
2661
2666
  fingerprint: fingerprint2({ name, mobile, channel: channelName, dataDetails })
2662
2667
  },
2663
- CONTINUATION_TTL_SECONDS2 * 1e3
2668
+ CONTINUATION_TTL_SECONDS * 1e3
2664
2669
  );
2665
2670
  return ehrSuccess("ehr.recruit.candidate.create.prepare", {
2666
2671
  status: "AWAITING_CONFIRMATION",
2667
2672
  preview,
2668
2673
  willSubmit: { formId: talentObj?.formId || talentObj?.objId, objId: talentObj?.objId, dataDetails },
2669
2674
  continuation: token,
2670
- expiresInSeconds: CONTINUATION_TTL_SECONDS2
2675
+ expiresInSeconds: CONTINUATION_TTL_SECONDS
2671
2676
  });
2672
2677
  }
2673
2678
  };
@@ -3114,7 +3119,7 @@ var interviewArrangePrepare = {
3114
3119
  payload,
3115
3120
  fingerprint: fingerprint2({ dataDetails: plan.dataDetails, notify })
3116
3121
  },
3117
- CONTINUATION_TTL_SECONDS2 * 1e3
3122
+ CONTINUATION_TTL_SECONDS * 1e3
3118
3123
  );
3119
3124
  return ehrSuccess("ehr.recruit.candidate.interview.arrange.prepare", {
3120
3125
  status: "AWAITING_CONFIRMATION",
@@ -3135,7 +3140,7 @@ var interviewArrangePrepare = {
3135
3140
  },
3136
3141
  willSubmit: { formId: plan.formId, objId: plan.objId, dataDetails: plan.dataDetails },
3137
3142
  continuation: token,
3138
- expiresInSeconds: CONTINUATION_TTL_SECONDS2
3143
+ expiresInSeconds: CONTINUATION_TTL_SECONDS
3139
3144
  });
3140
3145
  }
3141
3146
  };
@@ -3366,7 +3371,7 @@ var offerSendPrepare = {
3366
3371
  payload: { ...args, fbObjId: plan.fbObjId, fbFormId: plan.fbFormId, dataDetails: plan.dataDetails, offerId: plan.offerId },
3367
3372
  fingerprint: fingerprint2({ dataDetails: plan.dataDetails, offerId: plan.offerId })
3368
3373
  },
3369
- CONTINUATION_TTL_SECONDS2 * 1e3
3374
+ CONTINUATION_TTL_SECONDS * 1e3
3370
3375
  );
3371
3376
  return ehrSuccess("ehr.recruit.offer.send.prepare", {
3372
3377
  status: "AWAITING_CONFIRMATION",
@@ -3382,7 +3387,7 @@ var offerSendPrepare = {
3382
3387
  },
3383
3388
  willSubmit: { formId: plan.fbFormId, objId: plan.fbObjId, dataDetails: plan.dataDetails },
3384
3389
  continuation: token,
3385
- expiresInSeconds: CONTINUATION_TTL_SECONDS2
3390
+ expiresInSeconds: CONTINUATION_TTL_SECONDS
3386
3391
  });
3387
3392
  }
3388
3393
  };
@@ -3636,7 +3641,7 @@ var entryProcessPrepare = {
3636
3641
  },
3637
3642
  fingerprint: fingerprint2({ entryId: plan.entryId, dataDetails: plan.dataDetails })
3638
3643
  },
3639
- CONTINUATION_TTL_SECONDS2 * 1e3
3644
+ CONTINUATION_TTL_SECONDS * 1e3
3640
3645
  );
3641
3646
  return ehrSuccess("ehr.recruit.entry.process.prepare", {
3642
3647
  status: "AWAITING_CONFIRMATION",
@@ -3654,7 +3659,7 @@ var entryProcessPrepare = {
3654
3659
  },
3655
3660
  willSubmit: { formId: plan.emFormId, objId: plan.emObjId, updateTimeStamp: plan.updateTimeStamp, dataDetails: plan.dataDetails },
3656
3661
  continuation: token,
3657
- expiresInSeconds: CONTINUATION_TTL_SECONDS2
3662
+ expiresInSeconds: CONTINUATION_TTL_SECONDS
3658
3663
  });
3659
3664
  }
3660
3665
  };
@@ -3886,7 +3891,7 @@ var feedbackEditPrepare = {
3886
3891
  comment: plan.newComment
3887
3892
  })
3888
3893
  },
3889
- CONTINUATION_TTL_SECONDS2 * 1e3
3894
+ CONTINUATION_TTL_SECONDS * 1e3
3890
3895
  );
3891
3896
  return ehrSuccess("ehr.recruit.candidate.interview.feedback.edit.prepare", {
3892
3897
  status: "AWAITING_CONFIRMATION",
@@ -3902,7 +3907,7 @@ var feedbackEditPrepare = {
3902
3907
  note: "apply \u5C06\u4FDD\u5B58\u53CD\u9988\u8868\u5355\uFF08\u5168\u5B57\u6BB5\u96C6 + \u4E50\u89C2\u9501\uFF09\u5E76\u56DE\u67E5\u6821\u9A8C"
3903
3908
  },
3904
3909
  continuation: token,
3905
- expiresInSeconds: CONTINUATION_TTL_SECONDS2
3910
+ expiresInSeconds: CONTINUATION_TTL_SECONDS
3906
3911
  });
3907
3912
  }
3908
3913
  };
@@ -4062,7 +4067,7 @@ var feedbackUrgePrepare = {
4062
4067
  },
4063
4068
  fingerprint: fingerprint2({ talentId: plan.talentId, feedbackRecordId: plan.feedbackRecordId })
4064
4069
  },
4065
- CONTINUATION_TTL_SECONDS2 * 1e3
4070
+ CONTINUATION_TTL_SECONDS * 1e3
4066
4071
  );
4067
4072
  return ehrSuccess("ehr.recruit.candidate.interview.feedback.urge.prepare", {
4068
4073
  status: "AWAITING_CONFIRMATION",
@@ -4075,7 +4080,7 @@ var feedbackUrgePrepare = {
4075
4080
  note: "\u786E\u8BA4\u540E\u5C06\u5411\u9762\u8BD5\u5B98\u53D1\u9001\u300C\u8BF7\u586B\u5199\u8BC4\u4EF7\u300D\u7CFB\u7EDF\u901A\u77E5\uFF08\u4F1A\u6253\u6270\u771F\u4EBA\uFF0C\u8BF7\u786E\u4FDD\u5DF2\u7ECF\u7528\u6237\u540C\u610F\uFF09"
4076
4081
  },
4077
4082
  continuation: token,
4078
- expiresInSeconds: CONTINUATION_TTL_SECONDS2
4083
+ expiresInSeconds: CONTINUATION_TTL_SECONDS
4079
4084
  });
4080
4085
  }
4081
4086
  };
@@ -4270,6 +4275,7 @@ var OPTION_DEFAULTS = { salary_type: "\u6708\u85AA", recruit_type: "\u793E\u4F1A
4270
4275
  var SET_FIELDS = [
4271
4276
  { arg: "education", key: "education", kind: "dict", label: "\u5B66\u5386\u8981\u6C42\uFF08\u6309\u6570\u636E\u5B57\u5178\u540D\u79F0\uFF09" },
4272
4277
  { arg: "workYears", key: "work_years", kind: "dict", label: "\u5DE5\u4F5C\u5E74\u9650\uFF08\u6309\u6570\u636E\u5B57\u5178\u540D\u79F0\uFF09" },
4278
+ { arg: "workLocation", key: "work_location", kind: "assoc", label: "\u5DE5\u4F5C\u5730\u70B9\uFF08\u529E\u516C\u5730\u70B9\u540D\u79F0/\u8BE6\u7EC6\u5730\u5740\uFF0C\u5982\u300C\u4E0A\u6D77\u300D\u6216\u5B8C\u6574\u5730\u5740\uFF09" },
4273
4279
  { arg: "jobCategory", key: "job_category", kind: "dict", label: "\u804C\u4F4D\u7C7B\u522B\uFF08\u6309\u6570\u636E\u5B57\u5178\u540D\u79F0\uFF09" },
4274
4280
  { arg: "positionNature", key: "position_nature", kind: "dict", label: "\u804C\u4F4D\u5C5E\u6027\uFF08\u6309\u6570\u636E\u5B57\u5178\u540D\u79F0\uFF09" },
4275
4281
  { arg: "salaryType", key: "salary_type", kind: "option", label: "\u85AA\u916C\u7C7B\u578B\uFF08\u6708\u85AA/\u5E74\u85AA\u7B49\uFF09" },
@@ -4319,6 +4325,85 @@ async function fetchReferenceDetails(env, cache, objId, formId) {
4319
4325
  return [];
4320
4326
  }
4321
4327
  }
4328
+ var WORK_PLACE_NAMES = ["\u529E\u516C\u5730\u70B9", "\u5DE5\u4F5C\u5730\u70B9"];
4329
+ async function findWorkPlaceMenu(env, cache) {
4330
+ const ok = (m) => !!(m && m.listId);
4331
+ const pick = (list) => {
4332
+ const hit = list.find((m) => ok(m) && WORK_PLACE_NAMES.some((n) => String(m.menuName || "").includes(n)));
4333
+ return hit ? hit : null;
4334
+ };
4335
+ const hit1 = pick(cache.lists?.all_search || []);
4336
+ if (hit1) return hit1;
4337
+ const hit2 = pick(cache.menus || []);
4338
+ if (hit2) return hit2;
4339
+ try {
4340
+ const r = await env.host.request({
4341
+ path: "/api/cusapp/app/allMenus",
4342
+ query: { isFront: 1, appId: String(cache.appId || ""), terminalType: "PC" }
4343
+ });
4344
+ const flat = [];
4345
+ (function walk(nodes) {
4346
+ for (const n of nodes || []) {
4347
+ if (n && typeof n === "object") {
4348
+ flat.push(n);
4349
+ walk(n.children || n.childs);
4350
+ }
4351
+ }
4352
+ })(r?.data?.cusAppMenus || r?.data);
4353
+ return pick(flat);
4354
+ } catch {
4355
+ return null;
4356
+ }
4357
+ }
4358
+ async function resolveWorkLocation(env, cache, value) {
4359
+ const v = String(value).trim();
4360
+ if (!v) return null;
4361
+ const menu = await findWorkPlaceMenu(env, cache);
4362
+ if (!menu?.listId) return null;
4363
+ let pObj = "";
4364
+ try {
4365
+ const t = await env.host.request({
4366
+ path: "/api/ebuilder/form/obj/getObjsByTag",
4367
+ query: { appId: String(cache.appId || ""), tag: "uf_rcrt_work_place" }
4368
+ });
4369
+ const d = t?.data;
4370
+ if (Array.isArray(d) && d[0]) pObj = String(d[0].id || "");
4371
+ } catch {
4372
+ }
4373
+ if (!pObj) pObj = String(menu.objId || "");
4374
+ if (!pObj) return null;
4375
+ const body = buildListBody({
4376
+ listId: menu.listId,
4377
+ cusMenuId: menu.cusMenuId,
4378
+ menuName: menu.menuName || "\u529E\u516C\u5730\u70B9",
4379
+ title: menu.menuName || "\u529E\u516C\u5730\u70B9",
4380
+ pageSize: 200
4381
+ });
4382
+ const r = await env.host.request({
4383
+ path: `/api/ebuilder/form/list/getListDatas?passid=${pObj}&cid=${pObj}`,
4384
+ body,
4385
+ headers: { ebBusinessId: menu.listId }
4386
+ });
4387
+ const rows = r?.data?.data || r?.data?.displayData || [];
4388
+ const hit = rows.find((x) => {
4389
+ const name = String(x?.name || "");
4390
+ const detail = String(x?.detail_location || "");
4391
+ const area = String(x?.area_text || "");
4392
+ return name.includes(v) || detail.includes(v) || area.includes(v) || !!detail && v.includes(detail);
4393
+ });
4394
+ return hit ? { id: String(hit.form_data_id || hit.id), name: String(hit.detail_location || hit.name || v) } : null;
4395
+ }
4396
+ function detailDisplayValue(detail) {
4397
+ if (!detail) return "";
4398
+ const d = detail;
4399
+ if (d.content !== void 0 && d.content !== null) return String(d.content);
4400
+ if (Array.isArray(d.dataOptions) && d.dataOptions[0]) {
4401
+ const o = d.dataOptions[0];
4402
+ return String(o.content ?? o.optionId ?? "");
4403
+ }
4404
+ if (d.dataText?.content !== void 0) return String(d.dataText.content).replace(/<[^>]+>/g, "").slice(0, 60);
4405
+ return "";
4406
+ }
4322
4407
  async function buildPositionPlan(env, cache, args) {
4323
4408
  const form = cache.forms.position_manage;
4324
4409
  const objId = form?.objId;
@@ -4384,6 +4469,14 @@ async function buildPositionPlan(env, cache, args) {
4384
4469
  }
4385
4470
  put({ formField: { id: fieldId }, dataOptions: [{ optionId: String(optionId), content: value }] });
4386
4471
  applied.push(`${field.key}=${value}`);
4472
+ } else if (field.kind === "assoc") {
4473
+ const loc = await resolveWorkLocation(env, cache, value);
4474
+ if (!loc) {
4475
+ skipped.push(`${field.key}=${value}\uFF08\u672A\u5339\u914D\u5230\u300C\u529E\u516C\u5730\u70B9\u300D\u8BB0\u5F55\uFF0C\u5DF2\u8DF3\u8FC7\uFF09`);
4476
+ continue;
4477
+ }
4478
+ put({ formField: { id: fieldId }, dataOptions: [{ optionId: loc.id, content: loc.name }] });
4479
+ applied.push(`${field.key}=${value}`);
4387
4480
  } else if (field.kind === "dict") {
4388
4481
  const ids = cache.dict.by_name[value] || [];
4389
4482
  const unique = [...new Set(ids.map(String))];
@@ -4442,6 +4535,15 @@ async function buildPositionPlan(env, cache, args) {
4442
4535
  }
4443
4536
  const inverse = {};
4444
4537
  for (const [dataKey, fieldId] of Object.entries(fields)) inverse[String(fieldId)] = dataKey;
4538
+ const inheritedSalaryWarnings = [];
4539
+ for (const key of ["salary_min", "salary_max"]) {
4540
+ if (!inherited.includes(key)) continue;
4541
+ const raw = detailDisplayValue(refMap.get(String(fid(key))));
4542
+ const num = Number(String(raw).replace(/[^\d.]/g, ""));
4543
+ if (raw && Number.isFinite(num) && num > 0 && num < 1e3) {
4544
+ inheritedSalaryWarnings.push(`${key} \u7EE7\u627F\u503C\u300C${raw}\u300D\u660E\u663E\u504F\u4F4E\uFF08\u7591\u5386\u53F2\u810F\u6570\u636E\uFF09\uFF0C\u8BF7\u4EBA\u5DE5\u6838\u5BF9\u540E\u518D\u63D0\u4EA4`);
4545
+ }
4546
+ }
4445
4547
  return {
4446
4548
  objId,
4447
4549
  formId,
@@ -4455,6 +4557,10 @@ async function buildPositionPlan(env, cache, args) {
4455
4557
  explicitApplied: applied,
4456
4558
  explicitSkipped: skipped,
4457
4559
  inheritedFromExistingPosition: inherited,
4560
+ // 带值的继承清单:Agent 必须在确认摘要里逐项点名(尤其 work_location),
4561
+ // 不得因为它是默认值就略过——历史上这里曾静默带出过重复地点等脏数据。
4562
+ inheritedFromRef: inherited.length ? inherited.map((k) => ({ field: k, value: detailDisplayValue(refMap.get(String(fid(k)))) })) : void 0,
4563
+ inheritedSalaryWarnings: inheritedSalaryWarnings.length ? inheritedSalaryWarnings : void 0,
4458
4564
  noReferenceValue: missingRef,
4459
4565
  principalDefault: session.userId ? "\u5F53\u524D\u767B\u5F55\u7528\u6237" : "\u672A\u89E3\u6790\u5230\u5F53\u524D\u7528\u6237"
4460
4566
  }
@@ -4493,14 +4599,14 @@ var positionCreatePrepare = {
4493
4599
  payload: { objId: plan.objId, formId: plan.formId, positionName: String(args.positionName).trim(), dataDetails: plan.dataDetails },
4494
4600
  fingerprint: fingerprint3({ objId: plan.objId, dataDetails: plan.dataDetails })
4495
4601
  },
4496
- 10 * 60 * 1e3
4602
+ CONTINUATION_TTL_MS
4497
4603
  );
4498
4604
  return ehrSuccess("ehr.recruit.position.create.prepare", {
4499
4605
  status: "AWAITING_CONFIRMATION",
4500
4606
  preview: { action: "\u751F\u6210\u804C\u4F4DJD\u5E76\u5EFA\u804C\u4F4D\uFF08saveFormData \u2192 addPosition\uFF09", ...plan.summary },
4501
4607
  willSubmit: { objId: plan.objId, formId: plan.formId, dataDetails: plan.dataDetails },
4502
4608
  continuation,
4503
- expiresInSeconds: 600
4609
+ expiresInSeconds: CONTINUATION_TTL_SECONDS
4504
4610
  });
4505
4611
  }
4506
4612
  };
@@ -4669,6 +4775,93 @@ function joinRange(start, end) {
4669
4775
  if (!s && !e) return void 0;
4670
4776
  return `${s},${e}`;
4671
4777
  }
4778
+ var DATE_ONLY_RE = /^\d{4}-\d{2}-\d{2}$/;
4779
+ var ONGOING_RE = /至今|现在|今|now|present/i;
4780
+ var RE_RANGE_FULL = /^\s*(\d{4}[.\-/年]\d{1,2}[.\-/月]\d{1,2}\s*日?)\s*[-–—~至,,]\s*(\d{4}[.\-/年]\d{1,2}[.\-/月]\d{1,2}\s*日?|至今|现在|今)\s*$/;
4781
+ var RE_RANGE_YM = /^\s*(\d{4}[.\-/年]\d{1,2})\s*[-–—~至,,]\s*(\d{4}[.\-/年]\d{1,2}|至今|现在|今)\s*$/;
4782
+ function normDatePart(raw, isEnd) {
4783
+ const s = String(raw ?? "").trim();
4784
+ if (!s) return "";
4785
+ if (ONGOING_RE.test(s)) return "";
4786
+ if (DATE_ONLY_RE.test(s)) return s;
4787
+ const m = s.match(/^(\d{4})\s*[.\-/年]?\s*(\d{1,2})?\s*[.\-/月]?\s*(\d{1,2})?\s*日?$/);
4788
+ if (!m) return "";
4789
+ const y = Number(m[1]);
4790
+ const mo = m[2] ? Number(m[2]) : 1;
4791
+ if (!y || mo < 1 || mo > 12) return "";
4792
+ const lastDay = new Date(y, mo, 0).getDate();
4793
+ let d;
4794
+ if (m[3]) {
4795
+ d = Number(m[3]);
4796
+ if (d < 1 || d > lastDay) return "";
4797
+ } else {
4798
+ d = isEnd ? lastDay : 1;
4799
+ }
4800
+ return `${y}-${String(mo).padStart(2, "0")}-${String(d).padStart(2, "0")}`;
4801
+ }
4802
+ function normDateRange(raw) {
4803
+ const s = Array.isArray(raw) ? raw.map((x) => String(x ?? "").trim()).filter(Boolean).join(",") : String(raw ?? "").trim();
4804
+ if (!s) return "";
4805
+ const m = s.match(RE_RANGE_FULL) || s.match(RE_RANGE_YM);
4806
+ if (m) {
4807
+ const a = normDatePart(m[1], false);
4808
+ if (!a) return "";
4809
+ const b = normDatePart(m[2], true);
4810
+ return b ? `${a},${b}` : a;
4811
+ }
4812
+ return normDatePart(s, false);
4813
+ }
4814
+ function normalizeImportDates(input, warnings) {
4815
+ if (!input || typeof input !== "object") return;
4816
+ const one = (label, val, isEnd = false) => {
4817
+ const before = String(val ?? "").trim();
4818
+ if (!before) return "";
4819
+ if (ONGOING_RE.test(before)) return "";
4820
+ const after = normDatePart(before, isEnd);
4821
+ if (!after) {
4822
+ warnings.push(`\u65E5\u671F\u65E0\u6CD5\u8BC6\u522B\uFF0C\u5DF2\u8DF3\u8FC7\u8BE5\u5B57\u6BB5\uFF08\u907F\u514D\u63A5\u53E3\u6574\u6279\u6821\u9A8C\u5931\u8D25\uFF09\uFF1A${label} = \u300C${before}\u300D`);
4823
+ return "";
4824
+ }
4825
+ if (after !== before) warnings.push(`\u65E5\u671F\u5DF2\u89C4\u8303\u5316\uFF1A${label} \u300C${before}\u300D\u2192\u300C${after}\u300D`);
4826
+ return after;
4827
+ };
4828
+ for (const k of ["joinworkdate", "graduate_date", "birthday"]) {
4829
+ if (input[k] === void 0 || input[k] === null) continue;
4830
+ input[k] = one(k, input[k], false);
4831
+ }
4832
+ if (Array.isArray(input.academicInformations)) {
4833
+ input.academicInformations.forEach((r, i) => {
4834
+ if (!r || typeof r !== "object" || r.study_date === void 0) return;
4835
+ const before = String(r.study_date ?? "").trim();
4836
+ if (!before) return;
4837
+ const after = normDateRange(before);
4838
+ if (!after) {
4839
+ warnings.push(`\u65E5\u671F\u533A\u95F4\u65E0\u6CD5\u8BC6\u522B\uFF0C\u5DF2\u8DF3\u8FC7\uFF1AacademicInformations[${i}].study_date = \u300C${before}\u300D`);
4840
+ r.study_date = "";
4841
+ } else {
4842
+ if (after !== before) warnings.push(`\u65E5\u671F\u5DF2\u89C4\u8303\u5316\uFF1AacademicInformations[${i}].study_date \u300C${before}\u300D\u2192\u300C${after}\u300D`);
4843
+ r.study_date = after;
4844
+ }
4845
+ });
4846
+ }
4847
+ for (const key of ["jobInformations", "workExperiences", "projectExperiences"]) {
4848
+ const arr = input[key];
4849
+ if (!Array.isArray(arr)) continue;
4850
+ arr.forEach((r, i) => {
4851
+ if (!r || typeof r !== "object") return;
4852
+ if (r.start_date !== void 0 && r.start_date !== null) r.start_date = one(`${key}[${i}].start_date`, r.start_date, false);
4853
+ if (r.end_date !== void 0 && r.end_date !== null) r.end_date = one(`${key}[${i}].end_date`, r.end_date, true);
4854
+ });
4855
+ }
4856
+ for (const [key, field] of [["internshipExperiences", "entry_time"], ["awardExperiences", "award_date"]]) {
4857
+ const arr = input[key];
4858
+ if (!Array.isArray(arr)) continue;
4859
+ arr.forEach((r, i) => {
4860
+ if (!r || typeof r !== "object") return;
4861
+ if (r[field] !== void 0 && r[field] !== null) r[field] = one(`${key}[${i}].${field}`, r[field], false);
4862
+ });
4863
+ }
4864
+ }
4672
4865
  async function resolveSubTableMeta(env, formId) {
4673
4866
  let data = null;
4674
4867
  try {
@@ -4996,6 +5189,7 @@ function str(value) {
4996
5189
  }
4997
5190
  async function buildImportPlan(env, cache, args) {
4998
5191
  const warnings = [];
5192
+ normalizeImportDates(args, warnings);
4999
5193
  const talent = cache.forms.talent_pool;
5000
5194
  const objId = talent?.objId;
5001
5195
  const formId = talent?.formId || objId;
@@ -5203,7 +5397,7 @@ var candidateImportPrepare = {
5203
5397
  telephone: plan.mobile
5204
5398
  }
5205
5399
  },
5206
- 10 * 60 * 1e3
5400
+ CONTINUATION_TTL_MS
5207
5401
  );
5208
5402
  return ehrSuccess("ehr.recruit.candidate.import.prepare", {
5209
5403
  status: "AWAITING_CONFIRMATION",
@@ -5220,7 +5414,7 @@ var candidateImportPrepare = {
5220
5414
  },
5221
5415
  ...tagCheck ? { tagCheck } : {},
5222
5416
  continuation,
5223
- expiresInSeconds: 600
5417
+ expiresInSeconds: CONTINUATION_TTL_SECONDS
5224
5418
  });
5225
5419
  }
5226
5420
  };
@@ -5313,13 +5507,60 @@ var candidateImportApply = {
5313
5507
  const talentListLocateUrl = talentListId ? `${baseUrl}/sp/ebdfpage/list/${talentListId}?talentId=${talentId}${extra}` : null;
5314
5508
  const warnings = [...payload.warnings || []];
5315
5509
  if (batchNote) warnings.push(batchNote);
5510
+ let detailsState = "complete";
5511
+ const expectedDetailRows = Object.values(payload.subStats || {}).reduce(
5512
+ (sum, n) => sum + Number(n || 0),
5513
+ 0
5514
+ );
5515
+ if (expectedDetailRows > 0) {
5516
+ try {
5517
+ const snapshot = await env.host.request({
5518
+ path: "/api/ebuilder/form/form/core/getFormDataAndLayout",
5519
+ method: "POST",
5520
+ body: {
5521
+ terminalType: "PC",
5522
+ dataId: talentId,
5523
+ formId,
5524
+ module: "ebuilderform",
5525
+ newLayout: true,
5526
+ dataCrossLayout: false,
5527
+ permissionId: "",
5528
+ allReadOnly: true,
5529
+ initialDatas: [],
5530
+ dynamicData: false,
5531
+ cost: false,
5532
+ customParam: { objId, dataId: talentId }
5533
+ },
5534
+ operation: "ehr.recruit.candidate.import.apply"
5535
+ });
5536
+ const detailData = snapshot?.data?.formData?.dataDetails || [];
5537
+ const seenRows = {};
5538
+ for (const d of detailData) {
5539
+ if (!d?.subFormId) continue;
5540
+ const key = String(d.subFormId);
5541
+ (seenRows[key] = seenRows[key] || /* @__PURE__ */ new Set()).add(String(d.dataIndex));
5542
+ }
5543
+ const gotRows = Object.values(seenRows).reduce((sum, set) => sum + set.size, 0);
5544
+ if (gotRows < expectedDetailRows) {
5545
+ detailsState = "missing";
5546
+ warnings.push(
5547
+ `\u660E\u7EC6\u884C\u672A\u5B8C\u6574\u843D\u5E93\uFF08\u671F\u671B ${expectedDetailRows} \u884C\uFF0C\u8BFB\u56DE ${gotRows} \u884C\uFF09\uFF1A\u4E3B\u8868\u5DF2\u5199\u5165\uFF0C\u8BF7\u6838\u5BF9\u540E\u8865\u9F50\u660E\u7EC6`
5548
+ );
5549
+ }
5550
+ } catch (error) {
5551
+ detailsState = "unverified";
5552
+ warnings.push(`\u660E\u7EC6\u8BFB\u56DE\u6821\u9A8C\u5931\u8D25\uFF08\u65E0\u6CD5\u786E\u8BA4\u660E\u7EC6\u662F\u5426\u843D\u5E93\uFF09\uFF1A${error?.message || "\u672A\u77E5\u9519\u8BEF"}`);
5553
+ }
5554
+ }
5316
5555
  return ehrSuccess("ehr.recruit.candidate.import.apply", {
5317
- result: "success",
5556
+ result: detailsState === "complete" ? "success" : "partial",
5557
+ detailsState,
5318
5558
  talentId,
5319
5559
  candidateName: payload.candidateName,
5320
5560
  telephone: payload.telephone,
5321
5561
  mainTableFields: Object.keys(mainTable).length,
5322
5562
  detailRows: payload.subStats || void 0,
5563
+ detailRowsExpected: expectedDetailRows || void 0,
5323
5564
  attachment: uploaded ? { name: uploaded.name, size: uploaded.size } : null,
5324
5565
  batch: { ok: batchOk, note: batchNote },
5325
5566
  labelMatch,
@@ -5682,6 +5923,7 @@ async function executeAndPrint(ctx, operation, input) {
5682
5923
  });
5683
5924
  ctx.output.write(successEnvelope(operation, result), { json: true });
5684
5925
  } catch (error) {
5926
+ reportPlatformError(error);
5685
5927
  console.error(JSON.stringify(failureEnvelope(error), null, 2));
5686
5928
  process.exitCode = isCliError(error) ? error.exitCode : 1 /* GeneralError */;
5687
5929
  }
@@ -2,9 +2,9 @@ import { createRequire as __esbuildCreateRequire } from 'node:module';
2
2
  const require = __esbuildCreateRequire(import.meta.url);
3
3
  import {
4
4
  hrmEmployeeOperations
5
- } from "./chunk-NOODWMCL.js";
6
- import "./chunk-OOUTBLZ4.js";
7
- import "./chunk-LUSPKZKY.js";
5
+ } from "./chunk-D4ADSZ7H.js";
6
+ import "./chunk-56EZERK4.js";
7
+ import "./chunk-UG5G54VL.js";
8
8
  import "./chunk-BUSC6UAE.js";
9
9
  export {
10
10
  hrmEmployeeOperations
@@ -6,9 +6,10 @@ import {
6
6
  meetingStateDir,
7
7
  readCache,
8
8
  resolveMeetingEnvMode
9
- } from "./chunk-GEWYMQME.js";
10
- import "./chunk-72CKAUAG.js";
11
- import "./chunk-LUSPKZKY.js";
9
+ } from "./chunk-GAMZLAG2.js";
10
+ import "./chunk-QVSWRLLU.js";
11
+ import "./chunk-7BDPM5ST.js";
12
+ import "./chunk-UG5G54VL.js";
12
13
  import "./chunk-BUSC6UAE.js";
13
14
  export {
14
15
  degradeMeetingEnvToStandard,
@@ -2,26 +2,30 @@ import { createRequire as __esbuildCreateRequire } from 'node:module';
2
2
  const require = __esbuildCreateRequire(import.meta.url);
3
3
  import {
4
4
  createEsbContinuationSigner
5
- } from "./chunk-NIAJ5ZCG.js";
5
+ } from "./chunk-UL5XUQ25.js";
6
6
  import {
7
7
  asObject,
8
8
  assertKnownKeys,
9
9
  assertNoForbiddenKeys,
10
10
  esbManifest,
11
11
  getEsbOperation
12
- } from "./chunk-4RAE6JXP.js";
12
+ } from "./chunk-TA7FXXJD.js";
13
13
  import {
14
14
  createEsbHost
15
- } from "./chunk-BBKDXQEC.js";
15
+ } from "./chunk-F4E4EM35.js";
16
16
  import {
17
17
  esbValidationError
18
- } from "./chunk-GPMFD4RD.js";
19
- import "./chunk-SA6VBIHY.js";
20
- import "./chunk-FOAA27U5.js";
18
+ } from "./chunk-TXUG266F.js";
19
+ import {
20
+ reportPlatformError
21
+ } from "./chunk-6N4JPNFL.js";
22
+ import "./chunk-7BDPM5ST.js";
23
+ import "./chunk-ETNJSKMM.js";
24
+ import "./chunk-UFIT2UU3.js";
21
25
  import {
22
26
  isCliError,
23
27
  toErrorEnvelope
24
- } from "./chunk-LUSPKZKY.js";
28
+ } from "./chunk-UG5G54VL.js";
25
29
  import "./chunk-BUSC6UAE.js";
26
30
 
27
31
  // src/shortcuts/esb/index.ts
@@ -116,6 +120,7 @@ async function executeAndPrint(ctx, operation, input) {
116
120
  });
117
121
  ctx.output.write(successEnvelope(operation, result), { json: true });
118
122
  } catch (error) {
123
+ reportPlatformError(error);
119
124
  console.error(JSON.stringify(failureEnvelope(error), null, 2));
120
125
  process.exitCode = isCliError(error) ? error.exitCode : 1 /* GeneralError */;
121
126
  }
@@ -12,8 +12,9 @@ import {
12
12
  requireConfirm,
13
13
  verifyLease,
14
14
  writeBody
15
- } from "./chunk-72CKAUAG.js";
16
- import "./chunk-LUSPKZKY.js";
15
+ } from "./chunk-QVSWRLLU.js";
16
+ import "./chunk-7BDPM5ST.js";
17
+ import "./chunk-UG5G54VL.js";
17
18
  import "./chunk-BUSC6UAE.js";
18
19
  export {
19
20
  EB_BASE,
@@ -1,20 +1,27 @@
1
1
  import { createRequire as __esbuildCreateRequire } from 'node:module';
2
2
  const require = __esbuildCreateRequire(import.meta.url);
3
+ import {
4
+ reportPlatformError
5
+ } from "./chunk-6N4JPNFL.js";
6
+ import {
7
+ CONTINUATION_TTL_MS,
8
+ CONTINUATION_TTL_SECONDS
9
+ } from "./chunk-7BDPM5ST.js";
3
10
  import {
4
11
  E10ApiError,
5
12
  createE10RequestRuntime,
6
13
  isE10SessionExpiredResponse,
7
14
  requireE10Session
8
- } from "./chunk-SA6VBIHY.js";
15
+ } from "./chunk-ETNJSKMM.js";
9
16
  import {
10
17
  E10_SESSION_EXPIRED_MESSAGE,
11
18
  getActiveProfile
12
- } from "./chunk-FOAA27U5.js";
19
+ } from "./chunk-UFIT2UU3.js";
13
20
  import {
14
21
  CliError,
15
22
  isCliError,
16
23
  toErrorEnvelope
17
- } from "./chunk-LUSPKZKY.js";
24
+ } from "./chunk-UG5G54VL.js";
18
25
  import "./chunk-BUSC6UAE.js";
19
26
 
20
27
  // src/shortcuts/fna/index.ts
@@ -114,7 +121,7 @@ function signature(payload, key) {
114
121
  }
115
122
  function createFnaContinuationSigner(ctx) {
116
123
  return {
117
- async issue(payload, ttlMs = 10 * 6e4) {
124
+ async issue(payload, ttlMs = CONTINUATION_TTL_MS) {
118
125
  const issuedAt = Date.now();
119
126
  const body = encode({ ...payload, issuedAt, expiresAt: issuedAt + ttlMs });
120
127
  const sig = signature(body, await loadKey(ctx));
@@ -865,7 +872,6 @@ var expenseChartOperations = [
865
872
  ];
866
873
 
867
874
  // src/shortcuts/fna/operations/loan.ts
868
- var CONTINUATION_TTL_SECONDS = 600;
869
875
  var LOAN_MENU_FIELDS = {
870
876
  menuCode: { ...SCHEMA_STRING_NONEMPTY, description: "\u83DC\u5355\u7F16\u7801\uFF0C\u5982 fesx_fna_borrowingManagement\uFF08\u4E0E\u73AF\u5883\u6838\u5BF9\uFF09" },
871
877
  permissionSetCode: { ...SCHEMA_STRING_NONEMPTY, description: "\u6743\u9650\u96C6\u7F16\u7801\uFF0C\u5982 fesx_fna_borrowingManagement.default\uFF08\u4E0E\u73AF\u5883\u6838\u5BF9\uFF09" },
@@ -1057,7 +1063,6 @@ var loanOperations = [
1057
1063
  ];
1058
1064
 
1059
1065
  // src/shortcuts/fna/operations/invoice-writeoff.ts
1060
- var CONTINUATION_TTL_SECONDS2 = 600;
1061
1066
  var WRITE_OFF_FILTER_FIELDS = {
1062
1067
  invoiceStatus: {
1063
1068
  type: "string",
@@ -1190,7 +1195,7 @@ var fnaInvoiceCallTicketPrepare = {
1190
1195
  fingerprint: fingerprint(requestids),
1191
1196
  count: requestids.length
1192
1197
  },
1193
- CONTINUATION_TTL_SECONDS2 * 1e3
1198
+ CONTINUATION_TTL_SECONDS * 1e3
1194
1199
  );
1195
1200
  return fnaSuccess("fna.invoice.writeoff.callticket.prepare", {
1196
1201
  status: "AWAITING_CONFIRMATION",
@@ -1201,7 +1206,7 @@ var fnaInvoiceCallTicketPrepare = {
1201
1206
  hint: "\u5411\u7528\u6237\u5C55\u793A\u6761\u6570\u4E0E\u76EE\u6807\u6D41\u7A0B\uFF08\u5EFA\u8BAE\u540C\u65F6\u7528 fna.invoice.writeoff.list \u7684\u884C\u5C55\u793A\u7533\u8BF7\u540D\u79F0/\u672A\u6838\u9500\u91D1\u989D\uFF09\uFF0C\u83B7\u5F97\u660E\u786E\u786E\u8BA4\u540E\u518D\u8C03\u7528 fna.invoice.writeoff.callticket.apply"
1202
1207
  },
1203
1208
  continuation: token,
1204
- expiresInSeconds: CONTINUATION_TTL_SECONDS2
1209
+ expiresInSeconds: CONTINUATION_TTL_SECONDS
1205
1210
  });
1206
1211
  }
1207
1212
  };
@@ -1425,6 +1430,7 @@ async function executeAndPrint(ctx, operation, input) {
1425
1430
  });
1426
1431
  ctx.output.write(successEnvelope(operation, result), { json: true });
1427
1432
  } catch (error) {
1433
+ reportPlatformError(error);
1428
1434
  console.error(JSON.stringify(failureEnvelope(error), null, 2));
1429
1435
  process.exitCode = isCliError(error) ? error.exitCode : 1 /* GeneralError */;
1430
1436
  }