Skip to content

Commit

Permalink
Add some BU documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
kosiakkatrina committed Jan 29, 2025
1 parent 5b3c574 commit 9c35ceb
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 2 deletions.
2 changes: 1 addition & 1 deletion docs/adr/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
has_children: true
nav_order: 11
nav_order: 12
---

# Architecture decisions
Expand Down
43 changes: 43 additions & 0 deletions docs/bulk_upload.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
nav_order: 11
---

# Bulk Upload

Bulk upload functionality allows users to upload multiple logs using a csv file.

## How Bulk Upload works

Bulk upload file can be uploaded for a specific log type (sales or lettings) for a specific year. During crossover period we ask which collection year the file is for, otherwise we assume the Bulk Upload is for the current year.

When a bulk upload file is successfully uploaded on the service, it:
- Saves a BulkUpload record in the database
- Uploads the file to S3
- Schedules `ProcessBulkUploadJob`

### Bulk upload service

There are several outcomes to a bulk upload:
- Successful upload
- Partial upload: upload has errors but partial logs can be created, need a user approval
- Errors in bulk upload: errors on important fields, or in the template. Logs can't be created and email with errors is sent to the user

![Bulk Upload Flow](https://raw.githubusercontent.com/communitiesuk/submit-social-housing-lettings-and-sales-data/main/docs/images/bu_flow_diagram.png)

### Bulk upload processing

Most of BU processing logic is in `BulkUpload::Processor`. It chooses the correct `Validator` and `LogCreator` classes for the log type and uses them to process the file.

![Bulk Upload Processing](https://raw.githubusercontent.com/communitiesuk/submit-social-housing-lettings-and-sales-data/main/docs/images/bu_processor.png)

Main differences between different collection years would be in `CsvParsers` and `RowParsers`.

#### Row parser
- Maps any values from a csv row into values saved internally
- Maps any validations into errors for bulk uploads by associating them with relevant fields
- Adds any additional validations that might only make sense in BU (for example, validation that might not relevant in single log submission due to routing)

### Csv parser
- Holds template specific information
- Header information
- Row and field information
2 changes: 1 addition & 1 deletion docs/documentation_website.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
nav_order: 12
nav_order: 13
---

# This documentation website
Expand Down
Binary file added docs/images/bu_flow_diagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/bu_processor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 9c35ceb

Please sign in to comment.