2024-04-24 ChromSword AQbD Manager Task

 

Uzdevums

  1. Guthub izveidot master branch jaunu Visual Studio Solution un WPF based projektu pēc līdzīgas struktūras kā ChromSword Offline https://github.com/asya-ai/chromsword-aqbd

  2. Projekta uzbūve

    1. ChromSword AQbD Manager.exe

    2. ChromSword.AQbD.UserInterface.dll (komponentes, pēc iespējas vairāk visu dalīt komponentēs)

    3. ChromSword.AQbD.Controllers.dll (strādā ar models klasēm, pārsvarā static functions, kuras izsauc UI)

      1. ControllerClientServerAPI, lai ar JSON api komunicētu ar Client Server (esošajā ChromSword 5 projektā jau ir piemēri kā to darīt)

    4. ChromSword.AQbD.Models.dll. serializējamas klases, kurās nav nekādu loģikas funkciju, tikai dati, bet jāņem vērā, ka nebūs AQbD projekta fails, viss glabāsies PostgreSQL datu bāzē un komunicēs ar Client Server NodeJS API, kuru pievienosim no šiem (bet AQbD jāvar strādāt stand-alone no jebkādiem citiem CS produktiem, bet vajadzēs varēt strādāt arī ar pilnu ChromSword integrāciju)

      1. https://bitbucket.org/evaldsurtans/chromsword5-1-client-server-nodejs ^ Šo projektu paralēli arī vajadzēs uzlikt (izstrādājot AQbD šim jabūt uzinstalētam un palaistam Kalniņš var pastāstī kā palaist)

      2. https://bitbucket.org/evaldsurtans/git-bitbucket.org-evaldsurtans-chromsword5-1-admin-console ^ Admin console atstāsim NodeJS Electron kāda viņa ir tikai papildināsim šajā repo, ja buildo priekš AQbD, tad citas funkcijas (izstrādājot AQbD šim jabūt uzinstalētam un palaistam Kalniņš var pastāstī kā palaist) Šis primāri, lai lietotāja autorizāciju panāktu

      3. https://bitbucket.org/evaldsurtans/chromsword5-5-report-service

        ^ šis doma, ka ja pazūd tīkla savienojums ar client server, lai ziņas nonāktu līdz tam velāk

  3. Komunikācijas un datu apmaiņas diagramma

    Optionaly
    SQL
    API
    API
    API
    API
    file system
    API
    ReportViewer
    Developer etc
    Client Server
    PostgreSQL DB
    AQbD
    AdminConsole
    ReportService
  4. Lietotāju saskarņu secība

    1. Vispirms implementēt tikai Step “Method Definition” (ar domu, ka vēlāk būs arī projektu grupu izvēles skats un login skati) Uztaisīt, ka UX funkcionāli aizpilda datu struktūras un ar File -> New var nodzēst. Pat nevajag sākotnēji sagalabāt.image-20240424214546132

  1. Paralēli otrs izstrādājs var taisīt integrāciju ar Client Sever un izveidot autentifikāciju un projektu grupu ielādi (jāņem cērā gan, ka jāizveido papildus tabula, kur glabāsies katrai grupai AQbD dati tā lai parastais ClientServer 5.5 netiktu salauzts) image-20240424214801396

 

Materiāli

Pilns programmas apraksts: https://share.yellowrobot.xyz/quick/2024-4-24-8DEBC09D-2F83-4F26-9767-ABAAB49BA395.html

Figma pēdējie dizaini (kuri nepārtraukti mainās): https://www.figma.com/file/OFlqcqPy9eLsBxb2dLrXRh/ChromSword?type=design&node-id=2975%3A284405&mode=design&t=6TNsCNjcJ16Qbk5r-1

image-20240424211443097

 

Nepieciešams izveidot Model klases (serializējamas) bez nekādām funkcijām, kas apstrādā datus (tās jāliek Controllers klasēs). Izmantojiet PascalCase klašu nosaukumiem. Vajag izveidot datu struktūras šādām klasēm. Šīs būs vēlāk saistītas un ielādētas no ChromSword 5.5 modificētas versijas (PostgreSQL datu bāzes). Pašu lietotāju administrēšanu veiksim izmantojot ChromSword 5.5 AdminConsole, kurai būs veiktas izmaiņas.

1
1
1
n
1
n
1
n
1
n
1
n
1
n
1
n
1
n
n
1
n
1
n
1
n
1
n
1
n
1
aqbd_project_groups
aqbd_project_group_id: PK
project_group_id: FK
def_physico_chemical_properties_desc: text
def_critical_atributes_desc: text
def_critical_parameters_desc: text
risk_critical_quality_attributes_desc: text
risk_quality_target_product_profile_desc: text
risk_degradation_products_desc: text
risk_notes_desc: text
screening_materials_desc: text
screening_mobile_phase_desc: text
screening_sample_characteristics_desc: text
aqbd_concentration_gradient
aqbd_concentration_gradient_id: PK
aqbd_project_group_id: FK
concentration_gradient_json: text
aqbd_instruments
aqbd_instrument_id: PK
aqbd_project_group_id: FK
instrument_id: FK
aqbd_fishbone
aqbd_fishbone_id: PK
aqbd_project_group_id: FK
design_of_experiments: enum
fishbone_json: text
aqbd_runs
aqbd_run_id: PK
aqbd_project_group_id: FK
aqbd_sample_id: FK
aqbd_compound_id: FK
aqbd_sample_preparation_id: FK
aqbd_fishbone_id: FK
aqbd_concentration_gradient_id: FK
project_id: FK
report_id: FK
run_name: str
run_desc: text
run_json: text
run_status: str
run_rating: int
run_notes: text
run_created: datetime
run_modified: datetime
run_is_deleted: bool
is_executed: bool
is_template: bool
aqbd_samples
aqbd_sample_id: PK
aqbd_project_group_id: FK
sample_name: str
sample_desc: text
aqbd_compound
aqbd_compound_id: PK
aqbd_sample_id: FK
aqbd_project_group_id: FK
compound_name: str
compound_desc: str
compound_structure_json: text
aqbd_sample_preparation
aqbd_sample_preparation_id: PK
aqbd_project_group_id: FK
aqbd_sample_id: FK
sample_preparation_name: str
sample_preparation_desc: text
aqbd_attachments
aqbd_attachments_id: PK
aqbd_project_group_id: FK
order_idx: int
attachment_name: str
attachment_pages: str
attachment_notes: text
attachment_url: text
attachment_file_uuid: str
user_id: FK
created: datetime
modified: datetime
is_deleted: bool
project_groups
project_group_id: PK
...
projects
project_id: PK
project_group_id: FK
...
reports
report_id: PK
project_id: FK
project_group_id: FK
instrument_id: FK
...
instruments
instrument_id: PK
...