Orchestrate the scan behind one cached, budgeted call

FeatureSecurityService
Ya
25 Agosti 2026, 16:50 UTC
Mwandishi
Kamo
Ahadi ya
66a4785

One response rather than three endpoints because it is one scan: the logo must be downloaded before its pixels can contribute a colour, and the colours are wanted on a step the member reaches before the backgrounds. Splitting it would mean scanning the site three times. The extractors stay pure readers over a parsed page. This is the only class that decides which candidates are worth a request and the only one that knows the response has a size ceiling -- which is what lets the extractors be tested against fixture HTML with no I/O at all. Assets are deduped on their BYTES, not their URL: the same logo served from /logo.png, a CDN path and the favicon is the normal case, and three identical cards is noise. A 200 is not accepted as HTML on its own -- parked domains, captive portals and JSON error pages all answer 200, and parsing one as a page yields a confidently empty scan. Failure is quiet everywhere: unreachable, unparseable or not-a-website all return 200 with empty lists. These three steps are optional and already work; telling a member their own site failed a scan on the screen where they are building their brand turns a bonus into a defect they did not cause and cannot fix.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei