weaver-work-cli 0.1.40 → 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 (401) hide show
  1. package/README.md +17 -0
  2. package/dist/chunks/{archive-JHTONRST.js → archive-P6TBQGKL.js} +13 -5
  3. package/dist/chunks/{archive-oa-FCHLCPHC.js → archive-oa-7TQ2NXOH.js} +12 -5
  4. package/dist/chunks/{asset-RLIHC7DB.js → asset-3ELRG37G.js} +11 -4
  5. package/dist/chunks/{asset-idle-KVOFTLCP.js → asset-idle-WIGMUFMD.js} +7 -3
  6. package/dist/chunks/{attachment-content-RZYDB3MB.js → attachment-content-E3276UOV.js} +5 -4
  7. package/dist/chunks/{blog-42OZTJNP.js → blog-C5NMZAAC.js} +11 -4
  8. package/dist/chunks/{caizhilian-KRK547K5.js → caizhilian-5XSM2DFP.js} +13 -6
  9. package/dist/chunks/{calendar-RTWAMKHD.js → calendar-FI2WNSBO.js} +71 -26
  10. package/dist/chunks/{chunk-CXRQWOZ5.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-LN447PY2.js → chunk-BCVYBYYT.js} +432 -2247
  16. package/dist/chunks/{chunk-7E6MUOEK.js → chunk-CWYGFU5B.js} +2 -2
  17. package/dist/chunks/{chunk-NOODWMCL.js → chunk-D4ADSZ7H.js} +1 -1
  18. package/dist/chunks/{chunk-WFFNM65B.js → chunk-ETNJSKMM.js} +281 -29
  19. package/dist/chunks/{chunk-CAQNBBQA.js → chunk-F4E4EM35.js} +3 -3
  20. package/dist/chunks/{chunk-4CTESSKI.js → chunk-FAZTGX7S.js} +6 -6
  21. package/dist/chunks/chunk-FRZKBMSW.js +2562 -0
  22. package/dist/chunks/{chunk-BYBSCN4X.js → chunk-G7PQWD4L.js} +6 -3
  23. package/dist/chunks/{chunk-NJKREDA3.js → chunk-GAMZLAG2.js} +1 -1
  24. package/dist/chunks/{chunk-FLS4DPGP.js → chunk-GM6J7Q4B.js} +28 -15
  25. package/dist/chunks/{chunk-NETCCARD.js → chunk-GRDRG6HP.js} +3 -3
  26. package/dist/chunks/chunk-HIT4Y6OI.js +1238 -0
  27. package/dist/chunks/{chunk-EZALDOQH.js → chunk-HP7JIYMT.js} +5 -2
  28. package/dist/chunks/{chunk-IZSSVYAG.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-57IECMWX.js → chunk-N4M2DDFE.js} +29 -15
  32. package/dist/chunks/{chunk-JWRZM2H2.js → chunk-OF4S23UB.js} +4 -4
  33. package/dist/chunks/{chunk-VNBU55SL.js → chunk-PC7VKEB5.js} +80 -2458
  34. package/dist/chunks/{chunk-G2JSIUWF.js → chunk-PUQS5MWL.js} +91 -2
  35. package/dist/chunks/{chunk-E7OK5WD5.js → chunk-Q4OYAQYH.js} +5 -5
  36. package/dist/chunks/{chunk-7BRU4EFH.js → chunk-QVSWRLLU.js} +35 -6
  37. package/dist/chunks/{chunk-T6EGVBKU.js → chunk-TA7FXXJD.js} +6 -3
  38. package/dist/chunks/{chunk-GPMFD4RD.js → chunk-TXUG266F.js} +1 -1
  39. package/dist/chunks/{chunk-4TEDNCON.js → chunk-UFIT2UU3.js} +354 -56
  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-7U577Q7U.js → chunk-WSF4NNMR.js} +3 -3
  44. package/dist/chunks/chunk-XHK4MDR5.js +2497 -0
  45. package/dist/chunks/{chunk-LFMSDBZN.js → chunk-XNIK66I4.js} +326 -161
  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-I566ZYNF.js → chunk-Z7VYWPZV.js} +1 -1
  49. package/dist/chunks/{conflict-VR55AOOO.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-HI4FNPYE.js → contract-DNIIW5VJ.js} +13 -5
  55. package/dist/chunks/{cowork-HJLI353D.js → cowork-GMLRGVIW.js} +31 -14
  56. package/dist/chunks/create-flow-J22BO65E.js +56 -0
  57. package/dist/chunks/{ebuilder-form-HTGI63UU.js → ebuilder-form-ANV2FHYV.js} +12 -7
  58. package/dist/chunks/{ehr-GYXIYH3A.js → ehr-GSTGAIY3.js} +695 -1255
  59. package/dist/chunks/{employee-SAK2QYXX.js → employee-22BGJ3QS.js} +3 -3
  60. package/dist/chunks/{env-DW3G4HUO.js → env-BX3VRFS7.js} +4 -3
  61. package/dist/chunks/{esb-I5INCEFE.js → esb-ATAIASX2.js} +12 -7
  62. package/dist/chunks/{factory-TKXGXS6L.js → factory-PETTFME6.js} +3 -2
  63. package/dist/chunks/{fna-K2MHTQ24.js → fna-YEKBSFSX.js} +14 -8
  64. package/dist/chunks/{group-chat-VYBNMJLG.js → group-chat-BFVXAYFX.js} +7 -4
  65. package/dist/chunks/{host-D5SERMAJ.js → host-HRBXEPDQ.js} +5 -5
  66. package/dist/chunks/{host-JM4YVHFM.js → host-LR55CTHP.js} +5 -5
  67. package/dist/chunks/{host-L3VLITMT.js → host-SUOY6VYQ.js} +5 -5
  68. package/dist/chunks/{host-ZUQTJYYK.js → host-SZGV4UNT.js} +5 -5
  69. package/dist/chunks/{host-256GVCAH.js → host-WIKN2EJ5.js} +5 -5
  70. package/dist/chunks/{hrm-VLRBKTZB.js → hrm-NRDO4W5G.js} +11 -7
  71. package/dist/chunks/{im-QK3VTLXK.js → im-IQ2HN23S.js} +11 -10
  72. package/dist/chunks/{invoice-T5JTA32H.js → invoice-MNRW76PP.js} +636 -1768
  73. package/dist/chunks/{jiuchuanhui-P2FNEQVZ.js → jiuchuanhui-DTRBAX4N.js} +14 -6
  74. package/dist/chunks/{lazy-dispatch-XRRI46M6.js → lazy-dispatch-ZVWAI25B.js} +7 -6
  75. package/dist/chunks/{mail-3Y7MJ6PS.js → mail-ZVAUXOJA.js} +16 -14
  76. package/dist/chunks/{meeting-M7LTXGJE.js → meeting-FEVPZ67S.js} +21 -13
  77. package/dist/chunks/{okr-OBC6S67L.js → okr-SDH3E5RA.js} +12 -5
  78. package/dist/chunks/{operations-5QL3AECO.js → operations-62N6EP3C.js} +4 -3
  79. package/dist/chunks/{plan-5H6I53SK.js → plan-E35JFDI7.js} +12 -5
  80. package/dist/chunks/{project-L75QZV4S.js → project-73QXBAB2.js} +49 -25
  81. package/dist/chunks/reception-UWZVACBN.js +1899 -0
  82. package/dist/chunks/recruit-stage-4MAOCKFY.js +4770 -0
  83. package/dist/chunks/registry-IM5G23LS.js +24 -0
  84. package/dist/chunks/{registry-UGRBCBHO.js → registry-JDUS4E7D.js} +7 -6
  85. package/dist/chunks/{registry-RXPN6BBT.js → registry-KNKSCJNT.js} +7 -6
  86. package/dist/chunks/{registry-NYPYMZXG.js → registry-PO7SI256.js} +4 -4
  87. package/dist/chunks/{registry-QGHFNUWS.js → registry-PVUZQDDQ.js} +3 -3
  88. package/dist/chunks/{room-recommend-A3UDC3CA.js → room-recommend-H7KLXA5R.js} +6 -5
  89. package/dist/chunks/{schedule-5GCACCK7.js → schedule-ESZIBAUO.js} +6 -5
  90. package/dist/chunks/{workflow-M5ZJ7DWF.js → workflow-CWJFJLQU.js} +15 -10
  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 +41 -30
  98. package/dist/internal/e10/auth/commands.js +164 -8
  99. package/dist/internal/e10/auth/error-log.js +182 -0
  100. package/dist/internal/e10/auth/messages.js +6 -0
  101. package/dist/internal/e10/auth/session.js +34 -3
  102. package/dist/internal/e10/auth/xiaoe.js +286 -44
  103. package/dist/internal/e10/auth-recovery.js +72 -14
  104. package/dist/internal/e10/context.js +72 -13
  105. package/dist/internal/e10/index.js +1 -1
  106. package/dist/internal/e10/network-error.js +93 -0
  107. package/dist/internal/e10/request-runtime.js +6 -0
  108. package/dist/internal/skills/install.js +9 -1
  109. package/dist/shortcuts/archive/continuation.js +2 -1
  110. package/dist/shortcuts/archive/index.js +3 -0
  111. package/dist/shortcuts/archive/operations/confirm.js +2 -1
  112. package/dist/shortcuts/archive-oa/continuation.js +2 -1
  113. package/dist/shortcuts/archive-oa/index.js +2 -0
  114. package/dist/shortcuts/archive-oa/operations/confirm.js +2 -1
  115. package/dist/shortcuts/asset/continuation.js +2 -1
  116. package/dist/shortcuts/asset/index.js +2 -0
  117. package/dist/shortcuts/asset-idle/index.js +2 -0
  118. package/dist/shortcuts/blog/continuation.js +2 -1
  119. package/dist/shortcuts/blog/index.js +2 -0
  120. package/dist/shortcuts/caizhilian/continuation.js +2 -1
  121. package/dist/shortcuts/caizhilian/index.js +2 -0
  122. package/dist/shortcuts/caizhilian/operations/confirm.js +3 -2
  123. package/dist/shortcuts/calendar/continuation.js +2 -1
  124. package/dist/shortcuts/calendar/index.js +2 -0
  125. package/dist/shortcuts/calendar/operations/read.js +31 -22
  126. package/dist/shortcuts/calendar/operations/write.js +46 -2
  127. package/dist/shortcuts/contract/continuation.js +2 -1
  128. package/dist/shortcuts/contract/index.js +2 -0
  129. package/dist/shortcuts/contract/operations/write.js +2 -1
  130. package/dist/shortcuts/cowork/continuation.js +2 -1
  131. package/dist/shortcuts/cowork/index.js +2 -0
  132. package/dist/shortcuts/cowork/operations/discuss-write.js +5 -1
  133. package/dist/shortcuts/cowork/operations/item-write.js +1 -7
  134. package/dist/shortcuts/cowork/operations/member-write.js +3 -1
  135. package/dist/shortcuts/cowork/operations/permission-write.js +5 -1
  136. package/dist/shortcuts/cowork/operations/shared.js +7 -0
  137. package/dist/shortcuts/ebuilder-form/continuation.js +2 -1
  138. package/dist/shortcuts/ebuilder-form/index.js +2 -0
  139. package/dist/shortcuts/ebuilder-form/operations/write.js +3 -2
  140. package/dist/shortcuts/ehr/continuation.js +2 -1
  141. package/dist/shortcuts/ehr/index.js +2 -0
  142. package/dist/shortcuts/ehr/operations/attend-write.js +44 -2
  143. package/dist/shortcuts/ehr/operations/hr-contact.js +7 -4
  144. package/dist/shortcuts/ehr/operations/hr-report.js +13 -7
  145. package/dist/shortcuts/ehr/operations/recruit-candidate-import.js +317 -63
  146. package/dist/shortcuts/ehr/operations/recruit-position.js +134 -2
  147. package/dist/shortcuts/ehr/operations/recruit-write.js +263 -18
  148. package/dist/shortcuts/ehr/operations/recruit.js +10 -4
  149. package/dist/shortcuts/ehr/operations/shared.js +47 -0
  150. package/dist/shortcuts/esb/continuation.js +2 -1
  151. package/dist/shortcuts/esb/index.js +2 -0
  152. package/dist/shortcuts/esb/operations/trigger.js +2 -1
  153. package/dist/shortcuts/fna/continuation.js +2 -1
  154. package/dist/shortcuts/fna/index.js +2 -0
  155. package/dist/shortcuts/fna/operations/invoice-writeoff.js +1 -1
  156. package/dist/shortcuts/fna/operations/loan.js +1 -1
  157. package/dist/shortcuts/hrm/index.js +2 -0
  158. package/dist/shortcuts/hrm/operations/org.js +118 -0
  159. package/dist/shortcuts/im/continuation.js +2 -1
  160. package/dist/shortcuts/index.js +10 -0
  161. package/dist/shortcuts/invoice/continuation.js +2 -1
  162. package/dist/shortcuts/invoice/index.js +14 -15
  163. package/dist/shortcuts/invoice/invoice-record.js +93 -0
  164. package/dist/shortcuts/invoice/manifest.js +190 -393
  165. package/dist/shortcuts/invoice/operations/add.js +2 -1
  166. package/dist/shortcuts/invoice/operations/delete.js +2 -1
  167. package/dist/shortcuts/invoice/operations/import.js +2 -1
  168. package/dist/shortcuts/invoice/operations/issuing-contract-detail.js +86 -0
  169. package/dist/shortcuts/invoice/operations/issuing-contracts.js +210 -0
  170. package/dist/shortcuts/invoice/operations/registry.js +17 -17
  171. package/dist/shortcuts/invoice/operations/reim-auto.js +4 -569
  172. package/dist/shortcuts/invoice/operations/reim.js +52 -341
  173. package/dist/shortcuts/invoice/operations/shared.js +21 -4
  174. package/dist/shortcuts/invoice/operations/update.js +2 -1
  175. package/dist/shortcuts/invoice/projection.js +10 -62
  176. package/dist/shortcuts/jiuchuanhui/continuation.js +2 -1
  177. package/dist/shortcuts/jiuchuanhui/index.js +2 -0
  178. package/dist/shortcuts/jiuchuanhui/operations/datajson.js +2 -1
  179. package/dist/shortcuts/jiuchuanhui/operations/esb.js +2 -1
  180. package/dist/shortcuts/mail/continuation.js +2 -1
  181. package/dist/shortcuts/mail/index.js +2 -0
  182. package/dist/shortcuts/mail/operations/mail-blacklist.js +1 -1
  183. package/dist/shortcuts/mail/operations/mail-contacts.js +1 -1
  184. package/dist/shortcuts/mail/operations/mail-send.js +1 -1
  185. package/dist/shortcuts/mail/operations/mail-sign.js +1 -1
  186. package/dist/shortcuts/mail/operations/mail-template.js +1 -1
  187. package/dist/shortcuts/meeting/continuation.js +2 -1
  188. package/dist/shortcuts/meeting/index.js +2 -0
  189. package/dist/shortcuts/meeting/operations/change.js +1 -1
  190. package/dist/shortcuts/meeting/operations/create.js +1 -1
  191. package/dist/shortcuts/meeting/operations/eb/catalog.js +4 -1
  192. package/dist/shortcuts/meeting/operations/eb/create-flow.js +101 -35
  193. package/dist/shortcuts/meeting/operations/eb/decision.js +1 -1
  194. package/dist/shortcuts/meeting/operations/eb/factory.js +34 -1
  195. package/dist/shortcuts/meeting/operations/eb/group-chat.js +25 -3
  196. package/dist/shortcuts/meeting/operations/eb/person-cache.js +96 -0
  197. package/dist/shortcuts/meeting/operations/eb/room-recommend.js +33 -11
  198. package/dist/shortcuts/meeting/operations/lifecycle.js +1 -1
  199. package/dist/shortcuts/meeting/operations/receipts.js +1 -1
  200. package/dist/shortcuts/meeting/operations/signs.js +1 -1
  201. package/dist/shortcuts/okr/continuation.js +2 -1
  202. package/dist/shortcuts/okr/index.js +2 -0
  203. package/dist/shortcuts/okr/operations/write.js +1 -1
  204. package/dist/shortcuts/plan/continuation.js +2 -1
  205. package/dist/shortcuts/plan/index.js +2 -0
  206. package/dist/shortcuts/plan/operations/write.js +1 -1
  207. package/dist/shortcuts/project/continuation.js +2 -1
  208. package/dist/shortcuts/project/index.js +2 -0
  209. package/dist/shortcuts/project/operations/read.js +6 -25
  210. package/dist/shortcuts/project/operations/shared.js +22 -0
  211. package/dist/shortcuts/project/operations/write.js +28 -2
  212. package/dist/shortcuts/reception/constants.js +53 -0
  213. package/dist/shortcuts/reception/errors.js +54 -0
  214. package/dist/shortcuts/reception/host.js +125 -0
  215. package/dist/shortcuts/reception/index.js +198 -0
  216. package/dist/shortcuts/reception/manifest.js +177 -0
  217. package/dist/shortcuts/reception/operations/ask.js +71 -0
  218. package/dist/shortcuts/reception/operations/browsertool.js +58 -0
  219. package/dist/shortcuts/reception/operations/compose.js +129 -0
  220. package/dist/shortcuts/reception/operations/customparams.js +74 -0
  221. package/dist/shortcuts/reception/operations/doc.js +238 -0
  222. package/dist/shortcuts/reception/operations/docrender.js +36 -0
  223. package/dist/shortcuts/reception/operations/panels.js +179 -0
  224. package/dist/shortcuts/reception/operations/registry.js +26 -0
  225. package/dist/shortcuts/reception/operations/render-assets.js +184 -0
  226. package/dist/shortcuts/reception/operations/render.js +123 -0
  227. package/dist/shortcuts/reception/operations/runs.js +38 -0
  228. package/dist/shortcuts/reception/operations/schedule.js +127 -0
  229. package/dist/shortcuts/reception/operations/shared.js +196 -0
  230. package/dist/shortcuts/reception/operations/snapshot.js +68 -0
  231. package/dist/shortcuts/reception/operations/types.js +1 -0
  232. package/dist/shortcuts/reception/operations.js +33 -0
  233. package/dist/shortcuts/reception/upload.js +218 -0
  234. package/dist/shortcuts/recruit-stage/context.js +231 -0
  235. package/dist/shortcuts/recruit-stage/continuation.js +74 -0
  236. package/dist/shortcuts/recruit-stage/errors.js +65 -0
  237. package/dist/shortcuts/recruit-stage/host.js +109 -0
  238. package/dist/shortcuts/recruit-stage/index.js +115 -0
  239. package/dist/shortcuts/recruit-stage/manifest.js +29 -0
  240. package/dist/shortcuts/recruit-stage/operations/interview-arrange.js +722 -0
  241. package/dist/shortcuts/recruit-stage/operations/interview-feedback.js +269 -0
  242. package/dist/shortcuts/recruit-stage/operations/jd-create.js +719 -0
  243. package/dist/shortcuts/recruit-stage/operations/list.js +431 -0
  244. package/dist/shortcuts/recruit-stage/operations/registry.js +38 -0
  245. package/dist/shortcuts/recruit-stage/operations/resume-import.js +1354 -0
  246. package/dist/shortcuts/recruit-stage/operations/search.js +158 -0
  247. package/dist/shortcuts/recruit-stage/operations/types.js +25 -0
  248. package/dist/shortcuts/recruit-stage/school-tiers.json +318 -0
  249. package/dist/shortcuts/recruit-stage/shared.js +608 -0
  250. package/dist/shortcuts/workflow/continuation.js +2 -1
  251. package/dist/shortcuts/workflow/index.js +2 -0
  252. package/dist/shortcuts/workflow/operations/form.js +32 -8
  253. package/dist/shortcuts/workflow/operations/todoSmartConvert/detailFieldRules.js +4 -2
  254. package/dist/shortcuts/workflow/operations/todoSmartConvert/summaryCache.js +13 -6
  255. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailCache.js +17 -24
  256. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailFetcher.js +14 -9
  257. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.collect.js +50 -8
  258. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.core.js +2 -1
  259. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.detail.js +17 -11
  260. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.group.js +7 -39
  261. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.groupSummary.js +3 -2
  262. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.js +51 -15
  263. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.pipeline.js +16 -1
  264. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.smartGroup.js +151 -63
  265. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.subGroup.js +56 -0
  266. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.summary.js +39 -14
  267. package/dist/shortcuts/workflow/operations/write.js +1 -1
  268. package/docs/_catalog.md +3 -0
  269. package/docs/agent-invoice.md +1 -1
  270. package/docs/archive-oa.md +1 -1
  271. package/docs/caizhilian.md +1 -1
  272. package/docs/calendar.md +1 -1
  273. package/docs/contract.md +1 -1
  274. package/docs/e10-auth.md +23 -1
  275. package/docs/ehr.md +2 -2
  276. package/docs/esb.md +1 -1
  277. package/docs/im.md +1 -1
  278. package/docs/invoice.md +8 -12
  279. package/docs/okr.md +1 -1
  280. package/docs/operation-manual.md +8 -0
  281. package/docs/reception.md +119 -0
  282. package/package.json +1 -1
  283. package/scripts/clean.mjs +43 -2
  284. package/scripts/install-skill-to-xiaoe.mjs +105 -0
  285. package/scripts/package-skill.mjs +4 -2
  286. package/skill-template/business-info.json +42 -2
  287. package/skill-template/domains/caizhilian.md +1 -1
  288. package/skill-template/domains/reception-flow.md +18 -0
  289. package/skill-template/domains/recruit-stage.md +29 -0
  290. package/skill-template/domains/yepiaotong.md +4 -7
  291. package/skills/weaver-e10-archive-oa/references/source-manifest.json +14 -14
  292. package/skills/weaver-e10-blog/references/blog-publish.md +1 -1
  293. package/skills/weaver-e10-blog/references/source-manifest.json +7 -7
  294. package/skills/weaver-e10-caizhilian/references/source-manifest.json +21 -21
  295. package/skills/weaver-e10-caizhilian/references/write-protocol.md +2 -2
  296. package/skills/weaver-e10-calendar/SKILL.md +2 -1
  297. package/skills/weaver-e10-calendar/references/calendar-write.md +55 -1
  298. package/skills/weaver-e10-cowork/SKILL.md +1 -1
  299. package/skills/weaver-e10-cowork/references/cowork-write.md +3 -1
  300. package/skills/weaver-e10-ebuilder-form/SKILL.md +1 -1
  301. package/skills/weaver-e10-ebuilder-form/references/custom-api.md +1 -1
  302. package/skills/weaver-e10-ebuilder-form/references/openapi-write.md +1 -1
  303. package/skills/weaver-e10-esb/SKILL.md +2 -2
  304. package/skills/weaver-e10-esb/references/source-manifest.json +22 -22
  305. package/skills/weaver-e10-esb/references/trigger.md +2 -2
  306. package/skills/weaver-e10-jinchengda/references/contract-clause-library-crud.md +1 -1
  307. package/skills/weaver-e10-jinchengda/references/contract-clause-reference-save.md +1 -1
  308. package/skills/weaver-e10-jinchengda/references/contract-request-write.md +1 -1
  309. package/skills/weaver-e10-jinchengda/references/source-manifest.json +29 -29
  310. package/skills/weaver-e10-jucailin/SKILL.md +1 -1
  311. package/skills/weaver-e10-jucailin/references/attend-write.md +10 -2
  312. package/skills/weaver-e10-jucailin/references/hr-contact.md +8 -0
  313. package/skills/weaver-e10-jucailin/references/hr-report.md +8 -0
  314. package/skills/weaver-e10-jucailin/references/recruit-create.md +14 -5
  315. package/skills/weaver-e10-jucailin/references/recruit-read.md +1 -1
  316. package/skills/weaver-e10-jucailin/references/recruit-write.md +5 -4
  317. package/skills/weaver-e10-mail/SKILL.md +1 -1
  318. package/skills/weaver-e10-meeting/SKILL.md +39 -7
  319. package/skills/weaver-e10-meeting/references/meeting-change.md +1 -1
  320. package/skills/weaver-e10-meeting/references/meeting-create.md +1 -1
  321. package/skills/weaver-e10-meeting/references/meeting-lifecycle.md +1 -1
  322. package/skills/weaver-e10-meeting/references/meeting-verification.md +1 -1
  323. package/skills/weaver-e10-okr/references/okr-align.md +1 -1
  324. package/skills/weaver-e10-okr/references/okr-keyresult.md +1 -1
  325. package/skills/weaver-e10-okr/references/okr-write.md +1 -1
  326. package/skills/weaver-e10-okr/references/source-manifest.json +8 -8
  327. package/skills/weaver-e10-plan/references/plan-report-write.md +1 -1
  328. package/skills/weaver-e10-plan/references/source-manifest.json +20 -20
  329. package/skills/weaver-e10-qiyecheng/references/loan-management.md +1 -1
  330. package/skills/weaver-e10-qiyecheng/references/source-manifest.json +18 -18
  331. package/skills/weaver-e10-reception-flow/SKILL.md +173 -0
  332. 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
  333. package/skills/weaver-e10-reception-flow/data/fields-snapshot.json +213 -0
  334. package/skills/weaver-e10-reception-flow/references/browsertool.md +68 -0
  335. package/skills/weaver-e10-reception-flow/references/env-pitfalls.md +51 -0
  336. package/skills/weaver-e10-reception-flow/references/fields-snapshot.md +227 -0
  337. package/skills/weaver-e10-reception-flow/references/guide.md +179 -0
  338. package/skills/weaver-e10-reception-flow/scripts/locate.sh +14 -0
  339. package/skills/weaver-e10-reception-flow/scripts/render.py +724 -0
  340. package/skills/weaver-e10-recruit-stage/SKILL.md +230 -0
  341. package/skills/weaver-e10-recruit-stage/agents/openai.yaml +119 -0
  342. package/skills/weaver-e10-recruit-stage/lib/recruit-xiaoe-file.mjs +188 -0
  343. package/skills/weaver-e10-recruit-stage/lib/xiaoe-session.mjs +66 -0
  344. package/skills/weaver-e10-recruit-stage/references/position-templates.md +202 -0
  345. package/skills/weaver-e10-recruit-stage/references/recruit-arrange-interview.md +322 -0
  346. package/skills/weaver-e10-recruit-stage/references/recruit-capability-check.md +127 -0
  347. package/skills/weaver-e10-recruit-stage/references/recruit-check-install.md +65 -0
  348. package/skills/weaver-e10-recruit-stage/references/recruit-detail-process.md +63 -0
  349. package/skills/weaver-e10-recruit-stage/references/recruit-edit-interview-feedback.md +142 -0
  350. package/skills/weaver-e10-recruit-stage/references/recruit-jd-create.md +95 -0
  351. package/skills/weaver-e10-recruit-stage/references/recruit-jd-template.md +56 -0
  352. package/skills/weaver-e10-recruit-stage/references/recruit-list-candidate.md +101 -0
  353. package/skills/weaver-e10-recruit-stage/references/recruit-list-interview.md +148 -0
  354. package/skills/weaver-e10-recruit-stage/references/recruit-match-candidates.md +77 -0
  355. package/skills/weaver-e10-recruit-stage/references/recruit-output-links.md +59 -0
  356. package/skills/weaver-e10-recruit-stage/references/recruit-resolve-creator.md +69 -0
  357. package/skills/weaver-e10-recruit-stage/references/recruit-resolve-metadata.md +241 -0
  358. package/skills/weaver-e10-recruit-stage/references/recruit-resume-import.md +451 -0
  359. package/skills/weaver-e10-recruit-stage/references/recruit-resume-parse.md +128 -0
  360. package/skills/weaver-e10-recruit-stage/references/recruit-search-candidate.md +146 -0
  361. package/skills/weaver-e10-recruit-stage/references/recruit-urge-feedback.md +69 -0
  362. package/skills/weaver-e10-shared/SKILL.md +1 -1
  363. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +10 -2
  364. package/skills/weaver-e10-shijingran/SKILL.md +7 -6
  365. package/skills/weaver-e10-shijingran/references/operations.md +3 -1
  366. package/skills/weaver-e10-shijingran/references/source-manifest.json +30 -28
  367. package/skills/weaver-e10-shijingran/references/write-operations.md +2 -0
  368. package/skills/weaver-e10-skill-maker/references/module-cli-generation.md +2 -0
  369. package/skills/weaver-e10-wenshuding/references/source-manifest.json +3 -3
  370. package/skills/weaver-e10-workflow/SKILL.md +4 -2
  371. package/skills/weaver-e10-workflow/aigroup/default.json +11 -9
  372. package/skills/weaver-e10-workflow/references/source-manifest.json +32 -32
  373. package/skills/weaver-e10-workflow/references/todo-smart-convert.md +23 -13
  374. package/skills/weaver-e10-workflow/tools/todo-summary.cjs +62 -20
  375. package/skills/weaver-e10-yepiaotong/SKILL.md +28 -36
  376. package/skills/weaver-e10-yepiaotong/references/invoice-agent-entry.md +6 -3
  377. package/skills/weaver-e10-yepiaotong/references/invoice-detail.md +13 -10
  378. package/skills/weaver-e10-yepiaotong/references/invoice-enterprise-list.md +2 -0
  379. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-workflow.md +194 -155
  380. package/skills/weaver-e10-yepiaotong/references/invoice-output-view.md +28 -32
  381. package/skills/weaver-e10-yepiaotong/references/invoice-personal-list.md +5 -1
  382. package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +8 -10
  383. package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +211 -616
  384. package/skills/weaver-e10-yepiaotong/references/reim-examples.md +149 -117
  385. package/skills/weaver-e10-yepiaotong/references/reim-expense-subject-rules.md +17 -20
  386. package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +20 -39
  387. package/skills/weaver-e10-yepiaotong/references/reim-matching-rules.md +55 -22
  388. package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +7 -17
  389. package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +88 -92
  390. package/skills/weaver-e10-yepiaotong/references/source-manifest.json +144 -354
  391. package/skills/weaver-e10-yimiaoban/SKILL.md +1 -1
  392. package/skills/weaver-e10-yimiaoban/references/msg-write.md +1 -1
  393. package/skills/weaver-e10-yimiaoban/references/safety-boundaries.md +1 -1
  394. package/skills/weaver-e10-yimiaoban/references/source-manifest.json +7 -7
  395. package/dist/chunks/chunk-SPRHHSVC.js +0 -465
  396. package/dist/chunks/registry-KMHCPAAD.js +0 -22
  397. package/dist/shortcuts/invoice/markdown.js +0 -172
  398. package/dist/shortcuts/invoice/operations/issuing-qys.js +0 -424
  399. package/skills/weaver-e10-meeting.zip +0 -0
  400. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +0 -131
  401. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-form-fill-rules.md +0 -179
