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
@@ -2,22 +2,25 @@ import { createRequire as __esbuildCreateRequire } from 'node:module';
2
2
  const require = __esbuildCreateRequire(import.meta.url);
3
3
  import {
4
4
  createRecruitContextLoader
5
- } from "./chunk-LDZQPUIA.js";
5
+ } from "./chunk-HIT4Y6OI.js";
6
+ import {
7
+ CONTINUATION_TTL_MS
8
+ } from "./chunk-7BDPM5ST.js";
6
9
  import {
7
10
  E10ApiError,
8
11
  createE10RequestRuntime,
9
12
  isE10SessionExpiredResponse,
10
13
  requireE10Session
11
- } from "./chunk-SA6VBIHY.js";
14
+ } from "./chunk-ETNJSKMM.js";
12
15
  import {
13
16
  E10_SESSION_EXPIRED_MESSAGE,
14
17
  getActiveProfile
15
- } from "./chunk-FOAA27U5.js";
18
+ } from "./chunk-UFIT2UU3.js";
16
19
  import {
17
20
  CliError,
18
21
  isCliError,
19
22
  toErrorEnvelope
20
- } from "./chunk-LUSPKZKY.js";
23
+ } from "./chunk-UG5G54VL.js";
21
24
  import "./chunk-BUSC6UAE.js";
22
25
 
23
26
  // src/shortcuts/recruit-stage/index.ts
@@ -111,7 +114,7 @@ function signature(payload, key) {
111
114
  }
