-
Notifications
You must be signed in to change notification settings - Fork 63
Implement return reasons model and distribution pipeline #790
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: rt/return-reasons-data-and-mappings
Are you sure you want to change the base?
Implement return reasons model and distribution pipeline #790
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
1c0e081 to
a9ab689
Compare
3b9db89 to
0bd1887
Compare
jmignac
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added some comments - on top of missing unit tests
dev/lib/product_taxonomy/models/serializers/return_reason/dist/txt_serializer.rb
Show resolved
Hide resolved
dev/lib/product_taxonomy/models/serializers/return_reason/dist/json_serializer.rb
Show resolved
Hide resolved
dev/lib/product_taxonomy/models/serializers/return_reason/data/localizations_serializer.rb
Outdated
Show resolved
Hide resolved
dev/lib/product_taxonomy/models/serializers/return_reason/data/localizations_serializer.rb
Outdated
Show resolved
Hide resolved
dev/lib/product_taxonomy/models/serializers/return_reason/data/data_serializer.rb
Show resolved
Hide resolved
dev/lib/product_taxonomy/models/serializers/return_reason/data/data_serializer.rb
Outdated
Show resolved
Hide resolved
dev/lib/product_taxonomy/models/serializers/category/data/data_serializer.rb
Show resolved
Hide resolved
dev/lib/product_taxonomy/models/serializers/category/dist/json_serializer.rb
Show resolved
Hide resolved
a9ab689 to
fbeff51
Compare
0bd1887 to
b0ea0e1
Compare
b0ea0e1 to
e95fa02
Compare
fbeff51 to
e9e183e
Compare
e95fa02 to
1c7d788
Compare
e9e183e to
bf3d52a
Compare
0c9ee93 to
ed70e6b
Compare
bf3d52a to
88ee4c5
Compare
ed70e6b to
f33f738
Compare
- Add ReturnReason Ruby model with validation - Add return reason dist serializers (JSON, TXT) - Add return reason data serializers (YAML, localizations) - Update Category model to load and validate return_reasons - Update category serializers to include return_reasons field - Integrate return reasons into generate_dist command - Generate dist files: return_reasons.json, return_reasons.txt - Regenerate categories.json and taxonomy.json with return_reasons
88ee4c5 to
ebcac4b
Compare
f33f738 to
6f43dd6
Compare

This PR implements the Ruby models and serialization layer for return reasons, integrating them into the existing taxonomy distribution pipeline. It also updates the category model to support return reasons. This enables both return reasons and categories (with their return reason mappings) to be published in distribution formats.
What's included:
Return Reason Model:
ReturnReasonRuby class with validation, following the same patterns asAttributeandCategorydata/return_reasons.ymlfind_by!,all)Return Reason Distribution Serializers: Generate public-facing output files
json_serializer.rb: Createsdist/en/return_reasons.jsonwith GIDs, names, handles, descriptionstxt_serializer.rb: Createsdist/en/return_reasons.txtin human-readable formatReturn Reason Data Serializers: Internal data management
data_serializer.rb: Exports to YAML format for data dumpslocalizations_serializer.rb: Syncs English localizations from data filesCategory Model Updates: Enhanced to load and validate return_reasons from YAML
category.rb: Loads return_reasons field, returnsReturnReasonobjectsCategory Serializer Updates: Include return reasons in distribution outputs
category/data/data_serializer.rb: Ensures all categories havereturn_reasons: []field (even if empty)category/dist/json_serializer.rb: Includes return reasons incategories.jsonandtaxonomy.jsonPipeline Integration: Updates
generate_dist_command.rbto include return reasons in the build processDesign decisions:
gid://shopify/ReturnReasonDefinition/{id}(see PR 1 for GID naming discussion and rationale)Generated outputs:
dist/en/return_reasons.json: 359 return reasons with full metadatadist/en/return_reasons.txt: Simple GID : Name format for quick referencedist/en/categories.json: Now includesreturn_reasonsarray for each categorydist/en/taxonomy.json: Regenerated with updated categoriesReview notes:
Attributevalidation patternsdev/lib/product_taxonomy.rbadd necessary requires for new classesbundle exec ./bin/product_taxonomy distto generate return reasons filesFiles to Include
dev/lib/product_taxonomy/models/return_reason.rbdev/lib/product_taxonomy/models/serializers/return_reason/dist/json_serializer.rbdev/lib/product_taxonomy/models/serializers/return_reason/dist/txt_serializer.rbdev/lib/product_taxonomy/models/serializers/return_reason/data/data_serializer.rbdev/lib/product_taxonomy/models/serializers/return_reason/data/localizations_serializer.rbdev/lib/product_taxonomy/models/category.rb(changes to support return_reasons)dev/lib/product_taxonomy/models/serializers/category/data/data_serializer.rb(ensures return_reasons field in YAML)dev/lib/product_taxonomy/models/serializers/category/dist/json_serializer.rb(includes return_reasons in output)dev/lib/product_taxonomy/commands/generate_dist_command.rbdev/lib/product_taxonomy.rb(changes to load return reasons)dist/en/return_reasons.jsondist/en/return_reasons.txtdist/en/categories.json(regenerated with return_reasons)dist/en/taxonomy.json(regenerated with return_reasons)Dependencies
Review Focus