smart_csv_import 0.1.0

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 (48) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.adoc +134 -0
  3. data/README.md +534 -0
  4. data/app/jobs/smart_csv_import/import_job.rb +22 -0
  5. data/app/models/smart_csv_import/import.rb +36 -0
  6. data/app/models/smart_csv_import/import_row_error.rb +17 -0
  7. data/lib/generators/smart_csv_import/import/import_generator.rb +49 -0
  8. data/lib/generators/smart_csv_import/import/templates/import_form.rb.tt +32 -0
  9. data/lib/generators/smart_csv_import/import/templates/import_form_spec.rb.tt +38 -0
  10. data/lib/generators/smart_csv_import/install/install_generator.rb +34 -0
  11. data/lib/generators/smart_csv_import/install/templates/create_smart_csv_import_import_row_errors.rb.tt +18 -0
  12. data/lib/generators/smart_csv_import/install/templates/create_smart_csv_import_imports.rb.tt +23 -0
  13. data/lib/generators/smart_csv_import/install/templates/initializer.rb.tt +51 -0
  14. data/lib/generators/smart_csv_import/scaffold/scaffold_generator.rb +56 -0
  15. data/lib/generators/smart_csv_import/scaffold/templates/controller.rb.tt +33 -0
  16. data/lib/generators/smart_csv_import/scaffold/templates/new.html.erb.tt +12 -0
  17. data/lib/generators/smart_csv_import/scaffold/templates/show.html.erb.tt +59 -0
  18. data/lib/smart_csv_import/configuration.rb +77 -0
  19. data/lib/smart_csv_import/cosine_similarity.rb +15 -0
  20. data/lib/smart_csv_import/engine.rb +12 -0
  21. data/lib/smart_csv_import/failed_row_exporter.rb +78 -0
  22. data/lib/smart_csv_import/file_storage.rb +34 -0
  23. data/lib/smart_csv_import/header_normalizer.rb +76 -0
  24. data/lib/smart_csv_import/logging.rb +37 -0
  25. data/lib/smart_csv_import/match_result.rb +36 -0
  26. data/lib/smart_csv_import/matchable.rb +76 -0
  27. data/lib/smart_csv_import/matcher.rb +198 -0
  28. data/lib/smart_csv_import/normalizers/boolean_converter.rb +26 -0
  29. data/lib/smart_csv_import/normalizers/date_converter.rb +28 -0
  30. data/lib/smart_csv_import/notifications.rb +16 -0
  31. data/lib/smart_csv_import/processor/csv_preflight_analyzer.rb +74 -0
  32. data/lib/smart_csv_import/processor/import_result_builder.rb +97 -0
  33. data/lib/smart_csv_import/processor/mapping_review_policy.rb +90 -0
  34. data/lib/smart_csv_import/processor/nil_cell_counter.rb +19 -0
  35. data/lib/smart_csv_import/processor/null_progress_callback.rb +11 -0
  36. data/lib/smart_csv_import/processor/row_processor.rb +70 -0
  37. data/lib/smart_csv_import/processor.rb +294 -0
  38. data/lib/smart_csv_import/result.rb +101 -0
  39. data/lib/smart_csv_import/stability_report.rb +104 -0
  40. data/lib/smart_csv_import/strategies/llm.rb +106 -0
  41. data/lib/smart_csv_import/strategies/lookup.rb +41 -0
  42. data/lib/smart_csv_import/strategies/vector.rb +155 -0
  43. data/lib/smart_csv_import/strategy.rb +9 -0
  44. data/lib/smart_csv_import/strategy_failure.rb +13 -0
  45. data/lib/smart_csv_import/version.rb +5 -0
  46. data/lib/smart_csv_import.rb +79 -0
  47. data/smart_csv_import.gemspec +35 -0
  48. metadata +216 -0
