feat: update retry/failure logic and add separate queue for metadata extraction job. - #1484
Merged
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## development #1484 +/- ##
=================================================
+ Coverage 78.85% 80.19% +1.33%
- Complexity 4355 4385 +30
=================================================
Files 289 289
Lines 16114 16189 +75
=================================================
+ Hits 12706 12982 +276
+ Misses 3408 3207 -201
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
vcnainala
approved these changes
Jul 28, 2026
NishaSharma14
added a commit
that referenced
this pull request
Jul 31, 2026
* docs: update registration page * copilot review changes * build: fix syntax error in deploy-prod.sh * feat(draft): ignore hifsa and proc folders during sample detection Detect HiFSA folders by a .blob file or the folder name, and processed folders by the names proc or processed. Skip them in processFolder and exclude them from dataset creation so companion export folders are not promoted to separate samples. * feat(upload): show HiFSA PDF panel in submission step 2 Resolve the HiFSA report PDF for each study, stream it inline for preview, and render a collapsible HiFSA section above chemical composition when a report is available for the selected sample. * feat(sample): basis-explicit mixture composition (#1457) * feat(sample): add basis-explicit mixture composition schema Introduce mixture_compositions and mixture_components tables with PHP enums for basis and determination method, plus Sample relationships and sum validation helpers. Refs #566 * feat(sample): add mixture composition API and sync action Add SyncMixtureComposition action, form requests, API resources, study routes, and controller endpoints with authorization and eager loading. Refs #566 * feat(ui): add mixture composition deposition and display Replace ambiguous percentage field with basis selector, per-component shares, optional qNMR metadata, help modal, and public sample display. Refs #566 * test(sample): add mixture composition validation and feature tests Cover basis-aware sum validation, molecule store/update flows, metadata guards, authorization, and sort order preservation. Refs #566 * fix(deps): resolve high-severity npm audit advisories Bump postcss and add overrides for brace-expansion and minimatch so npm audit --audit-level=high passes without a breaking eslint upgrade. * fix(build): resolve PostCSS import order and Tailwind config warnings Move vue3-tour import before custom rules, replace deprecated purge with content, and drop redundant line-clamp plugin. * feat(search): add advanced NMR metadata search (#1462) * feat(nmr): denormalize NMRium spectra metadata on datasets Extract searchable spectra fields from NMRium info into indexed dataset columns, with a reprocessable Artisan command and live sync via NMRiumObserver. * feat(api): add public metadata search and facet endpoints Expose structured NMR metadata search over denormalized dataset columns, including dynamic facet values that narrow as filters are applied. * feat(search): add advanced metadata search UI and results page Replace free-text metadata fields with facet-driven filters on the hero advanced tab, sync form state in the URL, and load grouped study and dataset results from the metadata API. * docs(api): document metadata search endpoints and OpenAPI spec Add developer guide coverage for metadata search and facets, regenerate the OpenAPI document, and assert the new routes are present in the published spec. * test(commands): fix ExtractDatasetSpectraInfoCommand expectations Align skip-reprocess coverage with NMRiumObserver sync order and compare decimal spectra frequencies numerically after PostgreSQL persistence. * feat(profile): add default spectrum tab preference for NMRium viewers (#1467) Store per-user preferences as JSON on users, expose a profile form and an inline selector to pick a default 1D/2D spectrum tab, validate the value through a form request against the new DefaultSpectrumTab enum, and apply the preferred tab when NMRium loads in the editor, viewer and snapshot components (with postMessage now scoped to the NMRium origin instead of *). * fix(backup): prevent duplicate backup dispatch and normalize proxy vars for app/worker (#1485) * feat(stats): bin spectrometer frequencies and categorize experiments and probes Snap drifting spectrometer frequencies (599-602) to nominal fields so the statistics distributions and nucleus/frequency sunburst group cleanly, and align the proton_frequency search filter to the same bin range. Add experiment category (1H, 13C, DEPT, COSY, HSQC, HMBC, NOESY, ROESY, TOCSY, Other) and simplified probe type (family/temperature/gradient) distributions derived from raw pulse-sequence, experiment, and probe columns. * fix(nmr): attribute JCAMP spectra to their vendor when metadata is available When the sample folder only identifies the generic JCAMP exchange format, fall back to the NMRium manufacturer/vendor/title metadata before settling on the JCAMP label, so vendor-identifiable spectra are counted correctly. Remaining generic files are displayed as "Generic (JCAMP)". * feat(stats): add summary totals strip and fix mobile legend overflow Show compounds with spectra, samples with spectra, experimental spectra, and predicted spectra (0) at the top of the statistics page, with a note that nmrXiv archives only experimental data. The compounds figure reuses the public catalog count of molecules that have at least one public spectrum. Cap chart legends at a fixed height on all breakpoints so long lists scroll instead of expanding the page on mobile. * feat(nav): show Dashboard link for signed-in users on public header Replace the Login link with Dashboard on public pages when a user is authenticated, covering both desktop and mobile navigation. * feat(stats): redesign statistics page with sectioned layout Group charts into samples, experiments, and instrumentation sections with sticky navigation, a hero summary, and an API access callout at the end. * docs(api): document metadata stats distributions in OpenAPI spec Add reusable stats schemas and document all distribution keys on the metadata stats endpoint, including nested sunburst breakdowns. * fix(console): align verify-dataset-nmrium-info eager loads with extract Partial fsObject:id,name eager loading blocked loadMissing from hydrating relative_url, which inflated getNMRiumInfo counts during dataset verification. * feat(draft): persist HiFSA export data and surface scores in upload UI Move HiFSA PDF and CSV resolution into HifsaPdfResolver, store parsed Cosmic Truth scores on studies, and add score panels and plots to the upload workflow. * fix: include hifsa_data in the expected fillable attributes * fix(study): resolve fsObject via canonical fs_id Use belongsTo on studies.fs_id instead of hasOne on study_id so the study root is unambiguous when child folders share the same study_id, matching the Dataset relationship pattern and stabilizing NMRium path matching. * fix(study): wire study root fs_id in files views and tests Guard the Files tab when fsObject is missing, and add an asStudyRoot factory helper so study file tests set the canonical studies.fs_id link. * feat(tracking): view/download counters and download terms modal (#1468) * fix(download): require valid uuid and ignore user-supplied bucket Return 404 when the download uuid is missing, malformed or unknown instead of erroring, and always resolve the S3 bucket from filesystem config rather than trusting a request parameter. * feat(tracking): record public project, study and dataset views and downloads Add views/downloads counters to projects and studies, an InteractionTracker service that deduplicates per session, rolls dataset and study interactions up to the owning project, and only counts public entities (never reviewer previews). Views are recorded on the public pages and downloads via a rate-limited POST /track/download/{identifier} beacon; both counters are exposed through the project and study resources. * feat(downloads): show usage stats and gate downloads behind terms modal Display view and download counts on public project and sample pages, and require accepting the data-user terms (DownloadTermsModal backed by resources/markdown/download-terms.md) before any download starts. On acceptance the download-tracking beacon is fired and the download proceeds. * feat(public): display MIChI spectrum metadata on dataset page (#1470) Extract MIChI v1 fields with NMRium mapping from spectrum info and processing filters, and merge them into the public dataset spectrum info table ahead of remaining raw NMRium keys. Closes #993 * feat: update retry/failure logic and add separate queue for metadata extraction job. (#1484) * fix: update bagit generation job * build: Spectra Parser Build and Push * fix: update release tag name * fix: remove NMRKIT_API_URL from docker-compose.prod.yml * fix: file zip issue in metadata parser * test: improve test coverage for ProcessMetadataExtractionBagitGenerationJob * docs: update embargo info page (#1488) - add funding reference to embargo and publication deposition pages * docs: update dashboard page with update information and views (#1489) * fix(security): add rel="noopener noreferrer" to all target="_blank" (#1492) * fix(security): add rel="noopener noreferrer" to all target="_blank" links Replaces rel="noreferrer"/rel="noopener" and adds a missing rel attribute on every target="_blank" link across Vue components, Inertia Link components, Blade templates, JS-generated markup, PHP seeders and docs to mitigate reverse tabnabbing. Closes #1491 * fix(nmr): build a valid NMRium iframe URL when nmrium_url has no query string SpectraViewer and SpectraSnapshot appended "&id=" + Math.random() directly to the configured nmrium_url. When NMRIUM_URL has no existing query string (e.g. the bare config default), this produced an invalid URL such as https://nmrium.nmrxiv.org&id=0.123, so the iframe never navigated away from about:blank and the NMRium postMessage handshake failed silently, leaving the spectra viewer blank. Mirrors the separator logic already used in SpectraEditor.vue: use "?" when the base URL has no query string yet, otherwise "&". * fix(review): address Copilot PR #1492 review feedback - app.blade.php: quote the inline style (was invalid style=color:blue) and use a Tailwind class instead. - Validation.vue: convert the href-less <a target="_blank"> wrapper elements (project, samples, errors, warnings list items) to <div>, since they never navigate anywhere and target/rel had no effect. - LicenseSeeder.php: fix the CC BY-SA 4.0 and CC BY-SA 3.0 entries whose body "Note" link mistakenly pointed to the by-nc-sa/4.0 license text instead of the license matching their own url field. * build: back up release DB to Ceph before deployment (#1494) * build: back up release DB to Ceph before deployment Add a mandatory pre-deployment step that dumps the outgoing release's database, zips it, and uploads it to Ceph under a release-numbered path (nmrxiv/production/database/release-backup/), aborting the deployment if any step fails. * fix: copilot review changes --------- Co-authored-by: Venkata Nainala <mailcs76@gmail.com>
This was referenced Jul 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.