@sinoia/hubdoc-tools 1.0.4 → 1.2.1

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 (341) hide show
  1. package/README.md +115 -34
  2. package/dist/__tests__/fixtures/plugins/connection-plugin/index.d.ts +15 -0
  3. package/dist/__tests__/fixtures/plugins/connection-plugin/index.d.ts.map +1 -0
  4. package/dist/__tests__/fixtures/plugins/connection-plugin/index.js +37 -0
  5. package/dist/__tests__/fixtures/plugins/connection-plugin/index.js.map +1 -0
  6. package/dist/__tests__/fixtures/plugins/scan-plugin/index.d.ts +15 -0
  7. package/dist/__tests__/fixtures/plugins/scan-plugin/index.d.ts.map +1 -0
  8. package/dist/__tests__/fixtures/plugins/scan-plugin/index.js +54 -0
  9. package/dist/__tests__/fixtures/plugins/scan-plugin/index.js.map +1 -0
  10. package/dist/__tests__/fixtures/plugins/test-plugin/index.d.ts +15 -0
  11. package/dist/__tests__/fixtures/plugins/test-plugin/index.d.ts.map +1 -0
  12. package/dist/__tests__/fixtures/plugins/test-plugin/index.js +34 -0
  13. package/dist/__tests__/fixtures/plugins/test-plugin/index.js.map +1 -0
  14. package/dist/__tests__/fixtures/plugins/workflow-plugin/index.d.ts +16 -0
  15. package/dist/__tests__/fixtures/plugins/workflow-plugin/index.d.ts.map +1 -0
  16. package/dist/__tests__/fixtures/plugins/workflow-plugin/index.js +145 -0
  17. package/dist/__tests__/fixtures/plugins/workflow-plugin/index.js.map +1 -0
  18. package/dist/api/api/authentication-api.d.ts +208 -0
  19. package/dist/api/api/authentication-api.d.ts.map +1 -0
  20. package/dist/api/api/authentication-api.js +385 -0
  21. package/dist/api/api/authentication-api.js.map +1 -0
  22. package/dist/api/api/bulk-uploads-api.d.ts +101 -0
  23. package/dist/api/api/bulk-uploads-api.d.ts.map +1 -0
  24. package/dist/api/api/bulk-uploads-api.js +195 -0
  25. package/dist/api/api/bulk-uploads-api.js.map +1 -0
  26. package/dist/api/api/contacts-api.d.ts +246 -0
  27. package/dist/api/api/contacts-api.d.ts.map +1 -0
  28. package/dist/api/api/contacts-api.js +465 -0
  29. package/dist/api/api/contacts-api.js.map +1 -0
  30. package/dist/api/api/documents-api.d.ts +267 -0
  31. package/dist/api/api/documents-api.d.ts.map +1 -0
  32. package/dist/api/api/documents-api.js +506 -0
  33. package/dist/api/api/documents-api.js.map +1 -0
  34. package/dist/api/api/folders-api.d.ts +255 -0
  35. package/dist/api/api/folders-api.d.ts.map +1 -0
  36. package/dist/api/api/folders-api.js +479 -0
  37. package/dist/api/api/folders-api.js.map +1 -0
  38. package/dist/api/api/groups-api.d.ts +246 -0
  39. package/dist/api/api/groups-api.d.ts.map +1 -0
  40. package/dist/api/api/groups-api.js +465 -0
  41. package/dist/api/api/groups-api.js.map +1 -0
  42. package/dist/api/api/permissions-api.d.ts +246 -0
  43. package/dist/api/api/permissions-api.d.ts.map +1 -0
  44. package/dist/api/api/permissions-api.js +465 -0
  45. package/dist/api/api/permissions-api.js.map +1 -0
  46. package/dist/api/api/workspaces-api.d.ts +213 -0
  47. package/dist/api/api/workspaces-api.d.ts.map +1 -0
  48. package/dist/api/api/workspaces-api.js +424 -0
  49. package/dist/api/api/workspaces-api.js.map +1 -0
  50. package/dist/api/api.d.ts +20 -0
  51. package/dist/api/api.d.ts.map +1 -0
  52. package/dist/api/api.js +38 -0
  53. package/dist/api/api.js.map +1 -0
  54. package/dist/api/base.d.ts +43 -0
  55. package/dist/api/base.d.ts.map +1 -0
  56. package/dist/api/base.js +49 -0
  57. package/dist/api/base.js.map +1 -0
  58. package/dist/api/common.d.ts +29 -0
  59. package/dist/api/common.d.ts.map +1 -0
  60. package/dist/api/common.js +109 -0
  61. package/dist/api/common.js.map +1 -0
  62. package/dist/api/configuration.d.ts +99 -0
  63. package/dist/api/configuration.d.ts.map +1 -0
  64. package/dist/api/configuration.js +49 -0
  65. package/dist/api/configuration.js.map +1 -0
  66. package/dist/api/index.d.ts +15 -0
  67. package/dist/api/index.d.ts.map +1 -0
  68. package/dist/api/index.js +33 -0
  69. package/dist/api/index.js.map +1 -0
  70. package/dist/api/models/api-v1-documents-documents-post-request1.d.ts +34 -0
  71. package/dist/api/models/api-v1-documents-documents-post-request1.d.ts.map +1 -0
  72. package/dist/api/models/api-v1-documents-documents-post-request1.js +16 -0
  73. package/dist/api/models/api-v1-documents-documents-post-request1.js.map +1 -0
  74. package/dist/api/models/api-v1-documents-documents-post201-response.d.ts +17 -0
  75. package/dist/api/models/api-v1-documents-documents-post201-response.d.ts.map +1 -0
  76. package/dist/api/models/api-v1-documents-documents-post201-response.js +16 -0
  77. package/dist/api/models/api-v1-documents-documents-post201-response.js.map +1 -0
  78. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of.d.ts +17 -0
  79. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of.d.ts.map +1 -0
  80. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of.js +16 -0
  81. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of.js.map +1 -0
  82. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of1.d.ts +17 -0
  83. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of1.d.ts.map +1 -0
  84. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of1.js +16 -0
  85. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of1.js.map +1 -0
  86. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner.d.ts +18 -0
  87. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner.d.ts.map +1 -0
  88. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner.js +16 -0
  89. package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner.js.map +1 -0
  90. package/dist/api/models/api-v1-documents-folders-id-get200-response.d.ts +17 -0
  91. package/dist/api/models/api-v1-documents-folders-id-get200-response.d.ts.map +1 -0
  92. package/dist/api/models/api-v1-documents-folders-id-get200-response.js +16 -0
  93. package/dist/api/models/api-v1-documents-folders-id-get200-response.js.map +1 -0
  94. package/dist/api/models/bulk-upload-mutation.d.ts +34 -0
  95. package/dist/api/models/bulk-upload-mutation.d.ts.map +1 -0
  96. package/dist/api/models/bulk-upload-mutation.js +16 -0
  97. package/dist/api/models/bulk-upload-mutation.js.map +1 -0
  98. package/dist/api/models/bulk-upload.d.ts +91 -0
  99. package/dist/api/models/bulk-upload.d.ts.map +1 -0
  100. package/dist/api/models/bulk-upload.js +23 -0
  101. package/dist/api/models/bulk-upload.js.map +1 -0
  102. package/dist/api/models/contact-mutation.d.ts +30 -0
  103. package/dist/api/models/contact-mutation.d.ts.map +1 -0
  104. package/dist/api/models/contact-mutation.js +16 -0
  105. package/dist/api/models/contact-mutation.js.map +1 -0
  106. package/dist/api/models/contact.d.ts +54 -0
  107. package/dist/api/models/contact.d.ts.map +1 -0
  108. package/dist/api/models/contact.js +16 -0
  109. package/dist/api/models/contact.js.map +1 -0
  110. package/dist/api/models/document-document-type.d.ts +19 -0
  111. package/dist/api/models/document-document-type.d.ts.map +1 -0
  112. package/dist/api/models/document-document-type.js +16 -0
  113. package/dist/api/models/document-document-type.js.map +1 -0
  114. package/dist/api/models/document-domain.d.ts +19 -0
  115. package/dist/api/models/document-domain.d.ts.map +1 -0
  116. package/dist/api/models/document-domain.js +16 -0
  117. package/dist/api/models/document-domain.js.map +1 -0
  118. package/dist/api/models/document-folder.d.ts +19 -0
  119. package/dist/api/models/document-folder.d.ts.map +1 -0
  120. package/dist/api/models/document-folder.js +16 -0
  121. package/dist/api/models/document-folder.js.map +1 -0
  122. package/dist/api/models/document-mutation.d.ts +50 -0
  123. package/dist/api/models/document-mutation.d.ts.map +1 -0
  124. package/dist/api/models/document-mutation.js +16 -0
  125. package/dist/api/models/document-mutation.js.map +1 -0
  126. package/dist/api/models/document.d.ts +73 -0
  127. package/dist/api/models/document.d.ts.map +1 -0
  128. package/dist/api/models/document.js +16 -0
  129. package/dist/api/models/document.js.map +1 -0
  130. package/dist/api/models/folder-mutation.d.ts +38 -0
  131. package/dist/api/models/folder-mutation.d.ts.map +1 -0
  132. package/dist/api/models/folder-mutation.js +16 -0
  133. package/dist/api/models/folder-mutation.js.map +1 -0
  134. package/dist/api/models/folder-parent.d.ts +19 -0
  135. package/dist/api/models/folder-parent.d.ts.map +1 -0
  136. package/dist/api/models/folder-parent.js +16 -0
  137. package/dist/api/models/folder-parent.js.map +1 -0
  138. package/dist/api/models/folder.d.ts +65 -0
  139. package/dist/api/models/folder.d.ts.map +1 -0
  140. package/dist/api/models/folder.js +16 -0
  141. package/dist/api/models/folder.js.map +1 -0
  142. package/dist/api/models/group-mutation.d.ts +26 -0
  143. package/dist/api/models/group-mutation.d.ts.map +1 -0
  144. package/dist/api/models/group-mutation.js +16 -0
  145. package/dist/api/models/group-mutation.js.map +1 -0
  146. package/dist/api/models/group.d.ts +38 -0
  147. package/dist/api/models/group.d.ts.map +1 -0
  148. package/dist/api/models/group.js +16 -0
  149. package/dist/api/models/group.js.map +1 -0
  150. package/dist/api/models/index.d.ts +35 -0
  151. package/dist/api/models/index.d.ts.map +1 -0
  152. package/dist/api/models/index.js +51 -0
  153. package/dist/api/models/index.js.map +1 -0
  154. package/dist/api/models/model-error.d.ts +26 -0
  155. package/dist/api/models/model-error.d.ts.map +1 -0
  156. package/dist/api/models/model-error.js +16 -0
  157. package/dist/api/models/model-error.js.map +1 -0
  158. package/dist/api/models/oauth-revoke-post200-response.d.ts +15 -0
  159. package/dist/api/models/oauth-revoke-post200-response.d.ts.map +1 -0
  160. package/dist/api/models/oauth-revoke-post200-response.js +16 -0
  161. package/dist/api/models/oauth-revoke-post200-response.js.map +1 -0
  162. package/dist/api/models/permission-actor.d.ts +20 -0
  163. package/dist/api/models/permission-actor.d.ts.map +1 -0
  164. package/dist/api/models/permission-actor.js +16 -0
  165. package/dist/api/models/permission-actor.js.map +1 -0
  166. package/dist/api/models/permission-mutation.d.ts +44 -0
  167. package/dist/api/models/permission-mutation.d.ts.map +1 -0
  168. package/dist/api/models/permission-mutation.js +22 -0
  169. package/dist/api/models/permission-mutation.js.map +1 -0
  170. package/dist/api/models/permission-permissible.d.ts +20 -0
  171. package/dist/api/models/permission-permissible.d.ts.map +1 -0
  172. package/dist/api/models/permission-permissible.js +16 -0
  173. package/dist/api/models/permission-permissible.js.map +1 -0
  174. package/dist/api/models/permission.d.ts +60 -0
  175. package/dist/api/models/permission.d.ts.map +1 -0
  176. package/dist/api/models/permission.js +22 -0
  177. package/dist/api/models/permission.js.map +1 -0
  178. package/dist/api/models/token-response.d.ts +41 -0
  179. package/dist/api/models/token-response.d.ts.map +1 -0
  180. package/dist/api/models/token-response.js +16 -0
  181. package/dist/api/models/token-response.js.map +1 -0
  182. package/dist/api/models/user.d.ts +18 -0
  183. package/dist/api/models/user.d.ts.map +1 -0
  184. package/dist/api/models/user.js +16 -0
  185. package/dist/api/models/user.js.map +1 -0
  186. package/dist/api/models/workspace-mutation-settings-validation.d.ts +26 -0
  187. package/dist/api/models/workspace-mutation-settings-validation.d.ts.map +1 -0
  188. package/dist/api/models/workspace-mutation-settings-validation.js +16 -0
  189. package/dist/api/models/workspace-mutation-settings-validation.js.map +1 -0
  190. package/dist/api/models/workspace-mutation-settings.d.ts +60 -0
  191. package/dist/api/models/workspace-mutation-settings.d.ts.map +1 -0
  192. package/dist/api/models/workspace-mutation-settings.js +16 -0
  193. package/dist/api/models/workspace-mutation-settings.js.map +1 -0
  194. package/dist/api/models/workspace-mutation.d.ts +44 -0
  195. package/dist/api/models/workspace-mutation.d.ts.map +1 -0
  196. package/dist/api/models/workspace-mutation.js +16 -0
  197. package/dist/api/models/workspace-mutation.js.map +1 -0
  198. package/dist/api/models/workspace-settings-validation.d.ts +26 -0
  199. package/dist/api/models/workspace-settings-validation.d.ts.map +1 -0
  200. package/dist/api/models/workspace-settings-validation.js +16 -0
  201. package/dist/api/models/workspace-settings-validation.js.map +1 -0
  202. package/dist/api/models/workspace-settings.d.ts +60 -0
  203. package/dist/api/models/workspace-settings.d.ts.map +1 -0
  204. package/dist/api/models/workspace-settings.js +16 -0
  205. package/dist/api/models/workspace-settings.js.map +1 -0
  206. package/dist/api/models/workspace.d.ts +62 -0
  207. package/dist/api/models/workspace.d.ts.map +1 -0
  208. package/dist/api/models/workspace.js +16 -0
  209. package/dist/api/models/workspace.js.map +1 -0
  210. package/dist/cli/handlers/command-handlers.d.ts +29 -0
  211. package/dist/cli/handlers/command-handlers.d.ts.map +1 -0
  212. package/dist/cli/handlers/command-handlers.js +261 -0
  213. package/dist/cli/handlers/command-handlers.js.map +1 -0
  214. package/dist/cli/handlers/engine-handlers.d.ts +15 -0
  215. package/dist/cli/handlers/engine-handlers.d.ts.map +1 -0
  216. package/dist/cli/handlers/engine-handlers.js +174 -0
  217. package/dist/cli/handlers/engine-handlers.js.map +1 -0
  218. package/dist/cli/interactive.d.ts +15 -0
  219. package/dist/cli/interactive.d.ts.map +1 -0
  220. package/dist/cli/interactive.js +234 -0
  221. package/dist/cli/interactive.js.map +1 -0
  222. package/dist/cli.js +31 -740
  223. package/dist/cli.js.map +1 -1
  224. package/dist/commands/export.d.ts +1 -1
  225. package/dist/commands/export.d.ts.map +1 -1
  226. package/dist/commands/export.js +1 -1
  227. package/dist/commands/export.js.map +1 -1
  228. package/dist/commands/import.d.ts.map +1 -1
  229. package/dist/commands/import.js +5 -1
  230. package/dist/commands/import.js.map +1 -1
  231. package/dist/index.d.ts +27 -3
  232. package/dist/index.d.ts.map +1 -1
  233. package/dist/index.js +63 -20
  234. package/dist/index.js.map +1 -1
  235. package/dist/services/hubdoc-api.d.ts +26 -6
  236. package/dist/services/hubdoc-api.d.ts.map +1 -1
  237. package/dist/services/hubdoc-api.js +194 -43
  238. package/dist/services/hubdoc-api.js.map +1 -1
  239. package/dist/services/hubdoc-export.d.ts +1 -1
  240. package/dist/services/hubdoc-export.d.ts.map +1 -1
  241. package/dist/services/hubdoc-export.js +1 -1
  242. package/dist/services/hubdoc-export.js.map +1 -1
  243. package/dist/services/oauth-token-service.d.ts +27 -14
  244. package/dist/services/oauth-token-service.d.ts.map +1 -1
  245. package/dist/services/oauth-token-service.js +147 -80
  246. package/dist/services/oauth-token-service.js.map +1 -1
  247. package/dist/services/plugin-import.d.ts +2 -2
  248. package/dist/services/plugin-import.d.ts.map +1 -1
  249. package/dist/services/plugin-import.js +2 -2
  250. package/dist/services/plugin-import.js.map +1 -1
  251. package/dist/services/plugin-manager.d.ts +6 -1
  252. package/dist/services/plugin-manager.d.ts.map +1 -1
  253. package/dist/services/plugin-manager.js +28 -2
  254. package/dist/services/plugin-manager.js.map +1 -1
  255. package/dist/types/index.d.ts +11 -37
  256. package/dist/types/index.d.ts.map +1 -1
  257. package/dist/utils/config.d.ts +30 -1
  258. package/dist/utils/config.d.ts.map +1 -1
  259. package/dist/utils/config.js +187 -40
  260. package/dist/utils/config.js.map +1 -1
  261. package/dist/utils/csv.d.ts.map +1 -1
  262. package/dist/utils/csv.js +14 -3
  263. package/dist/utils/csv.js.map +1 -1
  264. package/package.json +23 -6
  265. package/.env.example +0 -23
  266. package/BAUTECH_HubDoc_Import.pptx +0 -0
  267. package/CHANGELOG.md +0 -134
  268. package/DEMO-DOCUMENTATION.html +0 -356
  269. package/DEMO-DOCUMENTATION.md +0 -411
  270. package/EXPORT-DOCUMENTATION.md +0 -333
  271. package/HUBDOC-API-V2.md +0 -248
  272. package/INSTALL.md +0 -175
  273. package/PACKAGING.md +0 -206
  274. package/PLUGINS.md +0 -328
  275. package/PRESENTATION-CLIENT.md +0 -100
  276. package/README-hubdoc-tool.md +0 -369
  277. package/README-npm.md +0 -238
  278. package/TESTING.md +0 -129
  279. package/config-examples/README.md +0 -36
  280. package/config-examples/alfresco-config.example.json +0 -8
  281. package/config-examples/azure-blob-config.example.json +0 -7
  282. package/config-examples/box-config.example.json +0 -5
  283. package/config-examples/nuxeo-config.example.json +0 -8
  284. package/config-examples/opentext-config.example.json +0 -7
  285. package/config-examples/s3-config.example.json +0 -8
  286. package/config-examples/sharepoint-config.example.json +0 -7
  287. package/demo/README.md +0 -199
  288. package/demo/demo-script.md +0 -284
  289. package/demo/generate-sample-csv.js +0 -351
  290. package/demo/mapping_bautech_15k.csv +0 -1
  291. package/demo/simulate-import.js +0 -273
  292. package/dist/commands/export-v2.d.ts +0 -45
  293. package/dist/commands/export-v2.d.ts.map +0 -1
  294. package/dist/commands/export-v2.js +0 -369
  295. package/dist/commands/export-v2.js.map +0 -1
  296. package/dist/commands/import-v2.d.ts +0 -32
  297. package/dist/commands/import-v2.d.ts.map +0 -1
  298. package/dist/commands/import-v2.js +0 -331
  299. package/dist/commands/import-v2.js.map +0 -1
  300. package/dist/services/hubdoc-api-v2.d.ts +0 -150
  301. package/dist/services/hubdoc-api-v2.d.ts.map +0 -1
  302. package/dist/services/hubdoc-api-v2.js +0 -418
  303. package/dist/services/hubdoc-api-v2.js.map +0 -1
  304. package/dist/services/hubdoc-client.d.ts +0 -246
  305. package/dist/services/hubdoc-client.d.ts.map +0 -1
  306. package/dist/services/hubdoc-client.js +0 -714
  307. package/dist/services/hubdoc-client.js.map +0 -1
  308. package/dist/services/hubdoc-export-service.d.ts +0 -90
  309. package/dist/services/hubdoc-export-service.d.ts.map +0 -1
  310. package/dist/services/hubdoc-export-service.js +0 -443
  311. package/dist/services/hubdoc-export-service.js.map +0 -1
  312. package/dist/services/hubdoc-export-v2.d.ts +0 -77
  313. package/dist/services/hubdoc-export-v2.d.ts.map +0 -1
  314. package/dist/services/hubdoc-export-v2.js +0 -329
  315. package/dist/services/hubdoc-export-v2.js.map +0 -1
  316. package/dist/services/hubdoc-import-service.d.ts +0 -64
  317. package/dist/services/hubdoc-import-service.d.ts.map +0 -1
  318. package/dist/services/hubdoc-import-service.js +0 -374
  319. package/dist/services/hubdoc-import-service.js.map +0 -1
  320. package/docs/README.md +0 -65
  321. package/docs/connectors/alfresco.md +0 -211
  322. package/docs/connectors/aws-s3.md +0 -187
  323. package/docs/connectors/azure-blob.md +0 -195
  324. package/docs/connectors/box.md +0 -115
  325. package/docs/connectors/nuxeo.md +0 -214
  326. package/docs/connectors/opentext.md +0 -234
  327. package/docs/connectors/sharepoint.md +0 -207
  328. package/documentation.html +0 -273
  329. package/jest.config.js +0 -15
  330. package/plugins/core/README.md +0 -122
  331. package/plugins/core/TESTING.md +0 -155
  332. package/plugins/core/plugin.json +0 -26
  333. package/plugins/dropbox/plugin.json +0 -12
  334. package/plugins/filesystem/plugin.json +0 -12
  335. package/plugins/googledrive/plugin.json +0 -12
  336. package/plugins/onedrive/TESTING.md +0 -197
  337. package/plugins/onedrive/plugin.json +0 -12
  338. package/scripts/build-windows-installer.ps1 +0 -132
  339. package/scripts/build-windows-installer.sh +0 -106
  340. package/scripts/prepare-publish.js +0 -62
  341. package/scripts/restore-package.js +0 -29