metadata ADDED
@@ -0,0 +1,216 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: smart_csv_import
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Nico Roulston
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: activemodel
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '7.0'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '9'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '7.0'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '9'
32
+ - !ruby/object:Gem::Dependency
33
+ name: activerecord
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '7.0'
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '9'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '7.0'
49
+ - - "<"
50
+ - !ruby/object:Gem::Version
51
+ version: '9'
52
+ - !ruby/object:Gem::Dependency
53
+ name: activejob
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '7.0'
59
+ - - "<"
60
+ - !ruby/object:Gem::Version
61
+ version: '9'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '7.0'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '9'
72
+ - !ruby/object:Gem::Dependency
73
+ name: activesupport
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '7.0'
79
+ - - "<"
80
+ - !ruby/object:Gem::Version
81
+ version: '9'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '7.0'
89
+ - - "<"
90
+ - !ruby/object:Gem::Version
91
+ version: '9'
92
+ - !ruby/object:Gem::Dependency
93
+ name: csv
94
+ requirement: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '3.0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '3.0'
106
+ - !ruby/object:Gem::Dependency
107
+ name: smarter_csv
108
+ requirement: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '1.10'
113
+ type: :runtime
114
+ prerelease: false
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '1.10'
120
+ - !ruby/object:Gem::Dependency
121
+ name: ruby_llm
122
+ requirement: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '1.0'
127
+ type: :runtime
128
+ prerelease: false
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '1.0'
134
+ description: A Rails Engine wrapping SmarterCSV for CSV importing with three-tier
135
+ AI header matching (lookup + vector similarity + LLM fallback), batch processing,
136
+ and import tracking. Only headers are sent to AI — row data never leaves your application.
137
+ email:
138
+ - nicolas.roulston@gmail.com
139
+ executables: []
140
+ extensions: []
141
+ extra_rdoc_files:
142
+ - LICENSE.adoc
143
+ - README.md
144
+ files:
145
+ - LICENSE.adoc
146
+ - README.md
147
+ - app/jobs/smart_csv_import/import_job.rb
148
+ - app/models/smart_csv_import/import.rb
149
+ - app/models/smart_csv_import/import_row_error.rb
150
+ - lib/generators/smart_csv_import/import/import_generator.rb
151
+ - lib/generators/smart_csv_import/import/templates/import_form.rb.tt
152
+ - lib/generators/smart_csv_import/import/templates/import_form_spec.rb.tt
153
+ - lib/generators/smart_csv_import/install/install_generator.rb
154
+ - lib/generators/smart_csv_import/install/templates/create_smart_csv_import_import_row_errors.rb.tt
155
+ - lib/generators/smart_csv_import/install/templates/create_smart_csv_import_imports.rb.tt
156
+ - lib/generators/smart_csv_import/install/templates/initializer.rb.tt
157
+ - lib/generators/smart_csv_import/scaffold/scaffold_generator.rb
158
+ - lib/generators/smart_csv_import/scaffold/templates/controller.rb.tt
159
+ - lib/generators/smart_csv_import/scaffold/templates/new.html.erb.tt
160
+ - lib/generators/smart_csv_import/scaffold/templates/show.html.erb.tt
161
+ - lib/smart_csv_import.rb
162
+ - lib/smart_csv_import/configuration.rb
163
+ - lib/smart_csv_import/cosine_similarity.rb
164
+ - lib/smart_csv_import/engine.rb
165
+ - lib/smart_csv_import/failed_row_exporter.rb
166
+ - lib/smart_csv_import/file_storage.rb
167
+ - lib/smart_csv_import/header_normalizer.rb
168
+ - lib/smart_csv_import/logging.rb
169
+ - lib/smart_csv_import/match_result.rb
170
+ - lib/smart_csv_import/matchable.rb
171
+ - lib/smart_csv_import/matcher.rb
172
+ - lib/smart_csv_import/normalizers/boolean_converter.rb
173
+ - lib/smart_csv_import/normalizers/date_converter.rb
174
+ - lib/smart_csv_import/notifications.rb
175
+ - lib/smart_csv_import/processor.rb
176
+ - lib/smart_csv_import/processor/csv_preflight_analyzer.rb
177
+ - lib/smart_csv_import/processor/import_result_builder.rb
178
+ - lib/smart_csv_import/processor/mapping_review_policy.rb
179
+ - lib/smart_csv_import/processor/nil_cell_counter.rb
180
+ - lib/smart_csv_import/processor/null_progress_callback.rb
181
+ - lib/smart_csv_import/processor/row_processor.rb
182
+ - lib/smart_csv_import/result.rb
183
+ - lib/smart_csv_import/stability_report.rb
184
+ - lib/smart_csv_import/strategies/llm.rb
185
+ - lib/smart_csv_import/strategies/lookup.rb
186
+ - lib/smart_csv_import/strategies/vector.rb
187
+ - lib/smart_csv_import/strategy.rb
188
+ - lib/smart_csv_import/strategy_failure.rb
189
+ - lib/smart_csv_import/version.rb
190
+ - smart_csv_import.gemspec
191
+ homepage: https://github.com/Nroulston/smart_csv_import
192
+ licenses:
193
+ - MIT
194
+ metadata:
195
+ bug_tracker_uri: https://github.com/Nroulston/smart_csv_import/issues
196
+ changelog_uri: https://github.com/Nroulston/smart_csv_import/blob/main/CHANGELOG.md
197
+ source_code_uri: https://github.com/Nroulston/smart_csv_import
198
+ rubygems_mfa_required: 'true'
199
+ rdoc_options: []
200
+ require_paths:
201
+ - lib
202
+ required_ruby_version: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '3.1'
207
+ required_rubygems_version: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: '0'
212
+ requirements: []
213
+ rubygems_version: 3.6.8
214
+ specification_version: 4
215
+ summary: AI-powered CSV import with automatic header matching for Rails
216
+ test_files: []