@@ -79,9 +79,7 @@ weaver-work-cli --json invoice run invoice.reim.file-ocr.preview --input-json '{
79
79
 
80
80
  已获取发票数据 → **跳过 Step 1A**(不调用 `invoice.list`)
81
81
 
82
- 利用发票的 `invoiceDate`(2026-07-28 ~ 2026-07-29)筛选事前申请:
83
- - `cusCreateDateStart` = "2026-04-29"(往前推90天)
84
- - `cusCreateDateEnd` = "2026-07-29"(业务结束日;CLI 再 + 1 天后发给接口)
82
+ 查事前申请时不按发票日期推算日期,用户没指定日期就不传 `cusCreateDateStart` / `cusCreateDateEnd`,由 CLI 按默认窗口查(最近 7 天,查不到自动放宽到最近 1 个月)。
85
83
 
86
84
  → 继续 Step 1B → Step 2 匹配 → Step 2.5 → Step 3 → Step 4 → Step 5(流程同示例1/2)
87
85
 
@@ -91,18 +89,16 @@ weaver-work-cli --json invoice run invoice.reim.file-ocr.preview --input-json '{
91
89
 
92
90
  ### Step 1A: 获取发票
93
91
 
94
- **第一步:按内联公式计算最近一周时间戳参数**
92
+ **第一步:按「查票日期」取最近一周**(今天 2026-07-30 → 2026-07-23 ~ 2026-07-30)
95
93
 