@@ -1,284 +0,0 @@
1
- # 🎬 Script de Démonstration - HubDoc Importer
2
-
3
- ## 🎯 Scénario de Présentation : BAUTECH Construction
4
-
5
- ### 🏢 Contexte Client
6
- **BAUTECH Construction & Promotion Immobilière**
7
- - 8 projets immobiliers actifs
8
- - 15,000 documents à centraliser
9
- - Équipes dispersées (bureaux, chantiers, sous-traitants)
10
- - Besoin urgent de digitalisation pour certification ISO
11
-
12
- ---
13
-
14
- ## 📋 Déroulé de Démonstration (20 minutes)
15
-
16
- ### 🎬 Phase 1 : Introduction du Problème (3 min)
17
-
18
- **Narrateur :** *"BAUTECH gère 8 projets immobiliers simultanément..."*
19
-
20
- ```
21
- 📊 Situation AVANT HubDoc Importer:
22
- ┌─────────────────────────────────────────────┐
23
- │ 🗂️ 15,000 documents éparpillés │
24
- │ 📂 Serveurs de fichiers multiples │
25
- │ 🔍 Recherche manuelle: 15-30 minutes │
26
- │ 📧 Partage par email (pièces jointes) │
27
- │ ⚠️ Versions multiples, doublons │
28
- │ 🚫 Pas de traçabilité des modifications │
29
- └─────────────────────────────────────────────┘
30
- ```
31
-
32
- **Points de douleur identifiés :**
33
- - Conducteur travaux perd 2h/jour à chercher documents
34
- - Plans obsolètes envoyés aux sous-traitants
35
- - Conformité ISO impossible à maintenir
36
- - Collaboration difficile avec équipes externes
37
-
38
- ### 🎬 Phase 2 : Solution HubDoc Importer (5 min)
39
-
40
- **Demo Live - Terminal**
41
-
42
- ```bash
43
- # 1. Configuration rapide
44
- $ hubdoc-importer config
45
- 🔧 HubDoc Importer Configuration
46
- HubDoc API URL: https://bautech.hubdoc.sinoia.cloud/api/v1
47
- API Token: ******************
48
- ✅ Configuration saved to .hubdoc-config.json
49
- ```
50
-
51
- ```bash
52
- # 2. Génération du mapping
53
- $ hubdoc-importer generate-mapping /srv/bautech/documents/
54
-
55
- 🔍 Scanning directory: /srv/bautech/documents/
56
- 📁 Found 15,000 files to import
57
- ✅ Mapping file generated: mapping.csv
58
- 📝 Edit the file to specify target folders, workspaces, and permissions
59
- - Target Folder: Name of the folder in HubDoc
60
- - Workspace: Name of the workspace
61
- - Read Permissions: Users and groups who can read
62
- - Write Permissions: Users and groups who can edit
63
- - Format: users:user1,user2|groups:group1,group2
64
- ```
65
-
66
- **Montrer le CSV généré :**
67
- ```csv
68
- File Path,Target Folder,Workspace,Metadata (JSON),Read Permissions,Write Permissions
69
- ./docs/projets/meudon/plans/plan_masse_v3.pdf,Les Jardins de Meudon/Plans,BAUTECH Production,"{\"type\":\"plan\",\"version\":\"3.0\",\"architecte\":\"Cabinet Dubois\"}",users:j.martin|groups:architectes,conducteurs_travaux,groups:architectes
70
- ```
71
-
72
- ### 🎬 Phase 3 : Import en Action (8 min)
73
-
74
- **Demo Live - Import avec Progress**
75
-
76
- ```bash
77
- $ hubdoc-importer import --mapping mapping_bautech_15k.csv
78
- ```
79
-
80
- **Simulation d'output temps réel :**
81
-
82
- ```
83
- 🚀 HubDoc Import - BAUTECH Construction
84
- 📅 Started: 15/03/2024 14:30:00
85
- ✅ Connected to HubDoc API
86
-
87
- 📊 Import Progress
88
- ████████████████████░░░░░░░░░░░░░░░░░░░░ 52%
89
- 7,800 / 15,000 documents processed
90
-
91
- 📁 Current: Éco-Quartier Boulogne/Plans/plan_facade_nord.pdf
92
- ⏱️ Elapsed: 1h 23m | Remaining: ~1h 10m
93
- 📈 Speed: 94 docs/min | Peak: 142 docs/min
94
-
95
- ✅ Recent Successes:
96
- • Les Jardins de Meudon/Administratif/permis_construire.pdf
97
- • Résidence Harmony/Devis/gros_oeuvre_martin_tp.pdf
98
- • Villa Prestige/PV/pv_reception_electricite.pdf
99
-
100
- 📋 Folders Created:
101
- ✨ Les Jardins de Meudon/Plans (47 docs)
102
- ✨ Administration/Contrats (23 docs)
103
- ✨ Technique/DOE (18 docs)
104
-
105
- 🔐 Permissions Applied:
106
- 👥 3,240 read permissions set
107
- ✏️ 1,890 write permissions set
108
- ```
109
-
110
- **Points clés à souligner :**
111
- - Création automatique des dossiers
112
- - Application granulaire des permissions
113
- - Métadonnées enrichies automatiquement
114
- - Vitesse d'import (94 docs/min = 1.5 docs/seconde)
115
-
116
- ### 🎬 Phase 4 : Résultats & Impact (4 min)
117
-
118
- **Tableau de bord final :**
119
-
120
- ```
121
- 📊 BAUTECH Import - RÉSULTATS FINAUX
122
- ════════════════════════════════════════════
123
-
124
- ✅ Import Réussi: 14,847 / 15,000 (98.98%)
125
- ❌ Échecs: 153 (1.02%)
126
- ⚠️ Avertissements: 89
127
-
128
- 💾 Volume traité: 47.3 GB
129
- ⏱️ Durée totale: 2h 34m 18s
130
- 📈 Vitesse moyenne: 97 docs/min
131
-
132
- 📁 Workspaces Créés:
133
- 🏢 BAUTECH Production → 13,647 documents
134
- 📜 BAUTECH Archives → 1,200 documents
135
-
136
- 🔐 Sécurité:
137
- 👥 15,420 permissions utilisateurs
138
- 👥 8,930 permissions groupes
139
- 🔒 100% des documents sécurisés
140
- ```
141
-
142
- **ROI immédiat :**
143
- ```
144
- 💰 RETOUR SUR INVESTISSEMENT
145
-
146
- Avant HubDoc:
147
- • Recherche documents: 2h/jour/personne × 12 personnes = 24h/jour
148
- • Coût horaire moyen: 40€
149
- • Coût quotidien: 960€
150
-
151
- Après HubDoc:
152
- • Recherche documents: 5min/jour/personne × 12 personnes = 1h/jour
153
- • Gain quotidien: 920€
154
- • Gain mensuel: 20,160€
155
- • ROI sur 6 mois: 1,200%
156
-
157
- 🎯 Coût de l'import: 8h × 80€ = 640€
158
- 💡 Amortissement: 16 heures d'utilisation
159
- ```
160
-
161
- ## 🖼️ Éléments Visuels à Intégrer
162
-
163
- ### 📸 Screenshots à Mocker
164
-
165
- 1. **Interface HubDoc - Vue d'ensemble**
166
- ```
167
- 📊 Dashboard BAUTECH
168
- ├── 📁 Les Jardins de Meudon (1,798 docs)
169
- ├── 📁 Résidence Harmony (2,095 docs)
170
- ├── 📁 Éco-Quartier Boulogne (1,887 docs)
171
- └── 📁 Administration (3,156 docs)
172
-
173
- 🔍 Recherche: "plan facade meudon"
174
- 📋 Résultats: 23 documents trouvés en 0.3s
175
- ```
176
-
177
- 2. **Vue Document avec Métadonnées**
178
- ```
179
- 📄 plan_facade_sud_meudon_v3.pdf
180
-
181
- 📝 Métadonnées:
182
- • Type: Plan
183
- • Projet: Les Jardins de Meudon
184
- • Phase: EXE
185
- • Architecte: Cabinet Dubois
186
- • Date: 15/03/2024
187
-
188
- 👥 Permissions:
189
- • Lecture: Équipe Architecture, Conducteurs Travaux
190
- • Écriture: Équipe Architecture
191
- ```
192
-
193
- 3. **Workflow de Validation**
194
- ```
195
- 📋 Circuit de Validation - Plan Façade Sud
196
-
197
- ✅ Upload: Marie Dupont (Architecte) - 14/03 09:30
198
- ⏳ En attente: Validation Jean Martin (Conducteur)
199
- 📧 Notification envoyée: 15/03 14:00
200
- 🕒 SLA: 24h restantes
201
- ```
202
-
203
- ### 📈 Graphiques de Performance
204
-
205
- 1. **Vitesse d'Import**
206
- ```
207
- 📈 Performance Import (docs/min)
208
- 150 │ ╭─╮
209
- 120 │ ╱ ╲
210
- 90 │ ╱ ╲╭─╮
211
- 60 │╱ ╲ ╲
212
- 30 │ ╲ ╱
213
- 0 └─────────────────╲╱
214
- 0h 30m 1h 1h30 2h 2h30
215
-
216
- 🏆 Pic: 145 docs/min à 1h15
217
- 📊 Moyenne: 97 docs/min
218
- ```
219
-
220
- 2. **Répartition des Documents**
221
- ```
222
- 🥧 Répartition par Type de Document
223
-
224
- 📐 Plans (35%) ████████████
225
- 📋 Administratif (21%) ███████
226
- 💰 Financier (18%) ██████
227
- 🔧 Technique (14%) █████
228
- 📸 Suivi (12%) ████
229
- ```
230
-
231
- ---
232
-
233
- ## 🎯 Messages Clés pour la Démo
234
-
235
- ### ✨ Points de Différenciation
236
-
237
- 1. **Simplicité Extrême**
238
- - "3 commandes suffisent : config, generate, import"
239
- - "Pas besoin de formation technique"
240
-
241
- 2. **Robustesse Enterprise**
242
- - "98.98% de taux de succès sur 15,000 documents"
243
- - "Gestion des erreurs et reprise automatique"
244
-
245
- 3. **Sécurité Native**
246
- - "Permissions granulaires read/write par utilisateur/groupe"
247
- - "Intégration AD/LDAP ready"
248
-
249
- 4. **Métadonnées Intelligentes**
250
- - "OCR et extraction automatique à venir"
251
- - "Enrichissement contextuel par projet"
252
-
253
- ### 🎤 Phrases d'Accroche
254
-
255
- - *"De 15 minutes à 30 secondes pour trouver un document"*
256
- - *"15,000 documents importés en moins de 3 heures"*
257
- - *"ROI de 1,200% dès les 6 premiers mois"*
258
- - *"Zéro formation nécessaire : si vous savez utiliser Excel, vous savez utiliser l'outil"*
259
-
260
- ---
261
-
262
- ## 📱 Démonstration Interactive
263
-
264
- ### 🖱️ Étapes Clics par Clics
265
-
266
- 1. **Ouverture terminal** → `hubdoc-importer --help`
267
- 2. **Configuration** → Montrer le wizard interactif
268
- 3. **Génération CSV** → Ouvrir le fichier dans Excel
269
- 4. **Modification mapping** → Enrichir 2-3 lignes en live
270
- 5. **Import** → Laisser tourner avec progress bar
271
- 6. **Vérification HubDoc** → Montrer les dossiers créés
272
- 7. **Recherche** → Démontrer la rapidité
273
- 8. **Permissions** → Vérifier les droits d'accès
274
-
275
- ### ⚡ Timing Critique
276
-
277
- - **Total : 20 minutes max**
278
- - **Setup : 3 min** (contexte + problème)
279
- - **Demo : 12 min** (config + import + résultats)
280
- - **Questions : 5 min** (ROI + technique)
281
-
282
- ---
283
-
284
- *Script préparé pour démonstration commerciale - HubDoc Importer v1.0*
@@ -1,351 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * Générateur de fichier CSV de démonstration pour BAUTECH Construction
5
- * Génère un mapping réaliste de 15,000 documents BTP/immobilier
6
- */
7
-
8
- const fs = require('fs');
9
- const path = require('path');
10
-
11
- // Configuration du client BAUTECH
12
- const CLIENT_CONFIG = {
13
- name: 'BAUTECH Construction & Promotion Immobilière',
14
- projects: [
15
- { name: 'Les Jardins de Meudon', docs: 1800, code: 'MEUDON' },
16
- { name: 'Résidence Harmony Levallois', docs: 2100, code: 'LEVALLOIS' },
17
- { name: 'Éco-Quartier Boulogne', docs: 1900, code: 'BOULOGNE' },
18
- { name: 'Villa Prestige Neuilly', docs: 1200, code: 'NEUILLY' },
19
- { name: 'Loft Industrial Montreuil', docs: 700, code: 'MONTREUIL' },
20
- { name: 'Green Towers La Défense', docs: 600, code: 'DEFENSE' },
21
- { name: 'Campus Student Créteil', docs: 200, code: 'CRETEIL' }
22
- ],
23
- admin: { docs: 3200 },
24
- technique: { docs: 2100 },
25
- archives: { docs: 1200 }
26
- };
27
-
28
- // Types de documents BTP
29
- const DOC_TYPES = {
30
- plans: {
31
- subtypes: ['plan_masse', 'facades', 'coupes', 'details', 'implantation'],
32
- folders: ['Plans/Architecture', 'Plans/Structure', 'Plans/Fluides'],
33
- metadata: (project, subtype) => ({
34
- type: 'plan',
35
- categorie: subtype,
36
- phase: randomChoice(['APS', 'APD', 'PRO', 'EXE', 'DOE']),
37
- architecte: randomChoice(['Cabinet Dubois', 'Atelier Martin', 'Studio Architecte']),
38
- echelle: randomChoice(['1/100', '1/200', '1/500', '1/50'])
39
- })
40
- },
41
-
42
- administratif: {
43
- subtypes: ['permis', 'declarations', 'contrats', 'marches', 'assurances'],
44
- folders: ['Administratif/Permis', 'Administratif/Contrats', 'Administratif/Assurances'],
45
- metadata: (project, subtype) => ({
46
- type: subtype,
47
- statut: randomChoice(['en_cours', 'valide', 'expire', 'refuse']),
48
- commune: project.includes('Meudon') ? 'Meudon' : project.includes('Levallois') ? 'Levallois-Perret' : 'Paris',
49
- numero_dossier: `${randomChoice(['PC', 'DP', 'AT'])}-2024-${String(Math.floor(Math.random() * 999) + 1).padStart(3, '0')}`
50
- })
51
- },
52
-
53
- financier: {
54
- subtypes: ['devis', 'factures', 'situations', 'avenants', 'retenues'],
55
- folders: ['Financier/Devis', 'Financier/Factures', 'Financier/Situations'],
56
- metadata: (project, subtype) => ({
57
- type: subtype,
58
- entreprise: randomChoice([
59
- 'Martin TP', 'Bouygues Construction', 'Vinci Construction',
60
- 'Elec Pro', 'Thermique Plus', 'Plomberie Moderne'
61
- ]),
62
- montant: Math.floor(Math.random() * 500000) + 5000,
63
- corps_etat: randomChoice(['gros_oeuvre', 'second_oeuvre', 'electricite', 'plomberie', 'chauffage'])
64
- })
65
- },
66
-
67
- technique: {
68
- subtypes: ['etudes', 'calculs', 'notes', 'rapports', 'doe'],
69
- folders: ['Technique/Études', 'Technique/DOE', 'Technique/Rapports'],
70
- metadata: (project, subtype) => ({
71
- type: subtype,
72
- domaine: randomChoice(['structure', 'thermique', 'acoustique', 'fluides', 'electricite']),
73
- bureau_etude: randomChoice(['BETOM Ingénierie', 'Fluides Conseil', 'Struct & Co']),
74
- norme: randomChoice(['RT2020', 'RE2020', 'PMR', 'Sécurité Incendie'])
75
- })
76
- },
77
-
78
- suivi: {
79
- subtypes: ['pv_chantier', 'pv_reception', 'photos', 'rapports', 'non_conformites'],
80
- folders: ['Suivi/PV Chantier', 'Suivi/Réception', 'Suivi/Photos'],
81
- metadata: (project, subtype) => ({
82
- type: subtype,
83
- date_visite: generateRandomDate(),
84
- conducteur_travaux: randomChoice(['Jean Martin', 'Claire Bernard', 'Antoine Rousseau']),
85
- lot: randomChoice(['lot_1_gros_oeuvre', 'lot_2_charpente', 'lot_3_electricite', 'lot_4_plomberie'])
86
- })
87
- }
88
- };
89
-
90
- // Utilisateurs et groupes
91
- const USERS_GROUPS = {
92
- users: {
93
- 'j.martin': 'Jean Martin - Conducteur Travaux',
94
- 'c.bernard': 'Claire Bernard - Conductrice Travaux',
95
- 'a.rousseau': 'Antoine Rousseau - Chef de Projet',
96
- 'm.dupont': 'Marie Dupont - Architecte',
97
- 'p.dubois': 'Pierre Dubois - Directeur',
98
- 'tech.leader': 'Thomas Leroy - Responsable Technique'
99
- },
100
- groups: {
101
- 'direction': 'Direction Générale',
102
- 'conducteurs_travaux': 'Conducteurs de Travaux',
103
- 'architectes': 'Équipe Architecture',
104
- 'bureaux_etudes': 'Bureaux d\'Études',
105
- 'maitrise_oeuvre': 'Maîtrise d\'Œuvre',
106
- 'sous_traitants': 'Sous-traitants',
107
- 'quality': 'Contrôle Qualité'
108
- }
109
- };
110
-
111
- // Fonctions utilitaires
112
- function randomChoice(array) {
113
- return array[Math.floor(Math.random() * array.length)];
114
- }
115
-
116
- function generateRandomDate() {
117
- const start = new Date(2023, 0, 1);
118
- const end = new Date(2024, 11, 31);
119
- return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime())).toISOString().split('T')[0];
120
- }
121
-
122
- function generatePermissions() {
123
- const readUsers = [];
124
- const readGroups = [];
125
- const writeGroups = [];
126
-
127
- // Lecture - utilisateurs spécifiques parfois
128
- if (Math.random() > 0.7) {
129
- const userKeys = Object.keys(USERS_GROUPS.users);
130
- readUsers.push(randomChoice(userKeys));
131
- if (Math.random() > 0.5) {
132
- readUsers.push(randomChoice(userKeys.filter(u => u !== readUsers[0])));
133
- }
134
- }
135
-
136
- // Lecture - groupes (toujours)
137
- const groupKeys = Object.keys(USERS_GROUPS.groups);
138
- readGroups.push(randomChoice(['conducteurs_travaux', 'architectes', 'maitrise_oeuvre']));
139
- if (Math.random() > 0.6) {
140
- readGroups.push(randomChoice(groupKeys.filter(g => g !== readGroups[0])));
141
- }
142
-
143
- // Écriture - généralement des groupes métier
144
- writeGroups.push(randomChoice(['conducteurs_travaux', 'architectes', 'direction']));
145
-
146
- const readPerm = [];
147
- if (readUsers.length > 0) readPerm.push(`users:${readUsers.join(',')}`);
148
- if (readGroups.length > 0) readPerm.push(`groups:${readGroups.join(',')}`);
149
-
150
- const writePerm = writeGroups.length > 0 ? `groups:${writeGroups.join(',')}` : '';
151
-
152
- return {
153
- read: readPerm.join('|'),
154
- write: writePerm
155
- };
156
- }
157
-
158
- function generateDocumentPath(project, docType, subtype, index) {
159
- const projectCode = project.code.toLowerCase();
160
- const year = randomChoice(['2023', '2024']);
161
- const month = String(Math.floor(Math.random() * 12) + 1).padStart(2, '0');
162
-
163
- const extensions = ['.pdf', '.dwg', '.xlsx', '.docx', '.jpg'];
164
- const ext = randomChoice(extensions);
165
-
166
- const filename = `${subtype}_${projectCode}_${year}${month}_${String(index).padStart(3, '0')}${ext}`;
167
-
168
- return `./docs/projets/${projectCode}/${docType}/${year}/${filename}`;
169
- }
170
-
171
- // Générateur principal
172
- function generateCSVData() {
173
- const csvRows = [];
174
- let totalDocs = 0;
175
-
176
- console.log('🏗️ Génération des données BAUTECH Construction...');
177
-
178
- // Documents par projet
179
- CLIENT_CONFIG.projects.forEach(project => {
180
- console.log(`📁 Projet: ${project.name} (${project.docs} docs)`);
181
-
182
- const docTypesArray = Object.keys(DOC_TYPES);
183
- const docsPerType = Math.floor(project.docs / docTypesArray.length);
184
- let projectDocCount = 0;
185
-
186
- docTypesArray.forEach(docTypeKey => {
187
- const docType = DOC_TYPES[docTypeKey];
188
- const targetDocs = docTypeKey === docTypesArray[docTypesArray.length - 1]
189
- ? (project.docs - projectDocCount) // Dernier type prend le reste
190
- : docsPerType;
191
-
192
- for (let i = 0; i < targetDocs; i++) {
193
- const subtype = randomChoice(docType.subtypes);
194
- const folder = randomChoice(docType.folders);
195
- const metadata = docType.metadata(project.name, subtype);
196
- const permissions = generatePermissions();
197
-
198
- const filePath = generateDocumentPath(project, docTypeKey, subtype, i + 1);
199
- const targetFolder = `${project.name}/${folder}`;
200
-
201
- csvRows.push({
202
- filePath,
203
- targetFolder,
204
- projet: project.name,
205
- domain: 'BTP & Construction',
206
- planClassement: 'BTP_PROMOTION_IMMOBILIERE',
207
- metadata: JSON.stringify(metadata),
208
- readPermissions: permissions.read,
209
- writePermissions: permissions.write
210
- });
211
-
212
- projectDocCount++;
213
- totalDocs++;
214
- }
215
- });
216
- });
217
-
218
- // Documents administratifs
219
- console.log('📋 Documents Administratifs...');
220
- for (let i = 0; i < CLIENT_CONFIG.admin.docs; i++) {
221
- const docType = DOC_TYPES.administratif;
222
- const subtype = randomChoice(docType.subtypes);
223
- const folder = randomChoice(docType.folders);
224
- const metadata = docType.metadata('Administration', subtype);
225
- const permissions = generatePermissions();
226
-
227
- csvRows.push({
228
- filePath: `./docs/admin/${subtype}/admin_${String(i + 1).padStart(4, '0')}.pdf`,
229
- targetFolder: `Administration/${folder}`,
230
- workspace: 'BAUTECH Corporate',
231
- domain: 'Administration',
232
- planClassement: 'ADMINISTRATION_GENERALE',
233
- metadata: JSON.stringify(metadata),
234
- readPermissions: 'groups:direction,conducteurs_travaux',
235
- writePermissions: 'groups:direction'
236
- });
237
- totalDocs++;
238
- }
239
-
240
- // Documents techniques
241
- console.log('🔧 Documents Techniques...');
242
- for (let i = 0; i < CLIENT_CONFIG.technique.docs; i++) {
243
- const docType = DOC_TYPES.technique;
244
- const subtype = randomChoice(docType.subtypes);
245
- const folder = randomChoice(docType.folders);
246
- const metadata = docType.metadata('Technique', subtype);
247
- const permissions = generatePermissions();
248
-
249
- csvRows.push({
250
- filePath: `./docs/technique/${subtype}/tech_${String(i + 1).padStart(4, '0')}.pdf`,
251
- targetFolder: `Technique/${folder}`,
252
- workspace: 'BAUTECH Corporate',
253
- domain: 'Technique & Maintenance',
254
- planClassement: 'MAINTENANCE_TECHNIQUE',
255
- metadata: JSON.stringify(metadata),
256
- readPermissions: 'users:tech.leader|groups:bureaux_etudes,conducteurs_travaux',
257
- writePermissions: 'groups:bureaux_etudes'
258
- });
259
- totalDocs++;
260
- }
261
-
262
- // Archives
263
- console.log('📜 Archives...');
264
- for (let i = 0; i < CLIENT_CONFIG.archives.docs; i++) {
265
- const year = randomChoice(['2020', '2021', '2022']);
266
- csvRows.push({
267
- filePath: `./docs/archives/${year}/archive_${year}_${String(i + 1).padStart(4, '0')}.pdf`,
268
- targetFolder: `Archives/${year}`,
269
- workspace: 'BAUTECH Archives',
270
- domain: 'Administration',
271
- planClassement: 'ADMINISTRATION_GENERALE',
272
- metadata: JSON.stringify({
273
- type: 'archive',
274
- annee: year,
275
- statut: 'archive'
276
- }),
277
- readPermissions: 'groups:direction,quality',
278
- writePermissions: 'groups:direction'
279
- });
280
- totalDocs++;
281
- }
282
-
283
- console.log(`✅ Total généré: ${totalDocs} documents`);
284
- return csvRows;
285
- }
286
-
287
- // Export CSV
288
- function exportToCSV(data, filename = 'mapping_bautech_15k.csv') {
289
- const headers = [
290
- 'File Path',
291
- 'Target Folder',
292
- 'Projet',
293
- 'Domain',
294
- 'Plan Classement',
295
- 'Metadata (JSON)',
296
- 'Read Permissions (users:user1,user2|groups:group1,group2)',
297
- 'Write Permissions (users:user1,user2|groups:group1,group2)'
298
- ];
299
-
300
- let csvContent = headers.join(',') + '\\n';
301
-
302
- data.forEach(row => {
303
- const csvRow = [
304
- `"${row.filePath}"`,
305
- `"${row.targetFolder}"`,
306
- `"${row.workspace}",
307
- `"${row.domain || ''}"`,
308
- `"${row.planClassement || ''}"`,
309
- `"${row.metadata.replace(/"/g, '""')}"`,
310
- `"${row.readPermissions}"`,
311
- `"${row.writePermissions}"`
312
- ].join(',');
313
-
314
- csvContent += csvRow + '\\n';
315
- });
316
-
317
- return csvContent;
318
- }
319
-
320
- // Génération et export
321
- console.log('🚀 Générateur CSV - BAUTECH Construction');
322
- console.log('=' .repeat(50));
323
-
324
- const data = generateCSVData();
325
- const csvContent = exportToCSV(data);
326
-
327
- // Création du dossier demo s'il n'existe pas
328
- const demoDir = path.dirname(__filename);
329
- if (!fs.existsSync(demoDir)) {
330
- fs.mkdirSync(demoDir, { recursive: true });
331
- }
332
-
333
- const outputPath = path.join(demoDir, 'mapping_bautech_15k.csv');
334
- fs.writeFileSync(outputPath, csvContent);
335
-
336
- console.log('=' .repeat(50));
337
- console.log(`✅ Fichier CSV généré: ${outputPath}`);
338
- console.log(`📊 Nombre de lignes: ${data.length + 1} (headers inclus)`);
339
- console.log(`💾 Taille du fichier: ${(csvContent.length / 1024 / 1024).toFixed(2)} MB`);
340
- console.log('\\n🎯 Prêt pour la démonstration !');
341
-
342
- // Statistiques pour la démo
343
- console.log('\\n📈 Répartition:');
344
- CLIENT_CONFIG.projects.forEach(project => {
345
- console.log(` 📁 ${project.name}: ${project.docs} docs`);
346
- });
347
- console.log(` 📋 Administration: ${CLIENT_CONFIG.admin.docs} docs`);
348
- console.log(` 🔧 Technique: ${CLIENT_CONFIG.technique.docs} docs`);
349
- console.log(` 📜 Archives: ${CLIENT_CONFIG.archives.docs} docs`);
350
- console.log(` ────────────────────────────────`);
351
- console.log(` 📊 TOTAL: ${data.length} documents`);