Fast-follow to #78. The backend already accepts forceProfile ('structured' | 'opengraph') in fetchViaJina, and every source now records its detected source_kind + parser_profile. What's missing is the human override path:
- A re-extract capability that reuses the cached Jina result (30-min cache) and re-runs
extractBib under a forced profile — no second network fetch.
- A UI control in SourceDetail: show the detected kind, with a 'parse as academic / parse as web page' toggle that calls the capability and refreshes the metadata.
This is the 'if detection is wrong, the human just presses the right button' half of the two-profile design.
Design context (parent): https://github.com/lossless-group/augment-it/blob/rebuild/turbo-rsbuild/context-v/issues/Jina-Metadata-Parser-Is-Blog-Only-Needs-Two-Profiles-And-Routing.md
Fast-follow to #78. The backend already accepts
forceProfile('structured' | 'opengraph') infetchViaJina, and every source now records its detectedsource_kind+parser_profile. What's missing is the human override path:extractBibunder a forced profile — no second network fetch.This is the 'if detection is wrong, the human just presses the right button' half of the two-profile design.
Design context (parent): https://github.com/lossless-group/augment-it/blob/rebuild/turbo-rsbuild/context-v/issues/Jina-Metadata-Parser-Is-Blog-Only-Needs-Two-Profiles-And-Routing.md