From 57c1421f12a20a35e563bfc29e02acfa182e76aa Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Mon, 27 Oct 2025 15:52:44 +0000 Subject: [PATCH 1/7] docs: initial diagram --- docs/accessioning.mermaid | 206 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 docs/accessioning.mermaid diff --git a/docs/accessioning.mermaid b/docs/accessioning.mermaid new file mode 100644 index 0000000000..2a8246d42e --- /dev/null +++ b/docs/accessioning.mermaid @@ -0,0 +1,206 @@ +--- +title: Accessioning Dataflow +--- +%%{ init: { + 'flowchart': { 'curve': 'curvy' }, + 'theme': 'default' + } +}%% +flowchart LR + %% Legend + subgraph Legend [Legend] + direction TB + L_User(fa:fa-user User) + L_External(fa:fa-globe External System) + L_API(fa:fa-arrow-right-to-bracket API) + L_Interface(fa:fa-computer-mouse User Interface) + L_Model(fa:fa-square-caret-down Model) + L_Validation(fa:fa-check Validation) + L_Controller(fa:fa-arrows-spin Controller) + L_Function(fa:fa-caret-right Function) + L_Config(fa:fa-screwdriver-wrench Configuration) + L_Resource(fa:fa-file Resource) + L_Library(fa:fa-book Library) + L_Async(fa:fa-clock Asynchronous Process) + + L_User ~~~ L_External ~~~ L_API ~~~ L_Interface ~~~ L_Resource ~~~ L_Async + L_Config ~~~ L_Controller ~~~ L_Model ~~~ L_Validation ~~~ L_Function ~~~ L_Library + + InvisibleNodeA[ ] -. Config flow .-> InvisibleNodeB[ ] -- Process flow --> InvisibleNodeC[ ] == Accessioning path ==> InvisibleNodeD[ ] + end + + Legend ~~~ Providers + %% End Legend + + %% Nodes + %% Users + User_SeqOps(fa:fa-user SeqOps) + User_Neil(fa:fa-user Neil) + User_SSR(fa:fa-user SSRs) + User_LB_Users(fa:fa-user LB Users) + User_Developers(fa:fa-user Developers) + User_SS_Users(fa:fa-user SS Users) + External_EBI(fa:fa-globe EBI) + + %% User Interfaces + UI_SS_Sample_GAN(fa:fa-computer-mouse Generate Accession Number) + UI_SS_Study_GAN(fa:fa-computer-mouse Generate Accession Number) + UI_SS_Study_AAS(fa:fa-computer-mouse Accession all Samples) + UI_SS_Manifest_Upload(fa:fa-computer-mouse Manifest Upload) + + %% Models + MD_SS_Order(fa:fa-square-caret-down Order) + %% MD_SS_AccessionService(fa:fa-square-caret-down AccessionService) + MD_SS_Submission_AccessionBehaviour(fa:fa-square-caret-down Submission::AccessionBehaviour) + %% MD_SS_Sample(fa:fa-square-caret-down Sample) + %% MD_SS_Study(fa:fa-square-caret-down Study) + MD_SS_SampleManifest_Uploader(fa:fa-square-caret-down SampleManifest::Uploader) + + %% Controllers + CT_SS_Samples(fa:fa-arrows-spin Samples Controller) + %% CT_SS_Studies(fa:fa-arrows-spin Studies Controller) + + %% Functions + FN_SS_AccessionService_submit_sample_for_user(fa:fa-caret-right submit_sample_for_user) + FN_SS_AccessionService_submit_study_for_user(fa:fa-caret-right submit_study_for_user) + FN_SS_AccessionService_submit(fa:fa-caret-right submit) + FN_SS_Sample_accession(fa:fa-caret-right accession) + FN_SS_Sample_validate_accessionable(fa:fa-caret-right validate_accessionable!) + FN_SS_Study_accession_all_samples(fa:fa-caret-right accession_all_samples) + FN_SS_Studies_accession_all_samples(fa:fa-caret-right accession_all_samples) + FN_SS_Studies_accession(fa:fa-caret-right accession) + FN_SS_Studies_validate_ena_required_fields(fa:fa-caret-right validate_ena_required_fields!) + + %% Other Components + API_SS_OrderResource(fa:fa-arrow-right-to-bracket Order Resource) + CP_SS_Delayed_Job_Accessioning(fa:fa-clock DelayedJob::SampleAccessioningJob) + CP_SS_AccessionSubmission(fa:fa-book Accession::Submission) + CP_SS_SampleManifestExcel_Upload(SampleManifestExcel::Upload) + + %% Config + CF_SS_accession_samples(fa:fa-screwdriver-wrench accession_samples) + CF_SS_disable_accession_check(fa:fa-screwdriver-wrench disable_accession_check) + + %% Resources + RES_Manifest(fa:fa-file Manifest) + RES_Labware(Charge and Pass) + + %% Groupings of nodes + subgraph Providers + User_SeqOps + User_Neil + User_SSR + end + subgraph Limber + RES_Labware + end + subgraph Sequencescape + CF_SS_disable_accession_check + CF_SS_accession_samples + CP_SS_Delayed_Job_Accessioning + CP_SS_SampleManifestExcel_Upload + CP_SS_AccessionSubmission + MD_SS_Order + MD_SS_SampleManifest_Uploader + UI_SS_Manifest_Upload + + subgraph SS_API["SS API"] + API_SS_OrderResource + end + subgraph Samples + UI_SS_Sample_GAN + CT_SS_Samples + subgraph MD_SS_Sample[fa:fa-square-caret-down Sample] + FN_SS_Sample_accession + FN_SS_Sample_validate_accessionable + end + end + subgraph Studies + UI_SS_Study_GAN + UI_SS_Study_AAS + subgraph CT_SS_Studies[fa:fa-arrows-spin Studies Controller] + FN_SS_Studies_accession_all_samples + FN_SS_Studies_accession + FN_SS_Studies_validate_ena_required_fields + end + subgraph MD_SS_Study[fa:fa-square-caret-down Study] + FN_SS_Study_accession_all_samples + end + end + subgraph Submissions + MD_SS_Submission_AccessionBehaviour + end + subgraph MD_SS_AccessionService[fa:fa-square-caret-down AccessionService] + FN_SS_AccessionService_submit_sample_for_user + FN_SS_AccessionService_submit_study_for_user + FN_SS_AccessionService_submit + end + end + subgraph Consumers + User_LB_Users + User_SS_Users + User_Developers + end + + %% Edge connections between nodes + + %% Limber-related + User_SeqOps ---> RES_Labware --> User_LB_Users + RES_Labware --> API_SS_OrderResource --> MD_SS_Order + MD_SS_Order ---> MD_SS_Submission_AccessionBehaviour + CF_SS_disable_accession_check -.-> MD_SS_Submission_AccessionBehaviour + MD_SS_Submission_AccessionBehaviour -- exception email --> User_Developers + + %% Manifest upload + User_SSR --> RES_Manifest --> UI_SS_Manifest_Upload --> MD_SS_SampleManifest_Uploader --> CP_SS_SampleManifestExcel_Upload ---> FN_SS_Sample_accession + + FN_SS_Sample_validate_accessionable == > NO FEEDBACK > ==> CP_SS_Delayed_Job_Accessioning + CP_SS_Delayed_Job_Accessioning -- exception email --> User_Developers + CP_SS_AccessionSubmission -- exception email --> User_Developers + CP_SS_Delayed_Job_Accessioning <==> CP_SS_AccessionSubmission <==> External_EBI + + %% Sample generate accession number + User_Neil --> UI_SS_Sample_GAN + CF_SS_accession_samples -.-> CT_SS_Samples + UI_SS_Sample_GAN --> CT_SS_Samples + CT_SS_Samples <==> FN_SS_AccessionService_submit_sample_for_user <==> FN_SS_AccessionService_submit <==> External_EBI + CT_SS_Samples -- flash message --> User_SS_Users + + %% Study accession all samples + User_SSR --> UI_SS_Study_AAS + User_Neil --> UI_SS_Study_AAS + UI_SS_Study_AAS --> FN_SS_Studies_accession_all_samples + FN_SS_Studies_accession_all_samples <--> FN_SS_Study_accession_all_samples + FN_SS_Studies_accession_all_samples -- flash message --> User_SS_Users + FN_SS_Study_accession_all_samples <---> FN_SS_Sample_accession + FN_SS_Sample_accession <--> FN_SS_Sample_validate_accessionable + CF_SS_accession_samples -.-> FN_SS_Sample_accession + + %% Study generate accession number + User_Neil --> UI_SS_Study_GAN + UI_SS_Study_GAN --> FN_SS_Studies_accession --> FN_SS_Studies_validate_ena_required_fields + FN_SS_Studies_validate_ena_required_fields -- flash message --> User_SS_Users + CF_SS_accession_samples -.-> FN_SS_AccessionService_submit_study_for_user <==> FN_SS_AccessionService_submit + FN_SS_Studies_validate_ena_required_fields <--> FN_SS_AccessionService_submit_study_for_user + + %% User_Developers -. slack / email .-> User_SS_Users + + %% Subgraph styling + classDef invisible fill:transparent,stroke:transparent; + classDef legendTransparent fill:transparent,stroke:#333,stroke-width:1px; + classDef Application fill:#adecff; + classDef Configuration fill:#fffbad; + classDef Sequencescape fill:#adccf6; + classDef SequencescapeSection fill:#ADDCFB; + classDef SequencescapeObject fill:#ADACEC; + classDef Users fill:#FFD6F1; + + class InvisibleNodeA,InvisibleNodeB,InvisibleNodeC,InvisibleNodeD invisible; + class Legend legendTransparent; + class Providers,Consumers Users; + class Limber Application; + class Sequencescape Sequencescape; + class L_Config,CF_SS_disable_accession_check,CF_SS_accession_samples Configuration; + class SS_API,DelayedJob,Samples,Studies,Submissions SequencescapeSection; + class MD_SS_Study,MD_SS_AccessionService,MD_SS_Sample,CT_SS_Studies SequencescapeObject; + class Providers,Consumers Users; From e371f3f0ea73356baada492e6ae3f3e5136303b2 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Tue, 28 Oct 2025 14:31:21 +0000 Subject: [PATCH 2/7] docs: update diagram --- docs/accessioning.mermaid | 181 +++++++++++++++++++++++--------------- 1 file changed, 110 insertions(+), 71 deletions(-) diff --git a/docs/accessioning.mermaid b/docs/accessioning.mermaid index 2a8246d42e..eb764603dd 100644 --- a/docs/accessioning.mermaid +++ b/docs/accessioning.mermaid @@ -1,9 +1,9 @@ --- -title: Accessioning Dataflow +title: Accessioning Call Graph --- %%{ init: { 'flowchart': { 'curve': 'curvy' }, - 'theme': 'default' + 'theme': 'neutral' } }%% flowchart LR @@ -26,7 +26,7 @@ flowchart LR L_User ~~~ L_External ~~~ L_API ~~~ L_Interface ~~~ L_Resource ~~~ L_Async L_Config ~~~ L_Controller ~~~ L_Model ~~~ L_Validation ~~~ L_Function ~~~ L_Library - InvisibleNodeA[ ] -. Config flow .-> InvisibleNodeB[ ] -- Process flow --> InvisibleNodeC[ ] == Accessioning path ==> InvisibleNodeD[ ] + InvisibleNodeA[ ] -..-> | Data flow | InvisibleNodeB[ ] -- Function calls --> InvisibleNodeC[ ] == Accessioning function calls ==> InvisibleNodeD[ ] end Legend ~~~ Providers @@ -43,6 +43,7 @@ flowchart LR External_EBI(fa:fa-globe EBI) %% User Interfaces + UI_LB_Charge_and_Pass(fa:fa-computer-mouse Charge and Pass) UI_SS_Sample_GAN(fa:fa-computer-mouse Generate Accession Number) UI_SS_Study_GAN(fa:fa-computer-mouse Generate Accession Number) UI_SS_Study_AAS(fa:fa-computer-mouse Accession all Samples) @@ -57,7 +58,7 @@ flowchart LR MD_SS_SampleManifest_Uploader(fa:fa-square-caret-down SampleManifest::Uploader) %% Controllers - CT_SS_Samples(fa:fa-arrows-spin Samples Controller) + %% CT_SS_Samples(fa:fa-arrows-spin Samples Controller) %% CT_SS_Studies(fa:fa-arrows-spin Studies Controller) %% Functions @@ -66,15 +67,19 @@ flowchart LR FN_SS_AccessionService_submit(fa:fa-caret-right submit) FN_SS_Sample_accession(fa:fa-caret-right accession) FN_SS_Sample_validate_accessionable(fa:fa-caret-right validate_accessionable!) + FN_SS_Sample_validate_ena_required_fields(fa:fa-caret-right validate_ena_required_fields!) + FN_SS_Samples_accession(fa:fa-caret-right accession) FN_SS_Study_accession_all_samples(fa:fa-caret-right accession_all_samples) FN_SS_Studies_accession_all_samples(fa:fa-caret-right accession_all_samples) FN_SS_Studies_accession(fa:fa-caret-right accession) FN_SS_Studies_validate_ena_required_fields(fa:fa-caret-right validate_ena_required_fields!) + FN_SS_Studies_rescue_accession_errors(fa:fa-caret-right rescue_accession_errors) %% Other Components API_SS_OrderResource(fa:fa-arrow-right-to-bracket Order Resource) CP_SS_Delayed_Job_Accessioning(fa:fa-clock DelayedJob::SampleAccessioningJob) CP_SS_AccessionSubmission(fa:fa-book Accession::Submission) + CP_SS_AccessionRequest(fa:fa-book Accession::Request) CP_SS_SampleManifestExcel_Upload(SampleManifestExcel::Upload) %% Config @@ -83,7 +88,6 @@ flowchart LR %% Resources RES_Manifest(fa:fa-file Manifest) - RES_Labware(Charge and Pass) %% Groupings of nodes subgraph Providers @@ -91,50 +95,55 @@ flowchart LR User_Neil User_SSR end - subgraph Limber - RES_Labware + subgraph Application_Limber + UI_LB_Charge_and_Pass end - subgraph Sequencescape - CF_SS_disable_accession_check - CF_SS_accession_samples - CP_SS_Delayed_Job_Accessioning + subgraph Application_Sequencescape + UI_SS_Manifest_Upload + MD_SS_SampleManifest_Uploader CP_SS_SampleManifestExcel_Upload - CP_SS_AccessionSubmission MD_SS_Order - MD_SS_SampleManifest_Uploader - UI_SS_Manifest_Upload + MD_SS_Submission_AccessionBehaviour + CF_SS_accession_samples + CF_SS_disable_accession_check + CP_SS_Delayed_Job_Accessioning - subgraph SS_API["SS API"] - API_SS_OrderResource - end subgraph Samples UI_SS_Sample_GAN - CT_SS_Samples - subgraph MD_SS_Sample[fa:fa-square-caret-down Sample] - FN_SS_Sample_accession - FN_SS_Sample_validate_accessionable - end end subgraph Studies UI_SS_Study_GAN UI_SS_Study_AAS - subgraph CT_SS_Studies[fa:fa-arrows-spin Studies Controller] - FN_SS_Studies_accession_all_samples - FN_SS_Studies_accession - FN_SS_Studies_validate_ena_required_fields - end - subgraph MD_SS_Study[fa:fa-square-caret-down Study] - FN_SS_Study_accession_all_samples - end end - subgraph Submissions - MD_SS_Submission_AccessionBehaviour + subgraph SS_API["SS API"] + API_SS_OrderResource + end + subgraph CT_SS_Studies[fa:fa-arrows-spin Studies Controller] + FN_SS_Studies_accession_all_samples + FN_SS_Studies_accession + FN_SS_Studies_validate_ena_required_fields + FN_SS_Studies_rescue_accession_errors + end + subgraph MD_SS_Study[fa:fa-square-caret-down Study Model] + FN_SS_Study_accession_all_samples end - subgraph MD_SS_AccessionService[fa:fa-square-caret-down AccessionService] + subgraph CT_SS_Samples[fa:fa-arrows-spin Samples Controller] + FN_SS_Samples_accession + end + subgraph LB_SS_Accession[fa:fa-book Accession - newer] + CP_SS_AccessionSubmission + CP_SS_AccessionRequest + end + subgraph MD_SS_AccessionService[fa:fa-square-caret-down AccessionService Model - older] FN_SS_AccessionService_submit_sample_for_user FN_SS_AccessionService_submit_study_for_user FN_SS_AccessionService_submit end + subgraph MD_SS_Sample[fa:fa-square-caret-down Sample Model] + FN_SS_Sample_accession + FN_SS_Sample_validate_accessionable + FN_SS_Sample_validate_ena_required_fields + end end subgraph Consumers User_LB_Users @@ -144,63 +153,93 @@ flowchart LR %% Edge connections between nodes + Providers ~~~ Application_Limber ~~~ Consumers + Providers ~~~ Application_Sequencescape ~~~ Consumers + %% Limber-related - User_SeqOps ---> RES_Labware --> User_LB_Users - RES_Labware --> API_SS_OrderResource --> MD_SS_Order - MD_SS_Order ---> MD_SS_Submission_AccessionBehaviour - CF_SS_disable_accession_check -.-> MD_SS_Submission_AccessionBehaviour - MD_SS_Submission_AccessionBehaviour -- exception email --> User_Developers + User_SeqOps --> UI_LB_Charge_and_Pass -..-> User_LB_Users + UI_LB_Charge_and_Pass --> API_SS_OrderResource --> MD_SS_Order + MD_SS_Order --> MD_SS_Submission_AccessionBehaviour + MD_SS_Submission_AccessionBehaviour --> CF_SS_disable_accession_check + MD_SS_Submission_AccessionBehaviour -..-> | exception email | User_Developers %% Manifest upload - User_SSR --> RES_Manifest --> UI_SS_Manifest_Upload --> MD_SS_SampleManifest_Uploader --> CP_SS_SampleManifestExcel_Upload ---> FN_SS_Sample_accession - - FN_SS_Sample_validate_accessionable == > NO FEEDBACK > ==> CP_SS_Delayed_Job_Accessioning - CP_SS_Delayed_Job_Accessioning -- exception email --> User_Developers - CP_SS_AccessionSubmission -- exception email --> User_Developers - CP_SS_Delayed_Job_Accessioning <==> CP_SS_AccessionSubmission <==> External_EBI + User_SSR --> RES_Manifest -..-> UI_SS_Manifest_Upload --> MD_SS_SampleManifest_Uploader + MD_SS_SampleManifest_Uploader --> CP_SS_SampleManifestExcel_Upload ---> FN_SS_Sample_accession %% Sample generate accession number User_Neil --> UI_SS_Sample_GAN - CF_SS_accession_samples -.-> CT_SS_Samples - UI_SS_Sample_GAN --> CT_SS_Samples - CT_SS_Samples <==> FN_SS_AccessionService_submit_sample_for_user <==> FN_SS_AccessionService_submit <==> External_EBI - CT_SS_Samples -- flash message --> User_SS_Users + FN_SS_Samples_accession --> | 1. |CF_SS_accession_samples + UI_SS_Sample_GAN --> FN_SS_Samples_accession + FN_SS_Samples_accession --> | 2. | FN_SS_Sample_validate_ena_required_fields + FN_SS_Samples_accession ==> | 3. Validation Passed | FN_SS_AccessionService_submit_sample_for_user + FN_SS_AccessionService_submit_sample_for_user ==> FN_SS_AccessionService_submit + FN_SS_AccessionService_submit ==> External_EBI + FN_SS_Sample_validate_ena_required_fields -- Validation Failed --> FN_SS_Samples_accession + External_EBI -..-> | FROM AccessionService.submit | FN_SS_AccessionService_submit + FN_SS_AccessionService_submit -..-> | FROM submit_sample_for_user | FN_SS_Samples_accession + FN_SS_Samples_accession -..-> | flash message | User_SS_Users %% Study accession all samples User_SSR --> UI_SS_Study_AAS User_Neil --> UI_SS_Study_AAS UI_SS_Study_AAS --> FN_SS_Studies_accession_all_samples - FN_SS_Studies_accession_all_samples <--> FN_SS_Study_accession_all_samples - FN_SS_Studies_accession_all_samples -- flash message --> User_SS_Users - FN_SS_Study_accession_all_samples <---> FN_SS_Sample_accession - FN_SS_Sample_accession <--> FN_SS_Sample_validate_accessionable - CF_SS_accession_samples -.-> FN_SS_Sample_accession + FN_SS_Studies_accession_all_samples --> FN_SS_Study_accession_all_samples + FN_SS_Study_accession_all_samples -..-> | error messages | FN_SS_Studies_accession_all_samples + FN_SS_Studies_accession_all_samples -..-> | flash message | User_SS_Users + FN_SS_Study_accession_all_samples --> FN_SS_Sample_accession + FN_SS_Sample_accession -..-> | FROM accession_all_samples, error messages | FN_SS_Study_accession_all_samples + FN_SS_Sample_accession --> | 1. | CF_SS_accession_samples + FN_SS_Sample_accession --> | 2. | FN_SS_Sample_validate_accessionable + FN_SS_Sample_accession ==> | 3. > NO FEEDBACK > | CP_SS_Delayed_Job_Accessioning + CP_SS_Delayed_Job_Accessioning -..-> | exception email | User_Developers + CP_SS_Delayed_Job_Accessioning ==> CP_SS_AccessionSubmission ==> CP_SS_AccessionRequest ==> External_EBI + External_EBI -..-> | FROM Accession::Request | CP_SS_Delayed_Job_Accessioning %% Study generate accession number User_Neil --> UI_SS_Study_GAN - UI_SS_Study_GAN --> FN_SS_Studies_accession --> FN_SS_Studies_validate_ena_required_fields - FN_SS_Studies_validate_ena_required_fields -- flash message --> User_SS_Users - CF_SS_accession_samples -.-> FN_SS_AccessionService_submit_study_for_user <==> FN_SS_AccessionService_submit - FN_SS_Studies_validate_ena_required_fields <--> FN_SS_AccessionService_submit_study_for_user - - %% User_Developers -. slack / email .-> User_SS_Users + UI_SS_Study_GAN --> FN_SS_Studies_accession + FN_SS_Studies_accession --> | 1. | FN_SS_Studies_validate_ena_required_fields + FN_SS_Studies_accession --> | 2. | FN_SS_AccessionService_submit_study_for_user + FN_SS_Studies_accession -..-> | 3. IF success -- flash message | User_SS_Users + FN_SS_Studies_accession --> | IF error | FN_SS_Studies_rescue_accession_errors + FN_SS_AccessionService_submit_study_for_user --> CF_SS_accession_samples + FN_SS_AccessionService_submit_study_for_user ==> FN_SS_AccessionService_submit + FN_SS_AccessionService_submit -..-> | FROM submit_study_for_user | FN_SS_Studies_accession + FN_SS_Studies_rescue_accession_errors -..-> | flash message | User_SS_Users + + User_Developers -.-> | slack / email | User_SS_Users %% Subgraph styling + + %% lemon-chiffon: #fbf8cc + %% champagne-pink: #fde4cf + %% tea-rose-red: #ffcfd2 + %% pink-lavender: #f1c0e8 + %% mauve: #cfbaf0 + %% jordy-blue: #a3c4f3 + %% non-photo-blue: #90dbf4 + %% electric-blue: #8eecf5 + %% aquamarine: #98f5e1 + %% celadon: #b9fbc0 + + classDef default fill:#fafafa,stroke:#333,stroke-width:1px; + classDef invisible fill:transparent,stroke:transparent; classDef legendTransparent fill:transparent,stroke:#333,stroke-width:1px; - classDef Application fill:#adecff; - classDef Configuration fill:#fffbad; - classDef Sequencescape fill:#adccf6; - classDef SequencescapeSection fill:#ADDCFB; - classDef SequencescapeObject fill:#ADACEC; - classDef Users fill:#FFD6F1; + classDef application fill:#90dbf4; + classDef configuration fill:#fbf8cc; + classDef railsModel fill:#98f5e1; + classDef railsController fill:#b9fbc0; + classDef users fill:#f1c0e8; + classDef userInterface fill:#a3c4f3; class InvisibleNodeA,InvisibleNodeB,InvisibleNodeC,InvisibleNodeD invisible; class Legend legendTransparent; - class Providers,Consumers Users; - class Limber Application; - class Sequencescape Sequencescape; - class L_Config,CF_SS_disable_accession_check,CF_SS_accession_samples Configuration; + class Application_Sequencescape,Application_Limber application; + class L_Config,CF_SS_disable_accession_check,CF_SS_accession_samples configuration; class SS_API,DelayedJob,Samples,Studies,Submissions SequencescapeSection; - class MD_SS_Study,MD_SS_AccessionService,MD_SS_Sample,CT_SS_Studies SequencescapeObject; - class Providers,Consumers Users; + class L_Model,MD_SS_Study,MD_SS_AccessionService,MD_SS_Sample,MD_SS_SampleManifest_Uploader,MD_SS_Order,MD_SS_Submission_AccessionBehaviour railsModel; + class L_Controller,CT_SS_Samples,CT_SS_Studies railsController; + class L_User,User_SeqOps,User_Neil,User_SSR,User_LB_Users,User_SS_Users,User_Developers users; + class L_Interface,UI_LB_Charge_and_Pass,UI_SS_Sample_GAN,UI_SS_Study_GAN,UI_SS_Study_AAS,UI_SS_Manifest_Upload userInterface; From 6ce96cfa982b09a420b2b4bd303b4310b8e86f2d Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Tue, 28 Oct 2025 15:40:21 +0000 Subject: [PATCH 3/7] docs: only show call links --- .../accessioning-calls.mermaid} | 71 +++++-------------- 1 file changed, 17 insertions(+), 54 deletions(-) rename docs/{accessioning.mermaid => accessioning/accessioning-calls.mermaid} (74%) diff --git a/docs/accessioning.mermaid b/docs/accessioning/accessioning-calls.mermaid similarity index 74% rename from docs/accessioning.mermaid rename to docs/accessioning/accessioning-calls.mermaid index eb764603dd..1d570e5560 100644 --- a/docs/accessioning.mermaid +++ b/docs/accessioning/accessioning-calls.mermaid @@ -15,7 +15,6 @@ flowchart LR L_API(fa:fa-arrow-right-to-bracket API) L_Interface(fa:fa-computer-mouse User Interface) L_Model(fa:fa-square-caret-down Model) - L_Validation(fa:fa-check Validation) L_Controller(fa:fa-arrows-spin Controller) L_Function(fa:fa-caret-right Function) L_Config(fa:fa-screwdriver-wrench Configuration) @@ -24,26 +23,20 @@ flowchart LR L_Async(fa:fa-clock Asynchronous Process) L_User ~~~ L_External ~~~ L_API ~~~ L_Interface ~~~ L_Resource ~~~ L_Async - L_Config ~~~ L_Controller ~~~ L_Model ~~~ L_Validation ~~~ L_Function ~~~ L_Library + L_Config ~~~ L_Controller ~~~ L_Model ~~~ L_Function ~~~ L_Library InvisibleNodeA[ ] -..-> | Data flow | InvisibleNodeB[ ] -- Function calls --> InvisibleNodeC[ ] == Accessioning function calls ==> InvisibleNodeD[ ] end - Legend ~~~ Providers + Legend ~~~ User_Any %% End Legend %% Nodes %% Users - User_SeqOps(fa:fa-user SeqOps) - User_Neil(fa:fa-user Neil) - User_SSR(fa:fa-user SSRs) - User_LB_Users(fa:fa-user LB Users) - User_Developers(fa:fa-user Developers) - User_SS_Users(fa:fa-user SS Users) + User_Any(fa:fa-user Users) External_EBI(fa:fa-globe EBI) %% User Interfaces - UI_LB_Charge_and_Pass(fa:fa-computer-mouse Charge and Pass) UI_SS_Sample_GAN(fa:fa-computer-mouse Generate Accession Number) UI_SS_Study_GAN(fa:fa-computer-mouse Generate Accession Number) UI_SS_Study_AAS(fa:fa-computer-mouse Accession all Samples) @@ -90,14 +83,6 @@ flowchart LR RES_Manifest(fa:fa-file Manifest) %% Groupings of nodes - subgraph Providers - User_SeqOps - User_Neil - User_SSR - end - subgraph Application_Limber - UI_LB_Charge_and_Pass - end subgraph Application_Sequencescape UI_SS_Manifest_Upload MD_SS_SampleManifest_Uploader @@ -145,70 +130,48 @@ flowchart LR FN_SS_Sample_validate_ena_required_fields end end - subgraph Consumers - User_LB_Users - User_SS_Users - User_Developers - end %% Edge connections between nodes - - Providers ~~~ Application_Limber ~~~ Consumers - Providers ~~~ Application_Sequencescape ~~~ Consumers + Legend ~~~ User_Any + User_Any ~~~ Application_Sequencescape + CT_SS_Studies ~~~ MD_SS_Study ~~~ CT_SS_Samples ~~~ MD_SS_Sample %% Limber-related - User_SeqOps --> UI_LB_Charge_and_Pass -..-> User_LB_Users - UI_LB_Charge_and_Pass --> API_SS_OrderResource --> MD_SS_Order + User_Any --> API_SS_OrderResource --> MD_SS_Order MD_SS_Order --> MD_SS_Submission_AccessionBehaviour MD_SS_Submission_AccessionBehaviour --> CF_SS_disable_accession_check - MD_SS_Submission_AccessionBehaviour -..-> | exception email | User_Developers %% Manifest upload - User_SSR --> RES_Manifest -..-> UI_SS_Manifest_Upload --> MD_SS_SampleManifest_Uploader + User_Any --> RES_Manifest -..-> UI_SS_Manifest_Upload --> MD_SS_SampleManifest_Uploader MD_SS_SampleManifest_Uploader --> CP_SS_SampleManifestExcel_Upload ---> FN_SS_Sample_accession %% Sample generate accession number - User_Neil --> UI_SS_Sample_GAN - FN_SS_Samples_accession --> | 1. |CF_SS_accession_samples - UI_SS_Sample_GAN --> FN_SS_Samples_accession + User_Any --> UI_SS_Sample_GAN + FN_SS_Samples_accession ----> | 1. |CF_SS_accession_samples + UI_SS_Sample_GAN ----> FN_SS_Samples_accession FN_SS_Samples_accession --> | 2. | FN_SS_Sample_validate_ena_required_fields FN_SS_Samples_accession ==> | 3. Validation Passed | FN_SS_AccessionService_submit_sample_for_user FN_SS_AccessionService_submit_sample_for_user ==> FN_SS_AccessionService_submit FN_SS_AccessionService_submit ==> External_EBI - FN_SS_Sample_validate_ena_required_fields -- Validation Failed --> FN_SS_Samples_accession - External_EBI -..-> | FROM AccessionService.submit | FN_SS_AccessionService_submit - FN_SS_AccessionService_submit -..-> | FROM submit_sample_for_user | FN_SS_Samples_accession - FN_SS_Samples_accession -..-> | flash message | User_SS_Users %% Study accession all samples - User_SSR --> UI_SS_Study_AAS - User_Neil --> UI_SS_Study_AAS + User_Any --> UI_SS_Study_AAS UI_SS_Study_AAS --> FN_SS_Studies_accession_all_samples FN_SS_Studies_accession_all_samples --> FN_SS_Study_accession_all_samples - FN_SS_Study_accession_all_samples -..-> | error messages | FN_SS_Studies_accession_all_samples - FN_SS_Studies_accession_all_samples -..-> | flash message | User_SS_Users FN_SS_Study_accession_all_samples --> FN_SS_Sample_accession - FN_SS_Sample_accession -..-> | FROM accession_all_samples, error messages | FN_SS_Study_accession_all_samples FN_SS_Sample_accession --> | 1. | CF_SS_accession_samples FN_SS_Sample_accession --> | 2. | FN_SS_Sample_validate_accessionable - FN_SS_Sample_accession ==> | 3. > NO FEEDBACK > | CP_SS_Delayed_Job_Accessioning - CP_SS_Delayed_Job_Accessioning -..-> | exception email | User_Developers + FN_SS_Sample_accession ==> | 3. | CP_SS_Delayed_Job_Accessioning CP_SS_Delayed_Job_Accessioning ==> CP_SS_AccessionSubmission ==> CP_SS_AccessionRequest ==> External_EBI - External_EBI -..-> | FROM Accession::Request | CP_SS_Delayed_Job_Accessioning %% Study generate accession number - User_Neil --> UI_SS_Study_GAN + User_Any --> UI_SS_Study_GAN UI_SS_Study_GAN --> FN_SS_Studies_accession FN_SS_Studies_accession --> | 1. | FN_SS_Studies_validate_ena_required_fields FN_SS_Studies_accession --> | 2. | FN_SS_AccessionService_submit_study_for_user - FN_SS_Studies_accession -..-> | 3. IF success -- flash message | User_SS_Users FN_SS_Studies_accession --> | IF error | FN_SS_Studies_rescue_accession_errors - FN_SS_AccessionService_submit_study_for_user --> CF_SS_accession_samples - FN_SS_AccessionService_submit_study_for_user ==> FN_SS_AccessionService_submit - FN_SS_AccessionService_submit -..-> | FROM submit_study_for_user | FN_SS_Studies_accession - FN_SS_Studies_rescue_accession_errors -..-> | flash message | User_SS_Users - - User_Developers -.-> | slack / email | User_SS_Users + FN_SS_AccessionService_submit_study_for_user --> | 1. | CF_SS_accession_samples + FN_SS_AccessionService_submit_study_for_user ==> | 2. | FN_SS_AccessionService_submit %% Subgraph styling @@ -241,5 +204,5 @@ flowchart LR class SS_API,DelayedJob,Samples,Studies,Submissions SequencescapeSection; class L_Model,MD_SS_Study,MD_SS_AccessionService,MD_SS_Sample,MD_SS_SampleManifest_Uploader,MD_SS_Order,MD_SS_Submission_AccessionBehaviour railsModel; class L_Controller,CT_SS_Samples,CT_SS_Studies railsController; - class L_User,User_SeqOps,User_Neil,User_SSR,User_LB_Users,User_SS_Users,User_Developers users; + class L_User,User_Any users; class L_Interface,UI_LB_Charge_and_Pass,UI_SS_Sample_GAN,UI_SS_Study_GAN,UI_SS_Study_AAS,UI_SS_Manifest_Upload userInterface; From 77d88d9eb6f409ea3479301248bd0ac5a1d58260 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Tue, 28 Oct 2025 15:13:48 +0000 Subject: [PATCH 4/7] docs: add accessioning users --- docs/accessioning/accessioning-users.mermaid | 142 +++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 docs/accessioning/accessioning-users.mermaid diff --git a/docs/accessioning/accessioning-users.mermaid b/docs/accessioning/accessioning-users.mermaid new file mode 100644 index 0000000000..925158729b --- /dev/null +++ b/docs/accessioning/accessioning-users.mermaid @@ -0,0 +1,142 @@ +--- +title: Accessioning User Graph +--- +%%{ init: { + 'flowchart': { 'curve': 'curvy' }, + 'theme': 'neutral' + } +}%% +flowchart LR + %% Legend + subgraph Legend [Legend] + direction TB + L_User(fa:fa-user User) + L_API(fa:fa-arrow-right-to-bracket API) + L_Interface(fa:fa-computer-mouse User Interface) + L_Model(fa:fa-square-caret-down Model) + L_Controller(fa:fa-arrows-spin Controller) + L_Function(fa:fa-caret-right Function) + L_Resource(fa:fa-file Resource) + + L_User ~~~ L_Interface ~~~ L_API ~~~ L_Resource + L_Controller ~~~ L_Model ~~~ L_Function + + InvisibleNodeA[ ] -..-> | Data flow | InvisibleNodeB[ ] -- Function calls --> InvisibleNodeC[ ] + end + %% End Legend + + %% Nodes + %% Users + User_SeqOps(fa:fa-user SeqOps) + User_Neil(fa:fa-user Neil) + User_SSR(fa:fa-user SSRs) + + %% User Interfaces + UI_LB_Charge_and_Pass(fa:fa-computer-mouse Charge and Pass) + UI_SS_Sample_GAN(fa:fa-computer-mouse Generate Accession Number) + UI_SS_Study_GAN(fa:fa-computer-mouse Generate Accession Number) + UI_SS_Study_AAS(fa:fa-computer-mouse Accession all Samples) + UI_SS_Manifest_Upload(fa:fa-computer-mouse Manifest Upload) + + %% Models + MD_SS_Order(fa:fa-square-caret-down Order) + MD_SS_SampleManifest_Uploader(fa:fa-square-caret-down SampleManifest::Uploader) + + %% Functions + FN_SS_Samples_accession(fa:fa-caret-right accession) + FN_SS_Studies_accession_all_samples(fa:fa-caret-right accession_all_samples) + FN_SS_Studies_accession(fa:fa-caret-right accession) + + %% Other Components + API_SS_OrderResource(fa:fa-arrow-right-to-bracket Order Resource) + + %% Resources + RES_Manifest(fa:fa-file Manifest) + + %% Groupings of nodes + subgraph Providers + User_SeqOps + User_Neil + User_SSR + end + subgraph Application_Limber + UI_LB_Charge_and_Pass + end + subgraph Application_Sequencescape + UI_SS_Manifest_Upload + MD_SS_SampleManifest_Uploader + MD_SS_Order + + subgraph Samples + UI_SS_Sample_GAN + end + subgraph Studies + UI_SS_Study_GAN + UI_SS_Study_AAS + end + subgraph SS_API["SS API"] + API_SS_OrderResource + end + subgraph CT_SS_Studies[fa:fa-arrows-spin Studies Controller] + FN_SS_Studies_accession_all_samples + FN_SS_Studies_accession + end + subgraph CT_SS_Samples[fa:fa-arrows-spin Samples Controller] + FN_SS_Samples_accession + end + end + + %% Edge connections between nodes + Legend ~~~ Providers + + %% Limber-related + User_SeqOps --> UI_LB_Charge_and_Pass + UI_LB_Charge_and_Pass --> API_SS_OrderResource --> MD_SS_Order + + %% Manifest upload + User_SSR --> RES_Manifest -.-> UI_SS_Manifest_Upload --> MD_SS_SampleManifest_Uploader + + %% Sample generate accession number + User_SSR --> UI_SS_Sample_GAN + User_Neil --> UI_SS_Sample_GAN + UI_SS_Sample_GAN --> FN_SS_Samples_accession + + %% Study accession all samples + User_SSR --> UI_SS_Study_AAS + User_Neil --> UI_SS_Study_AAS + UI_SS_Study_AAS --> FN_SS_Studies_accession_all_samples + + %% Study generate accession number + User_Neil --> UI_SS_Study_GAN + UI_SS_Study_GAN --> FN_SS_Studies_accession + + %% Subgraph styling + + %% lemon-chiffon: #fbf8cc + %% champagne-pink: #fde4cf + %% tea-rose-red: #ffcfd2 + %% pink-lavender: #f1c0e8 + %% mauve: #cfbaf0 + %% jordy-blue: #a3c4f3 + %% non-photo-blue: #90dbf4 + %% electric-blue: #8eecf5 + %% aquamarine: #98f5e1 + %% celadon: #b9fbc0 + + classDef default fill:#fafafa,stroke:#333,stroke-width:1px; + + classDef invisible fill:transparent,stroke:transparent; + classDef legendTransparent fill:transparent,stroke:#333,stroke-width:1px; + classDef application fill:#90dbf4; + classDef railsModel fill:#98f5e1; + classDef railsController fill:#b9fbc0; + classDef users fill:#f1c0e8; + classDef userInterface fill:#a3c4f3; + + class InvisibleNodeA,InvisibleNodeB,InvisibleNodeC,InvisibleNodeD invisible; + class Legend legendTransparent; + class Application_Sequencescape,Application_Limber application; + class L_Model,MD_SS_SampleManifest_Uploader,MD_SS_Order railsModel; + class L_Controller,CT_SS_Samples,CT_SS_Studies railsController; + class L_User,User_SeqOps,User_Neil,User_SSR users; + class L_Interface,UI_LB_Charge_and_Pass,UI_SS_Sample_GAN,UI_SS_Study_GAN,UI_SS_Study_AAS,UI_SS_Manifest_Upload userInterface; From 9d5901621626baa6276ae4c8ed545227f53a44e1 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Wed, 29 Oct 2025 09:40:45 +0000 Subject: [PATCH 5/7] docs: update master diagram --- docs/accessioning/.gitignore | 3 + docs/accessioning/accessioning.mermaid | 248 +++++++++++++++++++++++++ 2 files changed, 251 insertions(+) create mode 100644 docs/accessioning/.gitignore create mode 100644 docs/accessioning/accessioning.mermaid diff --git a/docs/accessioning/.gitignore b/docs/accessioning/.gitignore new file mode 100644 index 0000000000..6cd6fa8833 --- /dev/null +++ b/docs/accessioning/.gitignore @@ -0,0 +1,3 @@ +# Ignore generated diagrams from Mermaid +*.png +*.svg diff --git a/docs/accessioning/accessioning.mermaid b/docs/accessioning/accessioning.mermaid new file mode 100644 index 0000000000..6cab20d33e --- /dev/null +++ b/docs/accessioning/accessioning.mermaid @@ -0,0 +1,248 @@ +--- +title: Accessioning Call Graph +--- +%%{ init: { + 'flowchart': { 'curve': 'curvy' }, + 'theme': 'neutral' + } +}%% +flowchart LR + %% Legend + subgraph Legend [Legend] + direction TB + L_User(fa:fa-user User) + L_External(fa:fa-globe External System) + L_API(fa:fa-arrow-right-to-bracket API) + L_Interface(fa:fa-computer-mouse User Interface) + L_Model(fa:fa-square-caret-down Model) + L_Controller(fa:fa-arrows-spin Controller) + L_Function(fa:fa-caret-right Function) + L_Config(fa:fa-screwdriver-wrench Configuration) + L_Resource(fa:fa-file Resource) + L_Library(fa:fa-book Library) + L_Async(fa:fa-clock Asynchronous Process) + + L_User ~~~ L_External ~~~ L_API ~~~ L_Interface ~~~ L_Resource ~~~ L_Async + L_Config ~~~ L_Controller ~~~ L_Model ~~~ L_Function ~~~ L_Library + + InvisibleNodeA[ ] -..-> | Data flow | InvisibleNodeB[ ] -- Function calls --> InvisibleNodeC[ ] == Accessioning function calls ==> InvisibleNodeD[ ] + end + + Legend ~~~ Providers + %% End Legend + + %% Nodes + %% Users + User_SeqOps(fa:fa-user SeqOps) + User_Neil(fa:fa-user Neil) + User_SSR(fa:fa-user SSRs) + User_LB_Users(fa:fa-user LB Users) + User_Developers(fa:fa-user Developers) + User_SS_Users(fa:fa-user SS Users) + External_EBI(fa:fa-globe EBI) + + %% User Interfaces + UI_LB_Charge_and_Pass(fa:fa-computer-mouse Charge and Pass) + UI_SS_Sample_GAN(fa:fa-computer-mouse Generate Accession Number) + UI_SS_Study_GAN(fa:fa-computer-mouse Generate Accession Number) + UI_SS_Study_AAS(fa:fa-computer-mouse Accession all Samples) + UI_SS_Manifest_Upload(fa:fa-computer-mouse Manifest Upload) + + %% Models + MD_SS_Order(fa:fa-square-caret-down Order) + %% MD_SS_AccessionService(fa:fa-square-caret-down AccessionService) + MD_SS_Submission_AccessionBehaviour(fa:fa-square-caret-down Submission::AccessionBehaviour) + %% MD_SS_Sample(fa:fa-square-caret-down Sample) + %% MD_SS_Study(fa:fa-square-caret-down Study) + MD_SS_SampleManifest_Uploader(fa:fa-square-caret-down SampleManifest::Uploader) + + %% Controllers + %% CT_SS_Samples(fa:fa-arrows-spin Samples Controller) + %% CT_SS_Studies(fa:fa-arrows-spin Studies Controller) + + %% Functions + FN_SS_AccessionService_submit_sample_for_user(fa:fa-caret-right submit_sample_for_user) + FN_SS_AccessionService_submit_study_for_user(fa:fa-caret-right submit_study_for_user) + FN_SS_AccessionService_submit(fa:fa-caret-right submit) + FN_SS_Sample_accession(fa:fa-caret-right accession) + FN_SS_Sample_validate_accessionable(fa:fa-caret-right validate_accessionable!) + FN_SS_Sample_validate_ena_required_fields(fa:fa-caret-right validate_ena_required_fields!) + FN_SS_Samples_accession(fa:fa-caret-right accession) + FN_SS_Study_accession_all_samples(fa:fa-caret-right accession_all_samples) + FN_SS_Studies_accession_all_samples(fa:fa-caret-right accession_all_samples) + FN_SS_Studies_accession(fa:fa-caret-right accession) + FN_SS_Studies_validate_ena_required_fields(fa:fa-caret-right validate_ena_required_fields!) + FN_SS_Studies_rescue_accession_errors(fa:fa-caret-right rescue_accession_errors) + + %% Other Components + API_SS_OrderResource(fa:fa-arrow-right-to-bracket Order Resource) + CP_SS_Delayed_Job_Accessioning(fa:fa-clock DelayedJob::SampleAccessioningJob) + CP_SS_AccessionSubmission(fa:fa-book Accession::Submission) + CP_SS_AccessionRequest(fa:fa-book Accession::Request) + CP_SS_SampleManifestExcel_Upload(SampleManifestExcel::Upload) + + %% Config + CF_SS_accession_samples(fa:fa-screwdriver-wrench accession_samples) + CF_SS_disable_accession_check(fa:fa-screwdriver-wrench disable_accession_check) + + %% Resources + RES_Manifest(fa:fa-file Manifest) + + %% Groupings of nodes + subgraph Providers + User_SeqOps + User_Neil + User_SSR + end + subgraph Application_Limber[Limber Application] + UI_LB_Charge_and_Pass + end + subgraph Application_Sequencescape[Sequencescape Application] + UI_SS_Manifest_Upload + MD_SS_SampleManifest_Uploader + CP_SS_SampleManifestExcel_Upload + MD_SS_Order + MD_SS_Submission_AccessionBehaviour + CF_SS_accession_samples + CF_SS_disable_accession_check + CP_SS_Delayed_Job_Accessioning + + subgraph Samples + UI_SS_Sample_GAN + end + subgraph Studies + UI_SS_Study_GAN + UI_SS_Study_AAS + end + subgraph SS_API["SS API"] + API_SS_OrderResource + end + subgraph CT_SS_Studies[fa:fa-arrows-spin Studies Controller] + FN_SS_Studies_accession_all_samples + FN_SS_Studies_accession + FN_SS_Studies_validate_ena_required_fields + FN_SS_Studies_rescue_accession_errors + end + subgraph MD_SS_Study[fa:fa-square-caret-down Study Model] + FN_SS_Study_accession_all_samples + end + subgraph CT_SS_Samples[fa:fa-arrows-spin Samples Controller] + FN_SS_Samples_accession + end + subgraph LB_SS_Accession[fa:fa-book Accession - newer] + CP_SS_AccessionSubmission + CP_SS_AccessionRequest + end + subgraph MD_SS_AccessionService[fa:fa-square-caret-down AccessionService Model - older] + FN_SS_AccessionService_submit_sample_for_user + FN_SS_AccessionService_submit_study_for_user + FN_SS_AccessionService_submit + end + subgraph MD_SS_Sample[fa:fa-square-caret-down Sample Model] + FN_SS_Sample_accession + FN_SS_Sample_validate_accessionable + FN_SS_Sample_validate_ena_required_fields + end + end + subgraph Consumers + User_LB_Users + User_SS_Users + User_Developers + end + + %% Edge connections between nodes + + Providers ~~~ Application_Limber ~~~ Consumers + Providers ~~~ Application_Sequencescape ~~~ Consumers + + CT_SS_Studies ~~~ MD_SS_Study ~~~ CT_SS_Samples ~~~ MD_SS_Sample + FN_SS_Samples_accession ~~~ FN_SS_AccessionService_submit_study_for_user + + %% Limber-related + User_SeqOps --> UI_LB_Charge_and_Pass -...-> User_LB_Users + UI_LB_Charge_and_Pass --> API_SS_OrderResource --> MD_SS_Order + MD_SS_Order --> MD_SS_Submission_AccessionBehaviour + MD_SS_Submission_AccessionBehaviour --> CF_SS_disable_accession_check + MD_SS_Submission_AccessionBehaviour -..-> | exception email | User_Developers + + %% Manifest upload + User_SSR --> RES_Manifest -..-> UI_SS_Manifest_Upload --> MD_SS_SampleManifest_Uploader + MD_SS_SampleManifest_Uploader --> CP_SS_SampleManifestExcel_Upload ---> FN_SS_Sample_accession + + %% Sample generate accession number + User_SSR --> UI_SS_Sample_GAN + User_Neil --> UI_SS_Sample_GAN + FN_SS_Samples_accession --> | 1. |CF_SS_accession_samples + UI_SS_Sample_GAN --> FN_SS_Samples_accession + FN_SS_Samples_accession --> | 2. | FN_SS_Sample_validate_ena_required_fields + FN_SS_Samples_accession ==> | 3. Validation Passed | FN_SS_AccessionService_submit_sample_for_user + FN_SS_AccessionService_submit_sample_for_user ==> FN_SS_AccessionService_submit + FN_SS_AccessionService_submit ==> External_EBI + FN_SS_Sample_validate_ena_required_fields -- Validation Failed --> FN_SS_Samples_accession + External_EBI -..-> | FROM AccessionService.submit | FN_SS_AccessionService_submit + FN_SS_AccessionService_submit -..-> | FROM submit_sample_for_user | FN_SS_Samples_accession + FN_SS_Samples_accession -..-> | flash message | User_SS_Users + + %% Study accession all samples + User_SSR --> UI_SS_Study_AAS + User_Neil --> UI_SS_Study_AAS + UI_SS_Study_AAS --> FN_SS_Studies_accession_all_samples + FN_SS_Studies_accession_all_samples --> FN_SS_Study_accession_all_samples + FN_SS_Study_accession_all_samples -..-> | error messages | FN_SS_Studies_accession_all_samples + FN_SS_Studies_accession_all_samples -..-> | flash message | User_SS_Users + FN_SS_Study_accession_all_samples --> FN_SS_Sample_accession + FN_SS_Sample_accession -..-> | FROM accession_all_samples, error messages | FN_SS_Study_accession_all_samples + FN_SS_Sample_accession --> | 1. | CF_SS_accession_samples + FN_SS_Sample_accession --> | 2. | FN_SS_Sample_validate_accessionable + FN_SS_Sample_accession ==> | 3. > NO FEEDBACK > | CP_SS_Delayed_Job_Accessioning + CP_SS_Delayed_Job_Accessioning -..-> | exception email | User_Developers + CP_SS_Delayed_Job_Accessioning ==> CP_SS_AccessionSubmission ==> CP_SS_AccessionRequest ==> External_EBI + External_EBI -..-> | FROM Accession::Request | CP_SS_Delayed_Job_Accessioning + + %% Study generate accession number + User_Neil --> UI_SS_Study_GAN + UI_SS_Study_GAN --> FN_SS_Studies_accession + FN_SS_Studies_accession --> | 1. | FN_SS_Studies_validate_ena_required_fields + FN_SS_Studies_accession --> | 2. | FN_SS_AccessionService_submit_study_for_user + FN_SS_Studies_accession -..-> | 3. IF success -- flash message | User_SS_Users + FN_SS_Studies_accession --> | IF error | FN_SS_Studies_rescue_accession_errors + FN_SS_AccessionService_submit_study_for_user --> CF_SS_accession_samples + FN_SS_AccessionService_submit_study_for_user ==> FN_SS_AccessionService_submit + FN_SS_AccessionService_submit -..-> | FROM submit_study_for_user | FN_SS_Studies_accession + FN_SS_Studies_rescue_accession_errors -..-> | flash message | User_SS_Users + + User_Developers -.-> | slack / email | User_SS_Users + + %% Subgraph styling + + %% lemon-chiffon: #fbf8cc + %% champagne-pink: #fde4cf + %% tea-rose-red: #ffcfd2 + %% pink-lavender: #f1c0e8 + %% mauve: #cfbaf0 + %% jordy-blue: #a3c4f3 + %% non-photo-blue: #90dbf4 + %% electric-blue: #8eecf5 + %% aquamarine: #98f5e1 + %% celadon: #b9fbc0 + + classDef default fill:#fafafa,stroke:#333,stroke-width:1px; + + classDef invisible fill:transparent,stroke:transparent; + classDef legendTransparent fill:transparent,stroke:#333,stroke-width:1px; + classDef application fill:#90dbf4; + classDef configuration fill:#fbf8cc; + classDef railsModel fill:#98f5e1; + classDef railsController fill:#b9fbc0; + classDef users fill:#f1c0e8; + classDef userInterface fill:#a3c4f3; + + class InvisibleNodeA,InvisibleNodeB,InvisibleNodeC,InvisibleNodeD invisible; + class Legend legendTransparent; + class Application_Sequencescape,Application_Limber application; + class L_Config,CF_SS_disable_accession_check,CF_SS_accession_samples configuration; + class SS_API,DelayedJob,Samples,Studies,Submissions SequencescapeSection; + class L_Model,MD_SS_Study,MD_SS_AccessionService,MD_SS_Sample,MD_SS_SampleManifest_Uploader,MD_SS_Order,MD_SS_Submission_AccessionBehaviour railsModel; + class L_Controller,CT_SS_Samples,CT_SS_Studies railsController; + class L_User,User_SeqOps,User_Neil,User_SSR,User_LB_Users,User_SS_Users,User_Developers users; + class L_Interface,UI_LB_Charge_and_Pass,UI_SS_Sample_GAN,UI_SS_Study_GAN,UI_SS_Study_AAS,UI_SS_Manifest_Upload userInterface; From 002d797d18e614e4ffd4f06b9660cfc0cde375e6 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Wed, 29 Oct 2025 10:18:35 +0000 Subject: [PATCH 6/7] docs: fix confusing diagram caused by reverse arrow --- docs/accessioning/accessioning.mermaid | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/accessioning/accessioning.mermaid b/docs/accessioning/accessioning.mermaid index 6cab20d33e..637d8dbfae 100644 --- a/docs/accessioning/accessioning.mermaid +++ b/docs/accessioning/accessioning.mermaid @@ -197,7 +197,8 @@ flowchart LR FN_SS_Sample_accession ==> | 3. > NO FEEDBACK > | CP_SS_Delayed_Job_Accessioning CP_SS_Delayed_Job_Accessioning -..-> | exception email | User_Developers CP_SS_Delayed_Job_Accessioning ==> CP_SS_AccessionSubmission ==> CP_SS_AccessionRequest ==> External_EBI - External_EBI -..-> | FROM Accession::Request | CP_SS_Delayed_Job_Accessioning + %% External_EBI .-> | FROM Accession::Request | CP_SS_Delayed_Job_Accessioning ...struggling to reverse the arrow here... + CP_SS_Delayed_Job_Accessioning -.- | <-- FROM Accession::Request | External_EBI %% Study generate accession number User_Neil --> UI_SS_Study_GAN From 04e29149ae27e759ad8af4268884b9b567361155 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Thu, 30 Oct 2025 10:18:22 +0000 Subject: [PATCH 7/7] docs: update overview diagram title --- docs/accessioning/accessioning.mermaid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/accessioning/accessioning.mermaid b/docs/accessioning/accessioning.mermaid index 637d8dbfae..853fe14622 100644 --- a/docs/accessioning/accessioning.mermaid +++ b/docs/accessioning/accessioning.mermaid @@ -1,5 +1,5 @@ --- -title: Accessioning Call Graph +title: Accessioning Call Graph Overview --- %%{ init: { 'flowchart': { 'curve': 'curvy' },