96
- AI 直接计算(UTC+8):begin = 今天00:00:00秒时间戳 - 7*86400, end = 今天23:59:59秒时间戳
97
-
98
- 生成 `invoice.list` 入参(只传必要字段;`sreim`/`bill_type` 由 CLI 默认):
94
+ 生成 `invoice.list` 入参(只传必要字段;`sreim`/`bill_type` 由 CLI 默认;日期直接写 `YYYY-MM-DD`,CLI 换算时间戳):
99
95
 
100
96
  ```json
101
97
  {
102
98
  "page_size": 10,
103
99
  "start_pos": 0,
104
- "consumption_tm_begin": 1786291200,
105
- "consumption_tm_end": 1786982399
100
+ "consumption_tm_begin": "2026-07-23",
101
+ "consumption_tm_end": "2026-07-30"
106
102
  }
107
103
  ```
108
104
 
@@ -111,59 +107,54 @@ AI 直接计算(UTC+8):begin = 今天00:00:00秒时间戳 - 7*86400, end =
111
107
  Windows PowerShell:
112
108
 
113
109
  ```powershell
114
- weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0,"consumption_tm_begin":1786291200,"consumption_tm_end":1786982399}'
110
+ weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0,"consumption_tm_begin":"2026-07-23","consumption_tm_end":"2026-07-30"}'
115
111
  ```
