mirror of
https://github.com/we-promise/sure.git
synced 2026-04-20 12:34:12 +00:00
* Add full import/export support for rules with versioned JSON schema This commit implements comprehensive import/export functionality for rules, allowing users to back up and restore their rule definitions. Key features: - Export rules to both CSV and NDJSON formats with versioned schema (v1) - Import rules from CSV with full support for nested conditions and actions - UUID to name mapping for categories and merchants for portability - Support for compound conditions with sub-conditions - Comprehensive test coverage for export and import functionality - UI integration for rules import in the imports interface Technical details: - Extended Family::DataExporter to generate rules.csv and include rules in all.ndjson - Created RuleImport model following the existing Import STI pattern - Added migration for rule-specific columns in import_rows table - Implemented serialization helpers to map UUIDs to human-readable names - Added i18n support for the new import option - Included versioning in NDJSON export to support future schema evolution The implementation ensures rules can be safely exported from one family and imported into another, even when category/merchant IDs differ, by mapping between names and IDs during export/import. * Fix AR migration version * Mention support for rules export * Rabbit suggestion * Fix tests * Missed schema.rb * Fix sample CSV download for rule import * Fix parsing in Rules import * Fix tests * Rule import message i18n * Export tag names, not UUIDs * Make sure tags are created if needed at import * Avoid test errors when running in parallel --------- Co-authored-by: Claude <noreply@anthropic.com>
16 lines
609 B
Plaintext
16 lines
609 B
Plaintext
<%# locals: (import:) %>
|
|
|
|
<div class="space-y-4">
|
|
<p class="text-sm text-secondary"><%= t("import.configurations.rule_import.description") %></p>
|
|
|
|
<%= styled_form_with model: import,
|
|
url: import_configuration_path(import),
|
|
scope: :import,
|
|
method: :patch,
|
|
class: "space-y-3" do |form| %>
|
|
<p class="text-sm text-secondary"><%= t("import.configurations.rule_import.process_help") %></p>
|
|
<%= form.submit t("import.configurations.rule_import.process_button"), disabled: import.complete? %>
|
|
<% end %>
|
|
</div>
|
|
|