112
115
  function createRecruitStageContinuationSigner(ctx) {
113
116
  return {
114
- async issue(payload, ttlMs = 10 * 6e4) {
117
+ async issue(payload, ttlMs = CONTINUATION_TTL_MS) {
115
118
  const issuedAt = Date.now();
116
119
  const body = encode({ ...payload, issuedAt, expiresAt: issuedAt + ttlMs });
117
120
  const sig = signature(body, await loadKey(ctx));
@@ -765,9 +768,7 @@ var DEF_FROM_REF = [
765
768
  "job_category",
766
769
  "education",
767
770
  "work_years",
768
- "work_location",
769
- "salary_min",
770
- "salary_max"
771
+ "work_location"
771
772
  ];
772
773
  var DEF_STATUS = "\u62DB\u8058\u4E2D";
773
774
  var NUM_KEYS = /* @__PURE__ */ new Set(["recruit_count", "number_of_pay_months", "salary_min", "salary_max", "internship_duration", "working_days"]);
@@ -842,13 +843,45 @@ function refToSubmit(d) {
842
843
  else return null;
843
844
  return o;
844
845
  }
846
+ var WORK_PLACE_NAMES = ["\u529E\u516C\u5730\u70B9", "\u5DE5\u4F5C\u5730\u70B9"];
847
+ async function findWorkPlaceMenu(ctx) {
848
+ const { host, appId, cache } = ctx;
849
+ const ok = (m) => m && m.listId;
850
+ const allSearch = (cache.lists || {}).all_search || [];
851
+ const hit1 = allSearch.find((m) => ok(m) && WORK_PLACE_NAMES.some((n) => String(m.menuName || "").includes(n)));
852
+ if (hit1) return { listId: String(hit1.listId), cusMenuId: String(hit1.cusMenuId || ""), menuName: String(hit1.menuName || "") };
853
+ const hit2 = findMenuNode(cache.menus || [], WORK_PLACE_NAMES, (m) => ok(m));
854
+ if (hit2) return { listId: String(hit2.listId), cusMenuId: String(hit2.cusMenuId || ""), menuName: String(hit2.menuName || "") };
855
+ try {
856
+ const r = await host.request({ path: `/api/cusapp/app/allMenus?isFront=1&appId=${appId}&terminalType=PC`, method: "GET" });
857
+ const flat = [];
858
+ (function walk(ns) {
859
+ for (const n of ns || []) if (n && typeof n === "object") {
860
+ flat.push(n);
861
+ walk(n.children || n.childs);
862
+ }
863
+ })(r?.data?.cusAppMenus || r?.data);
864
+ const hit3 = findMenuNode(flat, WORK_PLACE_NAMES, (m) => ok(m));
865
+ if (hit3) return { listId: String(hit3.listId), cusMenuId: String(hit3.cusMenuId || ""), menuName: String(hit3.menuName || "") };
866
+ } catch {
867
+ }
868
+ return null;
869
+ }
845
870
  async function resolveWorkLocation(ctx, value) {
846
871
  const { host, appId, cache } = ctx;
847
- const t = await host.request({ path: `/api/ebuilder/form/obj/getObjsByTag?appId=${appId}&tag=uf_rcrt_work_place`, method: "GET" });
848
- const d = t?.data;
849
- const pObj = Array.isArray(d) && d[0] ? String(d[0].id || "") : "";
850
- const menu = findMenuNode(cache.menus || [], ["\u529E\u516C\u5730\u70B9", "\u5DE5\u4F5C\u5730\u70B9"], (m) => m.listId && m.cusMenuId);
851
- if (!pObj || !menu) return null;
872
+ const v = String(value).trim();
873
+ if (!v) return null;
874
+ let pObj = "";
875
+ try {
876
+ const t = await host.request({ path: `/api/ebuilder/form/obj/getObjsByTag?appId=${appId}&tag=uf_rcrt_work_place`, method: "GET" });
877
+ const d = t?.data;
878
+ if (Array.isArray(d) && d[0]) pObj = String(d[0].id || "");
879
+ } catch {
880
+ }
881
+ const menu = await findWorkPlaceMenu(ctx);
882
+ if (!menu) return null;
883
+ if (!pObj) pObj = String(menu.objId || "");
884
+ if (!pObj) return null;
852
885
  const body = {
853
886
  current: 1,
854
887
  pageSize: 200,
@@ -868,10 +901,11 @@ async function resolveWorkLocation(ctx, value) {
868
901
  menuName: menu.menuName
869
902
  };
870
903
  const r = await host.request({ path: `/api/ebuilder/form/list/getListDatas?passid=${pObj}&cid=${pObj}`, body, headers: { ebBusinessId: menu.listId } });
871
- const rows = r?.data?.data || [];
872
- const v = String(value).trim();
904
+ const rows = r?.data?.data || r?.data?.displayData || [];
873
905
  const hit = rows.find((x) => {
874
- const name = String(x.name || ""), detail = String(x.detail_location || ""), area = String(x.area_text || "");
906
+ const name = String(x.name || x.detail_location || "");
907
+ const detail = String(x.detail_location || "");
908
+ const area = String(x.area_text || "");
875
909
  return name.includes(v) || detail.includes(v) || area.includes(v) || detail && v.includes(detail);
876
910
  });
877
911
  return hit ? { id: String(hit.form_data_id || hit.id), name: String(hit.detail_location || hit.name || v) } : null;
@@ -1109,6 +1143,7 @@ async function buildJd(opts) {
1109
1143
  }
1110
1144
  }
1111
1145
  }
1146
+ const inheritedFromRef = [];
1112
1147
  for (const k of DEF_FROM_REF) {
1113
1148
  const id = fid(k);
1114
1149
  if (id && !map.has(String(id)) && refByFid[String(id)]) {
@@ -1116,6 +1151,7 @@ async function buildJd(opts) {
1116
1151
  if (d) {
1117
1152
  put(d);
1118
1153
  filled.push(k);
1154
+ inheritedFromRef.push({ field: k, value: detailValueId(refByFid[String(id)]) });
1119
1155
  }
1120
1156
  }
1121
1157
  }
@@ -1134,10 +1170,15 @@ async function buildJd(opts) {
1134
1170
  requestLen: (requestText || "").length,
1135
1171
  demand: demandId ? demandName || demandId : "\uFF08\u672A\u5173\u8054\u9700\u6C42\uFF09",
1136
1172
  status: DEF_STATUS,
1137
- recruitFlow: defFlow && defFlow.id ? defFlow.name : "\uFF08\u672A\u89E3\u6790\u5230\u9ED8\u8BA4\u6D41\u7A0B\uFF09",
1173
+ // 解析不到环境默认流程时不写该字段,表单自身默认值生效;文案按实际行为表述,避免误导。
1174
+ recruitFlow: defFlow && defFlow.id ? defFlow.name : "\uFF08\u6CBF\u7528\u8868\u5355\u9ED8\u8BA4\u503C\uFF09",
1138
1175
  currentUser: currentUser ? currentUser.name : null,
1139
1176
  setApplied: appliedSets,
1140
1177
  setSkipped: skippedSets,
1178
+ // 明示哪些字段值继承自「环境内最近一条职位记录」——这些不是用户指定的,可能来自脏数据,
1179
+ // 必须在确认摘要里人工核对(尤其 work_location)
1180
+ inheritedFromRef: inheritedFromRef.length ? inheritedFromRef : void 0,
1181
+ inheritedNote: inheritedFromRef.length ? "\u4EE5\u4E0A\u5B57\u6BB5\u672A\u6307\u5B9A\uFF0C\u503C\u7EE7\u627F\u81EA\u73AF\u5883\u5185\u6700\u8FD1\u4E00\u6761\u804C\u4F4D\u8BB0\u5F55\uFF0C\u53EF\u80FD\u542B\u5386\u53F2\u810F\u6570\u636E\uFF08\u5982\u91CD\u590D\u5730\u70B9\uFF09\uFF0C\u8BF7\u6838\u5BF9\u540E\u518D\u63D0\u4EA4" : void 0,
1141
1182
  requiredDefaultsFilled
1142
1183
  }
1143
1184
  };
@@ -1175,16 +1216,32 @@ async function prepare(args, env) {
1175
1216
  demandName: args.demandName ? String(args.demandName) : void 0,
1176
1217
  sets: setsOf(args)
1177
1218
  });
1178
- const refs = await fetchRecentReferences(ctx, jd, String(args.referenceKeyword || positionName)).catch((e) => ({ available: false, reason: e.message, items: [] }));
1219
+ const refs = args.referenceKeyword ? await fetchRecentReferences(ctx, jd, String(args.referenceKeyword)).catch((e) => ({ available: false, reason: e.message, items: [] })) : {
1220
+ available: false,
1221
+ skipped: true,
1222
+ reason: "\u672A\u663E\u5F0F\u6307\u5B9A referenceKeyword\uFF0C\u5DF2\u8DF3\u8FC7\u540C\u7C7B\u804C\u4F4D\u53C2\u8003\u68C0\u7D22\uFF08\u6539\u7528 references/position-templates.md \u7684\u5C97\u4F4D\u6A21\u677F\uFF09",
1223
+ items: []
1224
+ };
1179
1225
  const willSubmit = { formId: jd.formId, objId: jd.objId, dataDetails: jd.dataDetails };
1180
1226
  const fp = fingerprint(willSubmit);
1181
1227
  const continuation = await env.continuation.issue({ operation: "recruit-stage.jd.create.apply", fingerprint: fp });
1228
+ const invFieldKeys = {};
1229
+ for (const [k, v] of Object.entries(ctx.cache.fields[jd.objId] || {})) invFieldKeys[String(v)] = k;
1182
1230
  return rsSuccess("recruit-stage.jd.create.prepare", {
1183
1231
  mode: "prepare",
1232
+ continuation,
1233
+ fingerprint: fp,
1184
1234
  ...jd.summary,
1185
1235
  recentReferences: refs.items,
1186
- recentReferencesNote: refs.available ? `\u5DF2\u6309\u300C${refs.keyword}\u300D\u5728\u5F53\u524D\u73AF\u5883\u804C\u4F4D\u5217\u8868\u4E2D\u68C0\u7D22\uFF08\u626B\u63CF ${refs.scanned} \u6761\uFF0C\u547D\u4E2D ${refs.items.length} \u6761\uFF09\u2014\u2014\u8BF7\u5BF9\u6807\u8FD9\u4E9B\u540C\u7C7B\u804C\u4F4D\u7684\u85AA\u916C/\u4EBA\u6570/\u8981\u6C42\u7ED9\u51FA\u63A8\u8350\u503C\uFF0C\u4E00\u5E76\u653E\u8FDB\u786E\u8BA4\u6458\u8981\uFF0C\u4E0D\u8981\u9010\u5B57\u6BB5\u8BE2\u95EE\u7528\u6237` : "\u53C2\u8003\u68C0\u7D22\u4E0D\u53EF\u7528\uFF1A" + (refs.reason || ""),
1187
- willSubmit
1236
+ recentReferencesNote: refs.skipped ? refs.reason : refs.available ? `\u5DF2\u6309\u300C${refs.keyword}\u300D\u5728\u5F53\u524D\u73AF\u5883\u804C\u4F4D\u5217\u8868\u4E2D\u68C0\u7D22\uFF08\u626B\u63CF ${refs.scanned} \u6761\uFF0C\u547D\u4E2D ${refs.items.length} \u6761\uFF09\u2014\u2014\u8BF7\u5BF9\u6807\u8FD9\u4E9B\u540C\u7C7B\u804C\u4F4D\u7684\u85AA\u916C/\u4EBA\u6570/\u8981\u6C42\u7ED9\u51FA\u63A8\u8350\u503C\uFF0C\u4E00\u5E76\u653E\u8FDB\u786E\u8BA4\u6458\u8981\uFF0C\u4E0D\u8981\u9010\u5B57\u6BB5\u8BE2\u95EE\u7528\u6237` : "\u53C2\u8003\u68C0\u7D22\u4E0D\u53EF\u7528\uFF1A" + (refs.reason || ""),
1237
+ willSubmit: {
1238
+ formId: willSubmit.formId,
1239
+ objId: willSubmit.objId,
1240
+ fieldCount: willSubmit.dataDetails.length,
1241
+ fields: willSubmit.dataDetails.map(
1242
+ (d) => invFieldKeys[String(d.formField && d.formField.id)] || String(d.formField && d.formField.id)
1243
+ )
1244
+ }
1188
1245
  }, {
1189
1246
  continuation,
1190
1247
  fingerprint: fp,
@@ -1832,9 +1889,9 @@ function buildSubDetails(structured, subs, cache) {
1832
1889
  const parts = Array.isArray(v) ? v : String(v).split(/[,~]/);
1833
1890
  const s = String(parts[0] || "").trim();
1834
1891
  const e = String(parts[1] || "").trim();
1835
- if (!s || !e) continue;
1836
- row[col.startKey] = s;
1837
- row[col.endKey] = e;
1892
+ if (s) row[col.startKey] = s;
1893
+ if (e) row[col.endKey] = e;
1894
+ if (!s && !e) continue;
1838
1895
  continue;
1839
1896
  }
1840
1897
  const scalar = typeof v === "object" ? String(v.optionId ?? v.content ?? "") : String(v);
@@ -2191,6 +2248,100 @@ function normalizeTextStructured(cache, s, warnings) {
2191
2248
  fixRows(s.languageAbilities, ["mastery", "ls_ability", "literacy"]);
2192
2249
  return s;
2193
2250
  }
2251
+ var DATE_ONLY_RE = /^\d{4}-\d{2}-\d{2}$/;
2252
+ var ONGOING_RE = /至今|现在|今|now|present/i;
2253
+ 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*$/;
2254
+ var RE_RANGE_YM = /^\s*(\d{4}[.\-/年]\d{1,2})\s*[-–—~至,,]\s*(\d{4}[.\-/年]\d{1,2}|至今|现在|今)\s*$/;
2255
+ function normDatePart(raw, isEnd) {
2256
+ const s = String(raw ?? "").trim();
2257
+ if (!s) return "";
2258
+ if (ONGOING_RE.test(s)) return "";
2259
+ if (DATE_ONLY_RE.test(s)) return s;
2260
+ const m = s.match(/^(\d{4})\s*[.\-/年]?\s*(\d{1,2})?\s*[.\-/月]?\s*(\d{1,2})?\s*日?$/);
2261
+ if (!m) return "";
2262
+ const y = Number(m[1]);
2263
+ const mo = m[2] ? Number(m[2]) : 1;
2264
+ if (!y || mo < 1 || mo > 12) return "";
2265
+ const lastDay = new Date(y, mo, 0).getDate();
2266
+ let d;
2267
+ if (m[3]) {
2268
+ d = Number(m[3]);
2269
+ if (d < 1 || d > lastDay) return "";
2270
+ } else {
2271
+ d = isEnd ? lastDay : 1;
2272
+ }
2273
+ return y + "-" + String(mo).padStart(2, "0") + "-" + String(d).padStart(2, "0");
2274
+ }
2275
+ function normDateRange(raw) {
2276
+ const s = Array.isArray(raw) ? raw.map((x) => String(x ?? "").trim()).filter(Boolean).join(",") : String(raw ?? "").trim();
2277
+ if (!s) return "";
2278
+ const m = s.match(RE_RANGE_FULL) || s.match(RE_RANGE_YM);
2279
+ if (m) {
2280
+ const a = normDatePart(m[1], false);
2281
+ if (!a) return "";
2282
+ const b = normDatePart(m[2], true);
2283
+ return b ? a + "," + b : a;
2284
+ }
2285
+ return normDatePart(s, false);
2286
+ }
2287
+ function normalizeDates(s, warnings) {
2288
+ if (!s || typeof s !== "object") return;
2289
+ const one = (label, val, isEnd = false) => {
2290
+ const before = String(val ?? "").trim();
2291
+ if (!before) return "";
2292
+ if (ONGOING_RE.test(before)) return "";
2293
+ const after = normDatePart(before, isEnd);
2294
+ if (!after) {
2295
+ 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");
2296
+ return "";
2297
+ }
2298
+ if (after !== before) warnings.push("\u65E5\u671F\u5DF2\u89C4\u8303\u5316\uFF1A" + label + " \u300C" + before + "\u300D\u2192\u300C" + after + "\u300D");
2299
+ return after;
2300
+ };
2301
+ for (const k of ["joinworkdate", "graduate_date", "birthday"]) {
2302
+ if (s[k] === void 0 || s[k] === null) continue;
2303
+ s[k] = one(k, s[k], false);
2304
+ }
2305
+ if (Array.isArray(s.academicInformations)) {
2306
+ for (let i = 0; i < s.academicInformations.length; i++) {
2307
+ const r = s.academicInformations[i];
2308
+ if (!r || typeof r !== "object" || r.study_date === void 0) continue;
2309
+ const before = String(r.study_date ?? "").trim();
2310
+ if (!before) continue;
2311
+ const after = normDateRange(before);
2312
+ if (!after) {
2313
+ warnings.push("\u65E5\u671F\u533A\u95F4\u65E0\u6CD5\u8BC6\u522B\uFF0C\u5DF2\u8DF3\u8FC7\uFF08\u907F\u514D\u63A5\u53E3\u6574\u6279\u6821\u9A8C\u5931\u8D25\uFF09\uFF1AacademicInformations[" + i + "].study_date = \u300C" + before + "\u300D");
2314
+ r.study_date = "";
2315
+ } else {
2316
+ if (after !== before) warnings.push("\u65E5\u671F\u5DF2\u89C4\u8303\u5316\uFF1AacademicInformations[" + i + "].study_date \u300C" + before + "\u300D\u2192\u300C" + after + "\u300D");
2317
+ r.study_date = after;
2318
+ }
2319
+ }
2320
+ }
2321
+ for (const key of ["jobInformations", "workExperiences", "projectExperiences"]) {
2322
+ const arr = s[key];
2323
+ if (!Array.isArray(arr)) continue;
2324
+ for (let i = 0; i < arr.length; i++) {
2325
+ const r = arr[i];
2326
+ if (!r || typeof r !== "object") continue;
2327
+ if (r.start_date !== void 0 && r.start_date !== null) {
2328
+ r.start_date = one(key + "[" + i + "].start_date", r.start_date, false);
2329
+ }
2330
+ if (r.end_date !== void 0 && r.end_date !== null) {
2331
+ r.end_date = one(key + "[" + i + "].end_date", r.end_date, true);
2332
+ }
2333
+ }
2334
+ }
2335
+ for (const [key, field] of [["internshipExperiences", "entry_time"], ["awardExperiences", "award_date"]]) {
2336
+ const arr = s[key];
2337
+ if (!Array.isArray(arr)) continue;
2338
+ for (let i = 0; i < arr.length; i++) {
2339
+ const r = arr[i];
2340
+ if (!r || typeof r !== "object") continue;
2341
+ if (r[field] !== void 0 && r[field] !== null) r[field] = one(key + "[" + i + "]." + field, r[field], false);
2342
+ }
2343
+ }
2344
+ }
2194
2345
  async function verifySubRows(ctx, formId, objId, dataId) {
2195
2346
  const L = await getFormLayoutMeta(ctx.host, formId);
2196
2347
  const r = await ctx.host.request({
@@ -2236,7 +2387,9 @@ async function loadStructured(ctx, args) {
2236
2387
  if (!String(s.telephone || "").trim() && !String(s.candidateName || "").trim()) {
2237
2388
  throw rsValidationError("structured_invalid", "\u7ED3\u6784\u5316\u7B80\u5386\u7F3A\u5C11 telephone \u4E0E candidateName\uFF08\u81F3\u5C11\u8981\u6709\u624B\u673A\u53F7\u6216\u59D3\u540D\uFF0C\u5426\u5219\u65E0\u6CD5\u67E5\u91CD\u5EFA\u6863\uFF09");
2238
2389
  }
2239
- return { structured: normalizeTextStructured(ctx.cache, s, warnings), textMode: true, warnings };
2390
+ const normalizedInline = normalizeTextStructured(ctx.cache, s, warnings);
2391
+ normalizeDates(normalizedInline, warnings);
2392
+ return { structured: normalizedInline, textMode: true, warnings };
2240
2393
  }
2241
2394
  if (args.structuredFile) {
2242
2395
  const p = path.resolve(String(args.structuredFile));
@@ -2245,7 +2398,9 @@ async function loadStructured(ctx, args) {
2245
2398
  if (!String(s.telephone || "").trim() && !String(s.candidateName || "").trim()) {
2246
2399
  throw rsValidationError("structured_invalid", "\u7ED3\u6784\u5316\u7B80\u5386\u7F3A\u5C11 telephone \u4E0E candidateName");
2247
2400
  }
2248
- return { structured: normalizeTextStructured(ctx.cache, s, warnings), textMode: true, warnings };
2401
+ const normalizedFile = normalizeTextStructured(ctx.cache, s, warnings);
2402
+ normalizeDates(normalizedFile, warnings);
2403
+ return { structured: normalizedFile, textMode: true, warnings };
2249
2404
  }
2250
2405
  return { structured: null, textMode: false, warnings };
2251
2406
  }
@@ -2600,11 +2755,11 @@ async function apply2(args, env) {
2600
2755
  verifyWarnings = checkAfter(after);
2601
2756
  }
2602
2757
  return rsSuccess("recruit-stage.resume.import.apply", {
2758
+ // 更新模式同理:明细行/格数对不上时只能报 partial,不能因主表写入成功就报 success
2603
2759
  mode: "update",
2604
- result: "success",
2760
+ result: verifyWarnings.length ? "partial" : "success",
2761
+ detailsState: verifyWarnings.length ? "missing" : "complete",
2605
2762
  talentId: updateTalentId,
2606
- applied: verifyWarnings,
2607
- // placeholder replaced below
2608
2763
  afterSummary: { mainFieldCount: Object.keys(after.main).length, subRows: after.subRows, subCells: after.subCells },
2609
2764
  verifyWarnings: verifyWarnings.length ? verifyWarnings : void 0,
2610
2765
  talentCardUrl: resolveTalentCardUrl(ctx, updateTalentId),
@@ -2680,8 +2835,16 @@ async function apply2(args, env) {
2680
2835
  )
2681
2836
  ]);
2682
2837
  const subTableVerify = verifyRes.ok ? verifyRes.v : { error: verifyRes.e?.message };
2683
- if (subTableVerify && subTableVerify.rowTotal === 0 && built.subRowTotal > 0) {
2684
- writeWarnings.push("\u660E\u7EC6\u884C\u672A\u843D\u5E93\uFF08\u671F\u671B " + built.subRowTotal + " \u884C\uFF0C\u8BFB\u56DE 0 \u884C\uFF09");
2838
+ let detailsState = "complete";
2839
+ if (!verifyRes.ok) {
2840
+ detailsState = "unverified";
2841
+ writeWarnings.push("\u660E\u7EC6\u8BFB\u56DE\u6821\u9A8C\u5931\u8D25\uFF08\u65E0\u6CD5\u786E\u8BA4\u660E\u7EC6\u662F\u5426\u843D\u5E93\uFF09\uFF1A" + (verifyRes.e?.message || ""));
2842
+ } else if (built.subRowTotal > 0) {
2843
+ const gotRows = Number(subTableVerify?.rowTotal || 0);
2844
+ if (gotRows < built.subRowTotal) {
2845
+ detailsState = "missing";
2846
+ writeWarnings.push("\u660E\u7EC6\u884C\u672A\u5B8C\u6574\u843D\u5E93\uFF08\u671F\u671B " + built.subRowTotal + " \u884C\uFF0C\u8BFB\u56DE " + gotRows + " \u884C\uFF09\uFF1A\u4E3B\u8868\u5DF2\u5199\u5165\uFF0C\u8BF7\u6309 writeWarnings \u4FEE\u6B63\u540E\u8D70 updateTalentId \u8865\u660E\u7EC6");
2847
+ }
2685
2848
  }
2686
2849
  const saveEsbActions = esbRes.ok ? esbRes.v : { error: esbRes.e?.message };
2687
2850
  const labelMatch = labelRes.ok ? labelRes.v : "ERR:" + (labelRes.e?.message || "");
@@ -2691,7 +2854,8 @@ async function apply2(args, env) {
2691
2854
  const talentListLocateUrl = resolveTalentListLocateUrl(ctx, talentId);
2692
2855
  return rsSuccess("recruit-stage.resume.import.apply", {
2693
2856
  mode: "apply",
2694
- result: "success",
2857
+ result: detailsState === "complete" ? "success" : "partial",
2858
+ detailsState,
2695
2859
  newCandidateFormDataId: newId,
2696
2860
  talentId,
2697
2861
  writeChannel,
@@ -4319,6 +4483,11 @@ import { existsSync as existsSync2 } from "node:fs";
4319
4483
  import { readFile as readFile2 } from "node:fs/promises";
4320
4484
  import { homedir as homedir2 } from "node:os";
4321
4485
  var flowMemo = /* @__PURE__ */ new Map();
4486
+ var SELFUSE_DEFAULT_FLOW = {
4487
+ selfUseHost: "www.e-cology.com.cn",
4488
+ id: "874896524979806209",
4489
+ name: "\u521D\u7B5B+\u9762\u8BD5+offer\u9636\u6BB5"
4490
+ };
4322
4491
  var digitalMenuMemo = /* @__PURE__ */ new Map();
4323
4492
  function cacheDirFor(baseUrl) {
4324
4493
  const url = new URL(baseUrl);
@@ -4332,22 +4501,52 @@ async function readLegacyCacheExtra(baseUrl) {
4332
4501
  try {
4333
4502
  const dir = cacheDirFor(baseUrl);
4334
4503
  if (!existsSync2(dir)) return { defaultRecruitFlow: null, digitalHumanMenu: null };
4335
- const files = (await import("node:fs/promises")).readdir(dir);
4336
- const jsonFiles = (await files).filter((f) => f.endsWith(".json"));
4337
- if (jsonFiles.length !== 1) return { defaultRecruitFlow: null, digitalHumanMenu: null };
4338
- const raw = JSON.parse(await readFile2(join(dir, jsonFiles[0]), "utf8"));
4339
- const flow = raw?.defaultRecruitFlow && raw.defaultRecruitFlow.id ? { id: String(raw.defaultRecruitFlow.id), name: String(raw.defaultRecruitFlow.name || "") } : null;
4340
- const dh = raw?.lists?.digital_human?.listId ? {
4341
- menuName: String(raw.lists.digital_human.menuName || "\u9762\u8BD5\u6570\u5B57\u4EBA\u914D\u7F6E"),
4342
- listId: String(raw.lists.digital_human.listId),
4343
- cusMenuId: String(raw.lists.digital_human.cusMenuId || "")
4344
- } : null;
4504
+ const files = await (await import("node:fs/promises")).readdir(dir);
4505
+ const jsonFiles = files.filter((f) => f.endsWith(".json"));
4506
+ let flow = null;
4507
+ let dh = null;
4508
+ for (const f of jsonFiles) {
4509
+ let raw;
4510
+ try {
4511
+ raw = JSON.parse(await readFile2(join(dir, f), "utf8"));
4512
+ } catch {
4513
+ continue;
4514
+ }
4515
+ if (!flow && raw?.defaultRecruitFlow && raw.defaultRecruitFlow.id) {
4516
+ flow = { id: String(raw.defaultRecruitFlow.id), name: String(raw.defaultRecruitFlow.name || "") };
4517
+ }
4518
+ if (!dh && raw?.lists?.digital_human?.listId) {
4519
+ dh = {
4520
+ menuName: String(raw.lists.digital_human.menuName || "\u9762\u8BD5\u6570\u5B57\u4EBA\u914D\u7F6E"),
4521
+ listId: String(raw.lists.digital_human.listId),
4522
+ cusMenuId: String(raw.lists.digital_human.cusMenuId || "")
4523
+ };
4524
+ }
4525
+ if (flow && dh) break;
4526
+ }
4345
4527
  return { defaultRecruitFlow: flow, digitalHumanMenu: dh };
4346
4528
  } catch {
4347
4529
  return { defaultRecruitFlow: null, digitalHumanMenu: null };
4348
4530
  }
4349
4531
  }
4350
- async function resolveDefaultRecruitFlow(host, baseUrl, appId) {
4532
+ function findFlowMenu(cache) {
4533
+ const all = (cache.lists || {}).all_search || [];
4534
+ const hit = all.find((m) => m && m.listId && /招聘流程/.test(String(m.menuName || "")));
4535
+ if (hit) {
4536
+ return { listId: String(hit.listId), cusMenuId: String(hit.cusMenuId || ""), menuName: String(hit.menuName || "\u62DB\u8058\u6D41\u7A0B") };
4537
+ }
4538
+ return null;
4539
+ }
4540
+ function isDefaultFlowRow(x) {
4541
+ if (!x) return false;
4542
+ const cands = [x.is_default, x.isDefault, x.default_flow, x.defaultFlow, x.is_enable, x.enabled, x.status];
4543
+ for (const v of cands) {
4544
+ if (v === true || v === 1 || v === "1") return true;
4545
+ if (String(v) === "\u662F" || String(v) === "\u542F\u7528" || String(v) === "\u9ED8\u8BA4") return true;
4546
+ }
4547
+ return false;
4548
+ }
4549
+ async function resolveDefaultRecruitFlow(host, baseUrl, appId, cache) {
4351
4550
  const memoKey = baseUrl;
4352
4551
  if (flowMemo.has(memoKey)) return flowMemo.get(memoKey) ?? null;
4353
4552
  const legacy = await readLegacyCacheExtra(baseUrl);
@@ -4356,22 +4555,86 @@ async function resolveDefaultRecruitFlow(host, baseUrl, appId) {
4356
4555
  return legacy.defaultRecruitFlow;
4357
4556
  }
4358
4557
  let result = null;
4359
- try {
4360
- const r = await host.request({
4361
- path: "/api/recruit/position/recruitFlow/list",
4362
- method: "POST",
4363
- body: { appId, current: 1, pageSize: 50 },
4364
- operation: "context.defaultRecruitFlow"
4365
- });
4366
- const rows = r?.data?.list || r?.data?.rows || r?.data || [];
4367
- const list = Array.isArray(rows) ? rows : [];
4368
- const enabled = list.find((x) => x && (x.isDefault === true || Number(x.isDefault) === 1 || x.default_flow === "1")) || list.find((x) => x && x.id);
4369
- if (enabled?.id) {
4370
- result = { id: String(enabled.id), name: String(enabled.name || enabled.flow_name || "") };
4558
+ const menu = findFlowMenu(cache);
4559
+ if (menu) {
4560
+ try {
4561
+ let flowObjId = "";
4562
+ try {
4563
+ const liBody = {
4564
+ cusMenuId: menu.cusMenuId,
4565
+ listId: menu.listId,
4566
+ urlPageTitle: menu.menuName
4567
+ };
4568
+ liBody["appId_" + menu.listId] = appId;
4569
+ const li = await host.request({ path: "/api/ebuilder/form/list/listInit", body: liBody });
4570
+ flowObjId = String(li?.data?.objid || "");
4571
+ } catch {
4572
+ }
4573
+ if (flowObjId) {
4574
+ const body = {
4575
+ current: 1,
4576
+ pageSize: 50,
4577
+ tableuid: Math.random().toString(16).slice(2, 34),
4578
+ listId: menu.listId,
4579
+ searchParamData: { searchType: "3", type: "and" },
4580
+ terminal: "PC",
4581
+ browser: "Chrome",
4582
+ requiredMatch: 1,
4583
+ mapResult: 1,
4584
+ recheckQuery: 1,
4585
+ isFollow: 0,
4586
+ isShareToMe: 0,
4587
+ filterCondition: {},
4588
+ cusMenuId: menu.cusMenuId,
4589
+ urlPageTitle: menu.menuName,
4590
+ menuName: menu.menuName
4591
+ };
4592
+ const r = await host.request({
4593
+ path: `/api/ebuilder/form/list/getListDatas?passid=${flowObjId}&cid=${flowObjId}`,
4594
+ body,
4595
+ headers: { ebBusinessId: menu.listId }
4596
+ });
4597
+ const rows = r?.data?.data || r?.data?.displayData || [];
4598
+ const pick = rows.find(isDefaultFlowRow) || (rows.length === 1 ? rows[0] : null);
4599
+ if (pick) {
4600
+ const id = String(pick.form_data_id || pick.id || "");
4601
+ const name = String(pick.name || pick.flow_name || pick.content || "");
4602
+ if (id && name) result = { id, name };
4603
+ }
4604
+ }
4605
+ } catch {
4606
+ }
4607
+ }
4608
+ if (!result) {
4609
+ try {
4610
+ const r = await host.request({
4611
+ path: "/api/recruit/position/recruitFlow/list",
4612
+ method: "POST",
4613
+ body: { appId, current: 1, pageSize: 50 },
4614
+ operation: "context.defaultRecruitFlow"
4615
+ });
4616
+ const rows = r?.data?.list || r?.data?.rows || r?.data || [];
4617
+ const list = Array.isArray(rows) ? rows : [];
4618
+ const enabled = list.find(isDefaultFlowRow) || null;
4619
+ if (enabled?.id) {
4620
+ result = { id: String(enabled.id), name: String(enabled.name || enabled.flow_name || "") };
4621
+ }
4622
+ } catch {
4623
+ }
4624
+ }
4625
+ if (!result) {
4626
+ const isSelfUse = String(cache?.selfUse || "") === "1";
4627
+ let host2 = "";
4628
+ try {
4629
+ host2 = new URL(baseUrl).hostname;
4630
+ } catch {
4631
+ host2 = "";
4632
+ }
4633
+ if (isSelfUse && host2 === SELFUSE_DEFAULT_FLOW.selfUseHost) {
4634
+ result = { id: SELFUSE_DEFAULT_FLOW.id, name: SELFUSE_DEFAULT_FLOW.name };
4371
4635
  }
4372
- } catch {
4373
4636
  }
4374
- flowMemo.set(memoKey, result);
4637
+ if (result) flowMemo.set(memoKey, result);
4375
4638
  return result;
4376
4639
  }
4377
4640
  async function resolveDigitalHumanMenu(host, baseUrl, cache) {
@@ -4396,7 +4659,7 @@ function createRecruitStageContext() {
4396
4659
  const cache = await loaders.get(loaderKey).load(host);
4397
4660
  const baseUrl = (await host.getSession()).baseUrl.replace(/\/+$/, "");
4398
4661
  const [defaultRecruitFlow, digitalHumanMenu] = await Promise.all([
4399
- resolveDefaultRecruitFlow(host, baseUrl, cache.appId),
4662
+ resolveDefaultRecruitFlow(host, baseUrl, cache.appId, cache),
4400
4663
  resolveDigitalHumanMenu(host, baseUrl, cache)
4401
4664
  ]);
4402
4665
  return { ...cache, defaultRecruitFlow, digitalHumanMenu };
@@ -0,0 +1,24 @@
1
+ import { createRequire as __esbuildCreateRequire } from 'node:module';
2
+ const require = __esbuildCreateRequire(import.meta.url);
3
+ import {
4
+ getMeetingOperation,
5
+ hasMeetingOperation,
6
+ meetingOperationDefinitions
7
+ } from "./chunk-PC7VKEB5.js";
8
+ import "./chunk-N4M2DDFE.js";
9
+ import "./chunk-FRZKBMSW.js";
10
+ import "./chunk-GM6J7Q4B.js";
11
+ import "./chunk-FAZTGX7S.js";
12
+ import "./chunk-Z7VYWPZV.js";
13
+ import "./chunk-OF4S23UB.js";
14
+ import "./chunk-CWYGFU5B.js";
15
+ import "./chunk-GAMZLAG2.js";
16
+ import "./chunk-QVSWRLLU.js";
17
+ import "./chunk-7BDPM5ST.js";
18
+ import "./chunk-UG5G54VL.js";
19
+ import "./chunk-BUSC6UAE.js";
20
+ export {
21
+ getMeetingOperation,
22
+ hasMeetingOperation,
23
+ meetingOperationDefinitions
24
+ };
@@ -4,13 +4,14 @@ import {
4
4
  getWorkflowOperation,
5
5
  hasWorkflowOperation,
6
6
  workflowOperationDefinitions
7
- } from "./chunk-3KTFS4IA.js";
8
- import "./chunk-EZALDOQH.js";
9
- import "./chunk-FMPJJYYI.js";
10
- import "./chunk-ZUX3P6BQ.js";
7
+ } from "./chunk-XNIK66I4.js";
8
+ import "./chunk-HP7JIYMT.js";
9
+ import "./chunk-WRXSAVKO.js";
10
+ import "./chunk-727FH2NI.js";
11
11
  import "./chunk-AJ62BGAW.js";
12
- import "./chunk-FOAA27U5.js";
13
- import "./chunk-LUSPKZKY.js";
12
+ import "./chunk-7BDPM5ST.js";
13
+ import "./chunk-UFIT2UU3.js";
14
+ import "./chunk-UG5G54VL.js";
14
15
  import "./chunk-BUSC6UAE.js";
15
16
  export {
16
17
  getWorkflowOperation,
@@ -4,12 +4,13 @@ import {
4
4
  esbOperationDefinitions,
5
5
  getEsbOperation,
6
6
  hasEsbOperation
7
- } from "./chunk-4RAE6JXP.js";
8
- import "./chunk-BBKDXQEC.js";
9
- import "./chunk-GPMFD4RD.js";
10
- import "./chunk-SA6VBIHY.js";
11
- import "./chunk-FOAA27U5.js";
12
- import "./chunk-LUSPKZKY.js";
7
+ } from "./chunk-TA7FXXJD.js";
8
+ import "./chunk-F4E4EM35.js";
9
+ import "./chunk-TXUG266F.js";
10
+ import "./chunk-7BDPM5ST.js";
11
+ import "./chunk-ETNJSKMM.js";
12
+ import "./chunk-UFIT2UU3.js";
13
+ import "./chunk-UG5G54VL.js";
13
14
  import "./chunk-BUSC6UAE.js";
14
15
  export {
15
16
  esbOperationDefinitions,
@@ -4,10 +4,10 @@ import {
4
4
  getHrmOperation,
5
5
  hasHrmOperation,
6
6
  hrmOperationDefinitions
7
- } from "./chunk-4PD5NWAX.js";
8
- import "./chunk-NOODWMCL.js";
9
- import "./chunk-OOUTBLZ4.js";
10
- import "./chunk-LUSPKZKY.js";
7
+ } from "./chunk-PUQS5MWL.js";
8
+ import "./chunk-D4ADSZ7H.js";
9
+ import "./chunk-56EZERK4.js";
10
+ import "./chunk-UG5G54VL.js";
11
11
  import "./chunk-BUSC6UAE.js";
12
12
  export {
13
13
  getHrmOperation,
@@ -3,10 +3,10 @@ const require = __esbuildCreateRequire(import.meta.url);
3
3
  import {
4
4
  getImOperation,
5
5
  imOperationDefinitions
6
- } from "./chunk-2LV74IWP.js";
7
- import "./chunk-ZEDWSH32.js";
6
+ } from "./chunk-Q4OYAQYH.js";
7
+ import "./chunk-IC62NFM5.js";
8
8
  import "./chunk-YLCYX7LE.js";
9
- import "./chunk-LUSPKZKY.js";
9
+ import "./chunk-UG5G54VL.js";
10
10
  import "./chunk-BUSC6UAE.js";
11
11
  export {
12
12
  getImOperation,
@@ -6,11 +6,12 @@ import {
6
6
  loadRooms,
7
7
  recommendRooms,
8
8
  rememberFrequentRoom
9
- } from "./chunk-R4CHUSKC.js";
10
- import "./chunk-GHXCDPTM.js";
11
- import "./chunk-GEWYMQME.js";
12
- import "./chunk-72CKAUAG.js";
13
- import "./chunk-LUSPKZKY.js";
9
+ } from "./chunk-GM6J7Q4B.js";
10
+ import "./chunk-Z7VYWPZV.js";
11
+ import "./chunk-GAMZLAG2.js";
12
+ import "./chunk-QVSWRLLU.js";
13
+ import "./chunk-7BDPM5ST.js";
14
+ import "./chunk-UG5G54VL.js";
14
15
  import "./chunk-BUSC6UAE.js";
15
16
  export {
16
17
  ebRoomRecommendOperation,