116
112
 
117
113
  macOS/Linux(bash/zsh):
118
114
 
119
115
  ```bash
120
- weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0,"consumption_tm_begin":1786291200,"consumption_tm_end":1786982399}'
116
+ weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0,"consumption_tm_begin":"2026-07-23","consumption_tm_end":"2026-07-30"}'
121
117
  ```
122
118
 
123
- **返回(CLI 信封中列表在 `data.items`,下面是单条票面结构):**
119
+ **返回(CLI 信封中列表在 `data.items`,下面是一条平铺的 `items[]` 元素,`ext` 原文省略):**
124
120
 
125
121
  ```json
126
122
  {
127
- "infos": [
128
- {
129
- "info": {
130
- "id": "1295366637717012482",
131
- "fid": "1295366637717012482",
132
- "code": "",
133
- "number": "36901189",
134
- "ext": "{\"content\":\"*运输服务*客运服务费\",\"products\":[{\"name\":\"*运输服务*客运服务费\",\"amount\":\"108.2\"}],\"category\":\"增值税电子普通发票\"}",
135
- "fylx": "897092516517920775",
136
- "currency": "CNY",
137
- "province": "上海市",
138
- "modify_info": { "ctm": 1786168444, "utm": 1786168444, "cstm": 1722268800, "source": 4 },
139
- "comm_info": {
140
- "pro": { "cname": "增值税电子普通发票", "type": 3, "date": "2026-07-30", "status": 0 },
141
- "price": { "amount": "102.08", "total": "108.2" },
142
- "buyer": { "tcode": "xxx", "company": "上海亘岩网络科技有限公司" },
143
- "payer": { "tcode": "xxx", "company": "北京滴滴出行科技有限公司" }
144
- },
145
- "relative_fids": [],
146
- "bill_type": 0
147
- },
148
- "ret": { "trace": "", "ret": 0, "message": "执行成功" },
149
- "is_valid": 0
150
- }
151
- ],
152
- "res_base": { "trace": "", "ret": 0, "message": "执行成功" }
123
+ "fid": "1295366637717012482",
124
+ "number": "36901189",
125
+ "code": "",
126
+ "detailUrl": "https://e10.example.com/sp/inc/incDetail?fid=1295366637717012482",
127
+ "extInfo": {
128
+ "content": "*运输服务*客运服务费",
129
+ "from": "仁济医院南院区门诊部(南门)南侧",
130
+ "to": "浦江瑞和城柒街区30号"
131
+ },
132
+ "fylx": "897092516517920775",
133
+ "province": "上海市",
134
+ "modify_info": { "ctm": 1786168444, "utm": 1786168444, "cstm": 1785340800, "source": 4 },
135
+ "comm_info": {
136
+ "pro": { "cname": "增值税电子普通发票", "type": 3, "date": "2026-07-30", "status": 0 },
137
+ "price": { "amount": "102.08", "total": "108.2" },
138
+ "buyer": { "tcode": "xxx", "company": "上海亘岩网络科技有限公司" },
139
+ "payer": { "tcode": "xxx", "company": "北京滴滴出行科技有限公司" }
140
+ },
141
+ "relative_fids": [],
142
+ "bill_type": 0
153
143
  }
154
144
  ```
155
145
 
156
146
  **字段映射提取:**
157
- - `invoiceId` = `info.fid` = `"1295366637717012482"`
158
- - `invoiceNumber` = `info.number` = `"36901189"`
159
- - `invoiceType` = `info.comm_info.pro.cname` = `"增值税电子普通发票"`
160
- - `invoiceTypeCode` = `info.comm_info.pro.type` = `3`
161
- - `invoiceDate` = `info.comm_info.pro.date` = `"2026-07-30"`
162
- - `amount` = `info.comm_info.price.total` = `"108.2"`
163
- - `buyerName` = `info.comm_info.buyer.company` = `"上海亘岩网络科技有限公司"`
164
- - `sellerName` = `info.comm_info.payer.company` = `"北京滴滴出行科技有限公司"`
165
- - `consumeContent` = `JSON.parse(ext).content` = `"*运输服务*客运服务费"`
166
- - `expenseType` = 根据 `info.fylx` 查名称 → `"市内交通"`
147
+ - `invoiceId` = `fid` = `"1295366637717012482"`
148
+ - `invoiceNumber` = `number` = `"36901189"`
149
+ - `invoiceType` = `comm_info.pro.cname` = `"增值税电子普通发票"`
150
+ - `invoiceTypeCode` = `comm_info.pro.type` = `3`
151
+ - `invoiceDate` = `comm_info.pro.date` = `"2026-07-30"`
152
+ - `amount` = `comm_info.price.total` = `"108.2"`
153
+ - `buyerName` = `comm_info.buyer.company` = `"上海亘岩网络科技有限公司"`
154
+ - `sellerName` = `comm_info.payer.company` = `"北京滴滴出行科技有限公司"`
155
+ - `consumeContent` = `extInfo.content` = `"*运输服务*客运服务费"`
156
+ - `expenseType`:列表只有 `fylx`(ID),按消费内容归类 → `"市内交通"`
157
+ - 流程标题里的城市:`province` = 上海市,`extInfo.from` / `extInfo.to` 也都在上海 → 上海(不用再调 `invoice.get`)
167
158
 
168
159
  ### Step 1C: 展示发票汇总,等待用户确认
169
160
 
@@ -172,7 +163,7 @@ weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"s
172
163
  **AI 展示给用户:**
173
164
 
174
165
  ```markdown
175
- 已为您查询最近一周(2026-07-24 ~ 2026-07-30)的发票数据,共找到 1 张未报销发票,汇总金额 ¥108.20:
166
+ 已为您查询最近一周(2026-07-23 ~ 2026-07-30)的发票数据,共找到 1 张未报销发票,汇总金额 ¥108.20:
176
167
 
177
168
  | # | 发票类型 | 开票日期 | 发票号码 | 金额 | 销方名称 | 费用类型 |
178
169
  |---|----------|----------|----------|------|----------|----------|
@@ -183,24 +174,23 @@ weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"s
183
174
 
184
175
  用户回复"确认" → 继续后续流程
185
176
 
186
- ### Step 1B: 获取事前申请(基于发票日期预筛选)
177
+ ### Step 1B: 获取事前申请(CLI 默认日期窗口)
187
178
 
188
- > 已知发票 invoiceDate = "2026-07-30"
189
- > 事前申请日期一定在开票日期之前 → cusCreateDateEnd = "2026-07-30"(业务结束日;CLI 再 + 1 天后发给接口)
190
- > 往前推90天 → cusCreateDateStart = "2026-05-01"
179
+ > 用户没指定日期 → 不传 `cusCreateDateStart` / `cusCreateDateEnd`。
180
+ > CLI 以东八区当天为结束日、往前 7 天为开始日(结束日发给接口时再 + 1 天);第 1 页查不到时自动放宽到最近 1 个月,`data.query.widened=true`。
191
181
 
192
182
  **命令:**
193
183
 
194
184
  Windows PowerShell:
195
185
 
196
186
  ```powershell
197
- weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":100,"cusCreateDateStart":"2026-05-01","cusCreateDateEnd":"2026-07-30"}'
187
+ weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":100}'
198
188
  ```
199
189
 
200
190
  macOS/Linux(bash/zsh):
201
191
 
202
192
  ```bash
203
- weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":100,"cusCreateDateStart":"2026-05-01","cusCreateDateEnd":"2026-07-30"}'
193
+ weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":100}'
204
194
  ```
205
195
 
206
196
  **返回:**
@@ -242,7 +232,7 @@ weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pa
242
232
  }
243
233
  ```
244
234
 
245
- 若同一天还能对上另一条发起日也在 90 天内的事前申请,先把两条列给用户选,选定后再继续。
235
+ 若还能对上另一条发起日也在 90 天内的事前申请,就确认不了是哪条:停下来把两条(名称、发起日期、状态、能对上的发票)列给用户选,选定后再继续,见示例17。
246
236
 
247
237
  ### Step 2.5: 获取报销单工作流
248
238
 
@@ -280,7 +270,7 @@ weaver-work-cli --json invoice run invoice.reim.workflow.resolve --input-json '{
280
270
 
281
271
  ### Step 3: 并行载入表单 + 发票对象
282
272
 
283
- 以下三条命令互相独立,**同时发起**。建单不调用 `invoice.reim.row-info-batch`。
273
+ 以下两条命令互相独立,**同时发起**。
284
274
 
