Browse Source

CLDC-3852 Add some BU documentation (#2920)

* Add some BU documentation

* lint

* Update BU outcomes section
pull/2929/head
kosiakkatrina 4 days ago committed by GitHub
parent
commit
50abde7765
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      docs/adr/index.md
  2. 47
      docs/bulk_upload.md
  3. 2
      docs/documentation_website.md
  4. BIN
      docs/images/bu_flow_diagram.png
  5. BIN
      docs/images/bu_processor.png

2
docs/adr/index.md

@ -1,6 +1,6 @@
---
has_children: true
nav_order: 11
nav_order: 12
---
# Architecture decisions

47
docs/bulk_upload.md

@ -0,0 +1,47 @@
---
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. Email to error report is sent to the user and the bulk upload needs a user approval
- Errors in bulk upload: errors on important fields, or in the template. Logs can't be created and an email with errors (or a link to error report) 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
docs/documentation_website.md

@ -1,5 +1,5 @@
---
nav_order: 12
nav_order: 13
---
# This documentation website

BIN
docs/images/bu_flow_diagram.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
docs/images/bu_processor.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Loading…
Cancel
Save