285
275
  **① 载入报销表单(`weaver-e10-workflow`):**
286
276
 
@@ -326,9 +316,7 @@ weaver-work-cli --json workflow run workflow.createForm --input-json '{"workflow
326
316
 
327
317
  > 承担主体、申请人、报销人直接上级、合同号、报销方式都带 `initialValue` → **不传**。明细每行只写「相关发票」和(已绑定事前申请的)「相关流程」;申请金额、币种、费用类型(科目)、费用说明、费用日期、相关凭证都**不传**,由发票联动带出。实报金额、附件数、承担人所有上级等不在 `fields` 里 → **不传**。
328
318
 
329
- **② 交通类发票取行程(只用于流程标题的城市):** `invoice.get`(`{"fid":"1295366637717012482"}`)→ `from`=「仁济医院南院区门诊部(南门)南侧」、`to`=「浦江瑞和城柒街区30号」。
330
-
331
- **③ 取发票对象:** 只传发票,不传凭证。
319
+ **② 取发票对象:** 只传发票,不传凭证。
332
320
 
333
321
  Windows PowerShell:
334
322
 
@@ -425,7 +413,7 @@ weaver-work-cli --json workflow run workflow.createRequest --input ./reim-create
425
413
  ```
426
414
 
427
415
  **要点**:
428
- - 一张发票一行,数组顺序就是明细行顺序(行程单有多段行程也不拆,见示例13)
416
+ - 一张发票一行,数组顺序就是明细行顺序(行程单有多段行程也不拆,见 [reim-form-fill-rules.md](reim-form-fill-rules.md#3-行程单多段行程不拆行))
429
417
  - 两行都绑定同一个事前申请(明细「相关流程」同值);主表「事前申请流程」不赋值
430
418
  - 每行「相关发票」只放该行发票的 1 个对象
431
419
 
@@ -540,15 +528,15 @@ weaver-work-cli --json workflow run workflow.editApply --input-json '{"context":
540
528
 
541
529
  | 轮次 | 用户 | AI 操作 |
542
530
  |------|------|---------|
543
- | 1 | "查下我最近的发票" | 内联计算最近一周时间戳 → 调用 `invoice.list`,无结果则扩大到一个月 → 告知用户查询范围,展示发票列表,**不进入报销流程** |
531
+ | 1 | "查下我最近的发票" | 按「查票日期」取最近一周 → 调用 `invoice.list`,无结果则扩大到一个月 → 告知用户查询范围,展示发票列表,**不进入报销流程** |
544
532
  | 2 | "帮我报销" | 上下文已有发票 → 跳过 1A,展示发票汇总(Step 1C)→ 用户确认 → 用发票日期筛选事前申请 → Step 2 → 2.5 → 3 → 4 → 5 |
545
533
 
546
534
  ### 示例8:查事前申请 → 查发票 → 报销
547
535
 
548
536
  | 轮次 | 用户 | AI 操作 |
549
537
  |------|------|---------|
550
- | 1 | "查下我的事前申请" | 调用 `invoice.reim.requests.list`(不传 `cusCreateDateEnd`,CLI 按东八区当天 + 1 天填入;若传入结束日,CLI 再 + 1 天后发给接口),展示列表 |
551
- | 2 | "查下对应的发票" | 复用事前申请日期,`consumption_tm_begin` = 最早 createTime 的秒级时间戳,调用 `invoice.list` 展示 |
538
+ | 1 | "查下我的事前申请" | 调用 `invoice.reim.requests.list`(不传日期,CLI 查最近 7 天,查不到自动放宽到最近 1 个月),展示列表并说明查的是哪段时间(取 `data.query`) |
539
+ | 2 | "查下对应的发票" | 复用事前申请日期,`consumption_tm_begin` = 最早 `createTime` 的日期部分(`YYYY-MM-DD`),调用 `invoice.list` 展示 |
552
540
  | 3 | "报销吧" | 上下文已有两组数据 → 跳过 1A/1B,直接 Step 2 → 2.5 → 3 → 4 → 5 |
553
541
 
554
542
  ### 示例9:查询后选部分报销
@@ -563,7 +551,7 @@ weaver-work-cli --json workflow run workflow.editApply --input-json '{"context":
563
551
  用户说:"报销上个月滴滴和住宿的发票"
564
552
 
565
553
  AI 操作:
566
- 1. 内联计算 2026-07-01 ~ 2026-07-31 的秒级时间戳,并设置 `content="滴滴"` 组装请求参数
554
+ 1. `consumption_tm_begin="2026-07-01"`、`consumption_tm_end="2026-07-31"`,并设置 `content="滴滴"` 组装请求参数
567
555
  2. 调用 `invoice.list` 查询(CLI 支持服务端筛选,减少返回数据量)
568
556
  3. 展示发票汇总(Step 1C),用户确认后走 Step 1B → 2 → 2.5 → 3 → 4 → 5
569
557
 
@@ -572,9 +560,9 @@ AI 操作:
572
560
  用户说:"帮我报销"
573
561
 
574
562
  AI 操作:
575
- 1. 内联计算最近一周时间戳参数
563
+ 1. 按「查票日期」取最近一周(2026-08-10 ~ 2026-08-17)
576
564
  2. 调用 `invoice.list` → 返回空(无结果)
577
- 3. 自动内联计算最近一个月时间戳参数
565
+ 3. 自动扩到最近一个月(2026-07-18 ~ 2026-08-17)
578
566
  4. 再次调用 `invoice.list` → 返回 3 张发票
579
567
  5. 展示 Step 1C:
580
568
 
@@ -600,63 +588,35 @@ AI 操作:
600
588
 
601
589
  - 流程标题:`"龚为明8月上海去重庆交通费报销"`(「去重庆」取用户原话,没说从哪出发就默认上海;月份取发票开票日期 2026-08-19)
602
590
  - 合同号传 `"20250104933"`;**承担主体不传**(「边宝」也不传,等合同联动)
603
- - **相关客户、相关项目还没确认 → 一次请用户一起填写,禁止直接存草稿,也不要再问合同号。** 这是出差,「去重庆」必须给具体客户;项目可以说「不填」。用户给出名称后先 `invoice.reim.field.search` 消歧,写入 `data` 再 `createRequest`。明细「费用说明」不传,由发票联动带出
591
+ - **相关客户、相关项目还没确认 → 一次请用户一起填写,禁止直接存草稿,也不要再问合同号。** 这是出差,「去重庆」必须给具体客户;项目可以说「不填」。用户给出名称后先 `invoice.reim.field.search` 消歧,写入 `data` 再 `createRequest`
604
592
  - 若用户已确认客户 / 项目,创建后 `linkageResult` 返回(2026-10-21 真机,合同本身带出客户项目时):`字段联动带出:…实报金额=50.07、承担主体=朱洪磊、相关客户=中国航空集团有限公司、合同号=20250104933、相关项目=中航集团办公平台改造及升级项目。`
605
593
  - 原样粘贴 `finalMarkdown` 后补一句:「承担主体已按合同 20250104933 联动带出:朱洪磊;你提到的承担主体「边宝」与合同不一致,已按合同联动为准。」客户 / 项目若被联动改写,同样如实告诉用户
606
594
  - 联动把已确认的客户 / 项目冲空了 → 用已确认值 `workflow.edit*` 写回,不要再问、不要另建一张单
607
595
 
608
596
  ---
609
597
 
610
- ## 示例13:行程单有多段行程(不拆行)
598
+ ## 示例13:没有出差流程时,按出差时间 + 城市查票(「报销上周去北京的费用」)
611
599
 
612
- 还是示例12那张滴滴发票(¥50.07,发票 ID `1328381858116714513`,行程单 `1328381883894906889`)。建单不调 `row-info-batch`,下面是它的返回(2026-10-21 真机),只用来说明行程单有多段:
613
-
614
- ```json
615
- {
616
- "date": "2026-08-19", "sqje": "50.07", "fysm": "交通运输服务",
617
- "itinerary": "1328381883894906889", "containsItinerary": true,
618
- "itineraryData": [
619
- {"date": "2025-12-31", "sqje": "14.67", "fysm": "大道|重庆财经学院-西门 - 鱼胡路-地铁站", "subjectName": "5301滴滴车票", "subjectId": "100502270000000177", "itinerary": "1328381883894906889"},
620
- {"date": "2026-01-22", "sqje": "10.40", "fysm": "大道|重庆财经学院-西门 - 鱼胡路-地铁站", "subjectName": "5301滴滴车票", "subjectId": "100502270000000177", "itinerary": "1328381883894906889"},
621
- {"date": "2026-04-09", "sqje": "25.00", "fysm": "大道|重庆财经学院-西门 - 大渡口区|重庆工业博物馆", "subjectName": "5301滴滴车票", "subjectId": "100502270000000177", "itinerary": "1328381883894906889"}
622
- ]
623
- }
624
- ```
600
+ 今天 2026-10-21,用户说"帮我报销上周去北京的费用"(2026-10-21 真机),`invoice.reim.requests.list` 没找到去北京的出差流程:
625
601
 
626
- `itineraryData` 有 3 段,**仍然只填 1 行**,这一行只写「相关发票」(出差时再加「相关流程」)。费用日期、金额、币种、科目、费用说明、相关凭证都不传,由发票联动带出;不要把 `fysm` 或 `invoice.get` 的起止点写进去。
627
-
628
- ```json
629
- "100003690000000011": [
630
- {"100003720000077896": [<发票对象>]}
631
- ]
632
- ```
633
-
634
- - 流程标题:`龚为明8月上海去重庆交通费报销`
635
-
636
- ---
637
-
638
- ## 示例14:按出差时间 + 城市查票(「报销上周去北京的费用」)
639
-
640
- 今天 2026-10-21,用户说"帮我报销上周去北京的费用"(2026-10-21 真机):
641
-
642
- 1. 出差时间 = 上周 2026-10-12 ~ 10-18 → 开票日期查 **2026-10-12 ~ 今天**
643
- 2. 查到 1 张火车票(10-19,¥166):`invoice.get` 起止站 杭州东 → 全椒,与北京无关
602
+ 1. 出差时间 = 上周 2026-10-12 ~ 10-18 → 消费日期查 **2026-10-11 ~ 今天**(加 `--view summary`)
603
+ 2. 查到 1 张火车票(10-19,¥166):`stationGetOn` / `stationGetOff` 是 杭州东 → 全椒,与北京无关
644
604
  3. 没有与北京相关的票 → 回复用户:
645
605
 
646
- > 你的票夹里没找到上周去北京的发票,所以没有往下建报销单。我按开票日期 2026-10-12 到今天查的,只有 1 张火车票(10-19,¥166),但它是杭州东 → 全椒,跟北京无关。可能是北京的发票还没导进票夹,或者日期不在上周。
606
+ > 你的票夹里没找到上周去北京的发票,所以没有往下建报销单。我按消费日期 2026-10-11 到今天查的,只有 1 张火车票(10-19,¥166),但它是杭州东 → 全椒,跟北京无关。可能是北京的发票还没导进票夹,或者日期不在上周。
647
607
 
648
608
  - 不要因为这期间有票就拿来报;也不要自己把时间放宽到几个月前
649
609
  - 这期间就算有上海的打车票,也不单独拿来报:没有一张北京的票,就不算出差
650
610
 
651
611
  ---
652
612
 
653
- ## 示例14.1:出差带上出发地(上海)的打车票(「报销上周去北京的费用」)
613
+ ## 示例14:没有出差流程时,带上出发地(上海)的打车票(「报销上周去北京的费用」)
654
614
 
655
- 今天 2026-10-21,用户说"帮我报销上周去北京的费用",没说从哪出发 → 出发城市默认**上海**。
615
+ 今天 2026-10-21,用户说"帮我报销上周去北京的费用",没找到去北京的出差流程,没说从哪出发 → 出发城市默认**上海**。
656
616
 
657
617
  1. 出差时间 = 上周 2026-10-12 ~ 10-18 → 消费日期查 **2026-10-11 ~ 今天**
658
618
  2. 目的城市的票:火车票 上海虹桥 → 北京南(乘车 10-13)、火车票 北京南 → 上海虹桥(乘车 10-16)、北京的酒店(入住 10-13)
659
- 3. 出发城市的打车票(消费日期 `info.modify_info.cstm` 落在 10-11 ~ 10-19 内):
619
+ 3. 出发城市的打车票(消费日期 `modify_info.cstm` 落在 10-11 ~ 10-19 内):
660
620
  - 滴滴 10-13,行程单 家 → 虹桥火车站 ✅
661
621
  - 上海强生出租 10-16,虹桥火车站 → 家 ✅
662
622
  - 滴滴 10-20,上海市内 ❌(回来以后打的车,不在出差时间内)
@@ -700,6 +660,79 @@ AI 操作:
700
660
 
701
661
  ---
702
662
 
663
+ ## 示例17:对上多条事前申请,问清用户再往下走
664
+
665
+ 用户说「帮我报销」,确认了 2 张发票:36901189(开票 2026-07-30)、36901190(开票 2026-08-02)。`invoice.reim.requests.list` 查到 2 条事前申请,两张发票在时间上都落在这 2 条里:
666
+
667
+ - 交通费报销-后端开发111-2026-07-01(发起 07-01,`flowStatus=6`)
668
+ - 上海出差申请-后端开发111-2026-07-20(发起 07-20,`flowStatus=6`)
669
+
670
+ 确认不了用哪条 → 停在 Step 2,不调 `invoice.reim.workflow.resolve`,两张发票一次问:
671
+
672
+ > 下面的发票对上了多条事前申请,我确认不了该用哪条,请告诉我每张发票用哪一条(回复序号即可,例如「都用 2」或「36901189 用 1,36901190 用 2」):
673
+ >
674
+ > | # | 事前申请 | 发起日期 | 状态 | 能对上的发票 |
675
+ > | --- | --- | --- | --- | --- |
676
+ > | 1 | 交通费报销-后端开发111-2026-07-01 | 2026-07-01 | 已完成 | 36901189(07-30)、36901190(08-02) |
677
+ > | 2 | 上海出差申请-后端开发111-2026-07-20 | 2026-07-20 | 已完成 | 36901189(07-30)、36901190(08-02) |
678
+ >
679
+ > 都不是的话,回复「都不是」,或告诉我正确的事前申请名称。
680
+
681
+ | 用户回答 | 怎么做 |
682
+ | --- | --- |
683
+ | 「都用 2」 | 两张都绑「上海出差申请」。回复开头说「已按你的选择:36901189、36901190 → 上海出差申请-后端开发111-2026-07-20」,接着 Step 2.5,不再问「确认吗」 |
684
+ | 「最新那个吧」 | 可以理解成第 2 条(发起日最晚),但要回显后再走:「按发起日期最新的是第 2 条:上海出差申请-后端开发111-2026-07-20,两张发票都用它,对吗?」 |
685
+ | 「你看着办」 | 不替用户选:「绑错事前申请会影响报销走哪个流程和谁来审批,请回复 1 或 2。」 |
686
+ | 「36901189 用 1」 | 36901189 绑第 1 条;36901190 还没定,只就这张再问一次,不默认成同一条 |
687
+ | 「都不是」 | 不是差旅 / 外出 → 两张都不绑定,继续填单;是差旅 / 外出 → 请用户给出正确的事前申请名称,拒绝就结束 |
688
+
689
+ ---
690
+
691
+ ## 示例18:按出差流程查票,前后各一天的发票全报(「报销 10 月 26 号去武汉出差的费用」)
692
+
693
+ 今天 2026-10-30,用户说「报销 10 月 26 号去武汉出差的费用」。
694
+
695
+ 1. 用户说了出差日期,`invoice.reim.requests.list` 传 `{"requestname":"出差","cusCreateDateStart":"2026-10-26"}`(结束日不传,CLI 用今天),2 条:
696
+ - 出差/外出流程-龚为明-2026-10-26(测试)(`1331357089254367304`,发起 10-28)
697
+ - 出差/外出流程-龚为明-2026-10-27(测试单)(`1330981790850924555`,发起 10-27)
698
+ 2. 两条并行 `workflow.summary`。第 1 条(2026-10-30 真机):起始日期 `2026-10-26 00:00`、结束日期 `2026-10-26 23:56`、出差城市 `中国/湖北/武汉`。只有它是 10-26 去武汉 → 直接用,不问。
699
+ 3. 查票范围 = 10-26 前 1 天 ~ 10-26 后 1 天:
700
+
701
+ Windows PowerShell:
702
+
703
+ ```powershell
704
+ weaver-work-cli --json invoice run invoice.reim.candidates.list --input-json '{"consumption_tm_begin":"2026-10-25","consumption_tm_end":"2026-10-27"}'
705
+ ```
706
+
707
+ macOS/Linux(bash/zsh):
708
+
709
+ ```bash
710
+ weaver-work-cli --json invoice run invoice.reim.candidates.list --input-json '{"consumption_tm_begin":"2026-10-25","consumption_tm_end":"2026-10-27"}'
711
+ ```
712
+
713
+ 4. `available` 里 7 张,**全部列入**(机票、保险、上海的打车、武汉的门票都算,不按城市再筛)。Step 1C:
714
+
715
+ > 按出差流程「出差/外出流程-龚为明-2026-10-26(测试)」(2026-10-26 ~ 2026-10-26,武汉)前后各放宽 1 天,查了消费日期 2026-10-25 ~ 2026-10-27 的发票,共 7 张可报,合计 ¥1,925.23:
716
+ >
717
+ > | # | 发票类型 | 开票日期 | 发票号码 | 金额 | 销方名称 | 费用类型 |
718
+ > |---|----------|----------|----------|------|----------|----------|
719
+ > | 1 | 电子发票(普通发票) | 2026-10-27 | … | ¥920.00 | 上海华程西南国际旅行社有限公司 | 机票 |
720
+ > | 2 | 电子发票(普通发票) | 2026-10-27 | … | ¥730.00 | 上海华程西南国际旅行社有限公司 | 机票 |
721
+ > | … | | | | | | |
722
+ > | 7 | 电子发票(普通发票) | 2026-10-27 | … | ¥24.85 | 强生致行互联网科技(上海)有限公司 | 市内交通 |
723
+ >
724
+ > 请确认是否使用以上发票进行报销?
725
+
726
+ 5. 用户确认后跳过 Step 1B、Step 2:出差流程 10-28 才发起,晚于开票日 10-27,也照样绑定。每行明细「相关流程」= `出差/外出流程-龚为明-2026-10-26(测试)(1331357089254367304)`;`invoice.reim.workflow.resolve` 传 `{"requestIds":["1331357089254367304"]}`,之后按 Step 3 ~ 5 建草稿。
727
+
728
+ | 情况 | 怎么做 |
729
+ | --- | --- |
730
+ | 用户只说「报销我的出差」,候选 3 条 | 一次列出 3 条(序号、标题、起止日期、出差城市、状态)请用户选,选定前不查票 |
731
+ | 这段时间的票都在 `assigned` | 回复「2026-10-25 ~ 2026-10-27 没有可报的发票,7 张都已挂在其他报销单上」,停下,不放宽时间 |
732
+ | `workflow.summary` 没有起始 / 结束日期 | 告诉用户这条出差流程读不到起止日期,请用户直接给出差日期 |
733
+
734
+ ---
735
+
703
736
  ## 关键检查清单
704
737
 
705
738
  调用 `workflow.createRequest` 前确认:
@@ -711,22 +744,21 @@ AI 操作:
711
744
  5. [ ] 带 `initialValue` 且不需改写的字段没有重复传;**明细每行只有「相关发票」和(可选的)「相关流程」两个键**,币种、金额、日期等都没有传
712
745
  6. [ ] 浏览按钮写 `名称(ID)`,没有裸 ID;Select 写选项名,不是 optionValue
713
746
  7. [ ] 每行「相关发票」是 `invoice.browse-field.data` 返回的 1 个发票对象;`browse-field.data` 只传了发票,没有传凭证
714
- 8. [ ] 明细「费用说明」「费用明细」「相关凭证」都没有写入 `data`,留给「相关发票」联动带出
715
- 9. [ ] 相关凭证(17/18/57/58)没有单独成行;行程单有多段行程也是一张发票一行。没有用 `fysm`、起止点或账单说明生成费用说明
716
- 10. [ ] 明细「费用类型(科目)」没有写入 `data`,留给「相关发票」联动带出;没有用 `row-info` 的 `subjectId` 或兜底科目自己填
717
- 11. [ ] 文本字段没有 `*` 号
718
- 12. [ ] **相关客户、相关项目已在同一次提问里确认**(客户有消歧后的 `名称(ID)` 或非出差默认「泛微上海」;项目有名称或用户已说「不填」)。没确认不允许调用 `workflow.createRequest`。没有向用户要合同号
719
- 13. [ ] 合同号按已确认项目从历史带出;对不上或项目「不填」用 `20260999`。不是 `20260999` 时承担主体不传,客户 / 项目仍写入 `data`
720
- 14. [ ] 总部费用报销没有把合同号列进提问。用户自己说了合同号才用用户的
721
- 15. [ ] 话费报销:明细没有写金额;主表金额(可写时)是核算后的实报金额合计;建单后已对比联动金额与实报金额并告诉用户
722
- 16. [ ] `action` 是 `"draft"`,没有问用户「存草稿 / 提交审批」,也没有传 `"submit"`
747
+ 8. [ ] 相关凭证(17/18/57/58)没有单独成行;行程单有多段行程也是一张发票一行
748
+ 9. [ ] 文本字段没有 `*` 号
749
+ 10. [ ] **相关客户、相关项目已在同一次提问里确认**(客户有消歧后的 `名称(ID)` 或非出差默认「泛微上海」;项目有名称或用户已说「不填」)。没确认不允许调用 `workflow.createRequest`。没有向用户要合同号
750
+ 11. [ ] 合同号按已确认项目从历史带出;对不上或项目「不填」用 `20260999`。不是 `20260999` 时承担主体不传,客户 / 项目仍写入 `data`
751
+ 12. [ ] 总部费用报销没有把合同号列进提问。用户自己说了合同号才用用户的
752
+ 13. [ ] 话费报销:明细没有写金额;主表金额(可写时)是核算后的实报金额合计;建单后已对比联动金额与实报金额并告诉用户
753
+ 14. [ ] `action` 是 `"draft"`,没有问用户「存草稿 / 提交审批」,也没有传 `"submit"`
754
+ 15. [ ] 每行「相关流程」要么是时间上唯一对上的那条,要么是用户明确选定(或确认了推断)的那条;对上多条时没有按费用类型、金额、标题或「谁更近」自己挑。按出差流程查的票,每行「相关流程」都是那条出差流程
723
755
 
724
756
  草稿落库后确认:
725
757
 
726
- 17. [ ] 明细「费用类型(科目)」「费用说明」「费用明细」「相关凭证」仍空时已告诉用户是发票联动没带出,没有补写,也没有向用户要行程单,也没有向用户要起点和终点。客户 / 项目被冲空则写回。没有另建报销单,也没有补问合同号
758
+ 16. [ ] 明细「费用类型(科目)」「费用说明」「费用明细」「相关凭证」仍空时已告诉用户是发票联动没带出,没有补写,也没有向用户要行程单。客户 / 项目被冲空则写回。没有另建报销单,也没有补问合同号
727
759
 
728
760
  修改报销单前确认:
729
761
 
730
- 18. [ ] `requestId` 来自 `workflow.createRequest` 的返回结果
731
- 19. [ ] 走 `workflow.editLoad` → `workflow.editPrepare` → 用户确认 → `workflow.editApply`,只传要改的字段。Step 5.3 里用户刚给的值不再二次确认
732
- 20. [ ] 只改 `editableFields` 里的字段,遇 `notEditable` 如实转述,不换字段 id 绕过。明细「费用说明」「费用明细」「相关凭证」不在修改范围内
762
+ 17. [ ] `requestId` 来自 `workflow.createRequest` 的返回结果
763
+ 18. [ ] 走 `workflow.editLoad` → `workflow.editPrepare` → 用户确认 → `workflow.editApply`,只传要改的字段。Step 5.3 里用户刚给的值不再二次确认
764
+ 19. [ ] 只改 `editableFields` 里的字段,遇 `notEditable` 如实转述,不换字段 id 绕过。明细只改「相关发票」「相关流程」(用户明确要求时才改科目)
@@ -6,27 +6,24 @@
6
6
 
7
7
  ---
8
8
 
9
- ## 匹配决策树(完整流程图)
9
+ ## 匹配决策树
10
10
 
11
11
  ```
12
- invoice.reim.row-info 返回 subjectId?
13
- ├── 有值 → 直接使用,结束
14
- └── 空/null → 进入查找表匹配 ↓
15
- 优先级1: expenseType 匹配?
16
- ├── 命中 → 使用对应 ID,结束
17
- └── 未命中 → ↓
18
- 优先级2: sellerName 关键词匹配?
19
- ├── 命中 → 使用对应 ID,结束
20
- └── 未命中 → ↓
21
- 优先级3: consumeContent 关键词匹配?
22
- ├── 命中 → 使用对应 ID,结束
23
- └── 未命中 → ↓
24
- 优先级4: requestname 辅助匹配?
25
- ├── 命中 → 使用对应 ID,结束
26
- └── 未命中 → ↓
27
- 兜底条件匹配(押金/电子设备/家具/研发/销售)?
28
- ├── 命中 → 使用对应 ID,结束
29
- └── 全不命中 → 填 "100502270000000104",结束
12
+ 优先级1: expenseType 匹配?
13
+ ├── 命中 → 使用对应 ID,结束
14
+ └── 未命中 → ↓
15
+ 优先级2: sellerName 关键词匹配?
16
+ ├── 命中 → 使用对应 ID,结束
17
+ └── 未命中 → ↓
18
+ 优先级3: consumeContent 关键词匹配?
19
+ ├── 命中 → 使用对应 ID,结束
20
+ └── 未命中 → ↓
21
+ 优先级4: requestname 辅助匹配?
22
+ ├── 命中 → 使用对应 ID,结束
23
+ └── 未命中 → ↓
24
+ 兜底条件匹配(押金/电子设备/家具/研发/销售)?
25
+ ├── 命中 → 使用对应 ID,结束
26
+ └── 全不命中 → 填 "100502270000000104",结束
30
27
  ```
31
28
 
32
29
  ---
@@ -111,4 +108,4 @@ invoice.reim.row-info 返回 subjectId?
111
108
  {"<费用类型(科目)字段id>": "市内交通费(100502270000000006)"}
112
109
  ```
113
110
 
114
- > 科目名称取 `row-info` 的 `subjectName` 或本文件查找表里的「科目名称」,ID 原样复制,严禁修改。每行明细的科目独立匹配。
111
+ > 科目名称取本文件查找表里的「科目名称」,ID 原样复制,严禁修改。每行明细的科目独立匹配。
@@ -26,7 +26,7 @@
26
26
  - **键只能取 `workflow.createForm` 返回的 `fields[].id`**:按 `fields[].name` 定位业务字段,取它的 `id`;明细字段的 `subFormId` 就是 `details` 的键。
27
27
  - **`fields` 里没有的字段一律不传**:`fields` 只下发可写字段。实报金额、人民币金额、附件数、报销人上级、承担人直接上级、承担人所有上级、人员ID、提单人员、报销总金额等由表单自身计算或联动带出,不在可写清单里,传了整单会被拒(`notEditable`)。
28
28
  - **带 `initialValue` 的字段默认不传**:CLI 会自动并入表单默认值;只有本文档规则要求的值与默认值不同,或用户本次明确改写时才传。明细只写「相关发票」「相关流程」(见「费用明细字段规则」)。
29
- - `details` 每个数组元素是一行明细,**顺序 = 明细行顺序**,一张发票一行(行程单有多段行程也不拆,见「4. 行程单多段行程:暂不拆行」)。
29
+ - `details` 每个数组元素是一行明细,**顺序 = 明细行顺序**,一张发票一行(行程单有多段行程也不拆,见「4. 行程单多段行程不拆行」)。
30
30
  - **流程标题必传**:用 `createRequest` 的 `requestName` 参数传(见下方「流程标题」),按公式生成,**禁止留用表单默认标题**——不传会静默使用默认标题且无任何提示。
31
31
 
32
32
  ---
@@ -109,13 +109,9 @@
109
109
 
110
110
  ## 明细行前置处理
111
111
 
112
- ### 1. 过滤红冲发票
112
+ ### 1. 发票与相关凭证分类
113
113
 
114
- 获取到发票列表后,**必须先过滤掉全额红冲发票**(`info.comm_info.pro.status == 8`),这类发票不允许报销。
115
-
116
- ### 2. 发票与相关凭证分类
117
-
118
- 过滤后的发票列表,**按 `invoiceTypeCode`(即 `info.comm_info.pro.type`)分类**,再组装明细行。
114
+ 发票列表**按 `invoiceTypeCode`(即 `info.comm_info.pro.type`)分类**,再组装明细行。
119
115
 
120
116
  > 完整的发票类型 ID 与名称映射见 [reim-api-reference.md - 发票类型 ID 映射表](reim-api-reference.md#发票类型-id-映射表)
121
117
 
@@ -126,17 +122,17 @@
126
122
 
127
123
  > **注意区分**:type=18 是滴滴的支付行程凭证(不能独立成行);滴滴开具的增值税电子普通发票 type=3,是正式发票,可独立成行。
128
124
 
129
- ### 3. 相关凭证不赋值(由联动带出)
125
+ ### 2. 相关凭证不赋值(由联动带出)
130
126
 
131
127
  明细「相关凭证」**不允许 AI 赋值**,创建和修改都不写入 `data`。挂上「相关发票」后由发票联动带出。
132
128
 
133
- - 不做凭证与发票配对;`row-info` 返回的 `itinerary` 也不用来写「相关凭证」
129
+ - 不做凭证与发票配对
134
130
  - 凭证的 `fid` 不传给 `invoice.browse-field.data`
135
131
  - 用户指定了要挂哪张凭证也不写入;落库后仍空只告知「发票联动没有带出相关凭证」,不补写
136
132
 
137
- ### 4. 行程单多段行程:暂不拆行
133
+ ### 3. 行程单多段行程不拆行
138
134
 
139
- `row-info` 返回的 `itineraryData`(行程单逐段明细)**目前不用来拆行**:不管行程单有几段,仍然**一张发票一行**,该行只写「相关发票」(及「相关流程」),日期、金额、科目都不传,由发票联动带出。`fysm` 和 `itineraryData` 都不要写进「费用说明」。
135
+ 一张滴滴发票挂的行程单有几段,都仍然**一张发票一行**,该行只写「相关发票」(及「相关流程」),日期、金额、科目都由发票联动带出。
140
136
 
141
137
  ### 4. 取发票对象
142
138
 
@@ -200,6 +196,8 @@ CLI operation:`invoice.reim.field.search`
200
196
  | `workflowId` | 本次报销工作流 ID(总部费用报销是 `100003460000000060`) |
201
197
  | `nodeId` | 可省略;CLI 默认总部费用报销发起节点 `100004140000000271` |
202
198
 
199
+ > **⚠️ 注意是 `keywords`(带 s),不是 `keyword`。** 入参只接受上表 4 个键,写成 `keyword`、`keyWord` 或多传其他键都会被 CLI 当成参数错误拒绝。`fieldId`、`workflowId` 传带引号的纯数字字符串。
200
+
203
201
  macOS/Linux(bash/zsh):
204
202
 
205
203
  ```bash
@@ -256,7 +254,7 @@ weaver-work-cli --json invoice run invoice.reim.field.search --input-json '{"key
256
254
  ## 费用明细字段规则
257
255
 
258
256
  > **定位明细表**:用 `fields` 里带「相关发票」(`EinvoiceComponent`)字段的那个 `subFormId`,只填这一张明细表;其他明细表(外包订单等)不填。
259
- > **⚠️ 明细每行只写「相关发票」**(有绑定的事前申请时再写「相关流程」)。**其他明细列一律不传**,由「相关发票」联动带出:费用日期、金额(申请金额 / 实报金额等)、币种、费用类型(科目)、费用说明、费用明细、相关凭证、明细的相关客户 / 项目、附件数。表单默认值、`row-info` 返回值、用户口述都不写进这些列。落库后仍空只告知「发票联动没有带出」,不要补写。
257
+ > **⚠️ 明细每行只写「相关发票」**(有绑定的事前申请时再写「相关流程」)。**其他明细列一律不传**,由「相关发票」联动带出:费用日期、金额(申请金额 / 实报金额等)、币种、费用类型(科目)、费用说明、费用明细、相关凭证、明细的相关客户 / 项目、附件数。表单默认值、用户口述都不写进这些列。落库后仍空只告知「发票联动没有带出」,不要补写。
260
258
 
261
259
  | fieldName 关键词 | 怎么填 |
262
260
  |------------------|--------|
@@ -282,7 +280,7 @@ weaver-work-cli --json invoice run invoice.reim.field.search --input-json '{"key
282
280
 
283
281
  1. 该行发票已绑定的事前申请
284
282
  2. 本次只命中一条差旅 / 外出事前申请 → 未绑定的行也用这一条
285
- 3. 有多条且该行未绑定 → 暂停,让用户指定这一行用哪一条
283
+ 3. 有多条且该行未绑定 → 暂停,按 [reim-matching-rules.md](reim-matching-rules.md#多条事前申请无法确认时必须问用户) 问清楚这一行用哪一条,不自己挑
286
284
  4. 一条都没有 → 暂停。已有事前申请列表就列给用户选;还没有就先 `invoice.reim.requests.list`。选定后再按 `名称(requestid)` 写入
287
285
 
288
286
  主表「事前申请流程 / 相关流程」不赋值,保留空值。用户拒绝、取消或不选 → **结束报销,禁止 `workflow.createRequest`**。明细「相关流程」不要留空,也不要填发票号、合同号或其他字段顶替。
@@ -303,13 +301,12 @@ weaver-work-cli --json invoice run invoice.reim.field.search --input-json '{"key
303
301
 
304
302
  **操作步骤:**
305
303
 
306
- 0. 合同号不是 `20260999` 也不能改成「先建草稿等联动」。出差相关客户必须在 `createRequest` 前问到(或 Step 4.4 已确认采用历史客户),写入 `data` 再建单
307
- 0.1. 用户确认采用了历史相关客户 → 将该历史原值填进「相关客户」,本节拦截解除
308
- 1. 识别为出差后,**在调用 `workflow.createRequest` 之前必须暂停**(相关客户、相关项目都按上一节确认)
309
- 2. 一次提醒用户:「当前为出差报销。请一起填写相关客户和相关项目。客户必须是具体名称,否则无法继续;项目没有可以说不填。合同号不用填。」
310
- 3. 用户给出客户名称 → **先**按「相关客户模糊搜索」调用 `invoice.reim.field.search`:一条直接填 `名称(ID)`,多条列给用户选,零条请用户换名称。**不要**把未消歧简称直接丢给 `createRequest`
311
- 4. 用户拒绝、取消、或不提供具体客户 → **结束报销流程,禁止调用 `workflow.createRequest`**
312
- 5. **禁止**用固定值「泛微上海」顶替出差的相关客户
304
+ 1. 识别为出差后,**在调用 `workflow.createRequest` 之前必须暂停**(相关客户、相关项目都按上一节确认)。合同号不是 `20260999` 也不能改成「先建草稿等联动」
305
+ 2. 用户确认采用了历史相关客户(Step 4.4)→ 将该历史原值填进「相关客户」,本节拦截解除
306
+ 3. 否则一次提醒用户:「当前为出差报销。请一起填写相关客户和相关项目。客户必须是具体名称,否则无法继续;项目没有可以说不填。合同号不用填。」
307
+ 4. 用户给出客户名称 → **先**按「相关客户模糊搜索」调用 `invoice.reim.field.search`:一条直接填 `名称(ID)`,多条列给用户选,零条请用户换名称。**不要**把未消歧简称直接丢给 `createRequest`
308
+ 5. 用户拒绝、取消、或不提供具体客户 → **结束报销流程,禁止调用 `workflow.createRequest`**
309
+ 6. **禁止**用固定值「泛微上海」顶替出差的相关客户
313
310
 
314
311
  ---
315
312
 
@@ -331,9 +328,8 @@ weaver-work-cli --json invoice run invoice.reim.field.search --input-json '{"key
331
328
 
332
329
  > **⚠️ 创建多个报销单时,每个报销单都必须独立执行以下完整流程(各自一次 `createForm` → 一次 `createRequest`),不能省略任何步骤或字段。**
333
330
 
334
- 0. **过滤红冲发票**:过滤 `info.comm_info.pro.status == 8`
335
331
  1. **分类**:按 `invoiceTypeCode` 分为发票和相关凭证(17/18/57/58)。只有发票成行;凭证不成行、不配对、不写入「相关凭证」
336
- 2. **禁止 `*` 号**:要写入的文本值(报销事由等)先去掉 `*`。费用说明不在写入范围内
332
+ 2. **禁止 `*` 号**:要写入的文本值(流程标题、报销事由)先去掉 `*`
337
333
  3. **历史参考**:总部费用报销按「总部费用报销历史参考」用已确认项目带出合同号,**不问合同号**
338
334
  4. **相关客户 / 相关项目**:同一次提问让用户一起填写。没确认 → **停止,禁止 `createRequest`**
339
335
  4.1. **差旅 / 外出相关流程**:按「差旅 / 外出明细相关流程」给每一行赋值。任一行没有事前申请 → **停止,禁止 `createRequest`**
@@ -342,28 +338,13 @@ weaver-work-cli --json invoice run invoice.reim.field.search --input-json '{"key
342
338
  7. **明细**:每张发票一行,**只写「相关发票」**;有绑定的事前申请时再写「相关流程」(差旅 / 外出每行必须有)。其余明细列都不传,交给发票联动
343
339
  8. **最终检查**:明细每行的键只有「相关发票」和(可选的)「相关流程」;差旅 / 外出每一行「相关流程」都是 `{requestname}({requestid})`;`data.main` 里没有「事前申请流程」;相关客户已有确认值;相关项目已在同一次提问里问过;没有向用户要合同号
344
340
  9. 交给 [reim-workflow.md](reim-workflow.md) Step 5 直接调用 `workflow.createRequest` 存草稿
345
- 10. **落库后再查**:客户 / 项目是否被联动冲空。明细其余列(日期、金额、币种、科目、费用说明、费用明细、相关凭证等)仍空只告知联动没带出,不要补写。不能只贴草稿链接就结束
341
+ 10. **落库后再查**:按 [reim-workflow.md](reim-workflow.md) Step 5.3 检查客户 / 项目是否被联动冲空,不能只贴草稿链接就结束
346
342
 
347
343
  ---
348
344
 
349
345
  ## 填写结果检查
350
346
 
351
- > 发生在 `workflow.createRequest` 已经建成草稿之后。编排见 [reim-workflow.md](reim-workflow.md) Step 5.3。
352
- > **相关客户、相关项目本应在建单前问清。** 这里只处理联动把已确认的客户 / 项目冲空。明细除「相关发票」「相关流程」外的列仍空时只告诉用户「发票联动没有带出」,禁止补写。
353
-
354
- 草稿落库后按下表检查。先看本次返回的 `previewDetails`、`fields`、`linkageResult`、`missingFields`;看不出时用 `requestId` 调一次 `workflow.editLoad` 的 `currentValues`。不要另建报销单,不要 `workflow.detail`。
355
-
356
- | 检查项 | 没填上 | 告诉用户的原因 | 请用户给什么 |
357
- | --- | --- | --- | --- |
358
- | **相关客户** | **任何报销单**:主表「相关客户」为空(明细的相关客户不检查、不写)。非出差且已是「泛微上海」不算 | 合同联动把建单前已确认的客户冲空了 | 本轮已经消歧过的 `名称(ID)` **直接写回,不要再问**。只有建单前漏问了才问客户名称(不接受「不填」) |
359
- | 相关项目 | 主表「相关项目」为空,且用户没有说过「不填」(明细的相关项目不检查、不写) | 合同联动把建单前已确认的项目冲空了 | 已确认的项目名称直接写回。只有建单前漏问了才问「相关项目填什么」,可以说「不填」 |
360
- | 明细「费用说明」 | 表单有这一列,落库后仍空 | 发票联动没有带出 | **不请用户填,也不补写,不要自己生成** |
361
- | 明细「费用明细」 | 表单有这一列,落库后仍空 | 发票联动没有带出 | **不请用户填,也不补写** |
362
- | 明细「相关凭证」 | 表单有这一列,落库后仍空 | 发票联动没有带出 | **不请用户挂,也不补写**;不要为了它向用户要行程单或起点终点 |
363
- | 明细「费用类型(科目)」 | 落库后仍空 | 发票联动没有带出 | **不请用户选,也不补写**;不要按科目规则或兜底科目自己填 |
364
- | 明细其他列(费用日期、金额、币种等) | 落库后仍空 | 发票联动没有带出 | **不请用户填,也不补写** |
365
-
366
- 非出差且相关客户已是「泛微上海」不报客户缺失。表里都合格则不额外说明。缺项在 `finalMarkdown` 后一次列完,**不能只贴草稿就结束**。已确认的客户 / 项目走 `workflow.editPrepare` → `workflow.editApply`,不再二次确认保存。相关项目用户说不填 → 保持现状,不再追问。**相关客户说「不填」无效。** 明细除「相关发票」「相关流程」外的列,建单时即使用户给了内容也不写入。`editPrepare` / `editApply` 失败时如实转述错误,相关客户仍算没填上,不能把失败当成检查完成。
347
+ 草稿落库后的检查(客户 / 项目被联动冲空时写回,明细其余列仍空只告知)统一按 [reim-workflow.md](reim-workflow.md) Step 5.3 执行。
367
348
 
368
349
  ---
369
350