Files
DemonGatanjieu-Anomalous_Mo…/docs/architecture
DemonGatanjieuandClaude Opus 5.5 e466e9dfcf feat(scan): list unmatched and unscanned models, show each scan's result, explain why
The scan page now says which models are unmatched or not scanned yet (type, folder,
why Civitai had nothing) and what each scan did, model by model; rows open the model,
scan it, look it up again or search Civitai. The progress box shows the counts and,
when floating, a way to the result. The activity log records a scan when it ends with
its result, and model edits (from -> to) and deletions (files moved) in detail.

- scraper.py reports one JSON line per changed model (--report-file); a failing model
  no longer ends the scan. Unmatched info keeps why (not_found / network / offline);
  online scans look network/offline ones up again. After two models in a row without
  an answer the rest of the scan infers from the files (--civitai-down for the next
  folders) instead of waiting out every timeout.
- civitai_client.py: the network side moved out of scraper.py; tells a 404 from
  Civitai being unreachable (CivitaiUnreachable).
- api/scan_report.py: ScanJob turns a scan's reports into one result, kept as the last
  scan (/anomalous/last_scan) and logged; /anomalous/scan_model opens a listed model.
- /anomalous/scan_all takes picked or listed models as `targets`, so one scan has one
  result; scan_summary lists unmatched and new models with their reason.
- Activity middleware takes details a handler attaches (request[ACTIVITY_DETAIL]).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 02:52:17 +08:00
..

Architecture Topic Guide

Start with the repository-root ARCHITECTURE.md, then open only the topic needed for the current task.

  • backend.md: Python routes, filesystem safety, persistence, scan state, model sidecars, and backend performance.
  • frontend.md: extension bootstrap, UI ownership, localization, media lifecycle, panel state, and graph mutations.
  • recipes.md: Workflow Recipes, packages, galleries, Parameter Notebooks, prompt roles, and recipe-to-model transitions.
  • material-library.md: generated-image snapshots, material assets, node-block reuse, and Model Doctor handoff.
  • recipe-model-lifecycle.md: authoritative model fields, Hash synchronization, local matching, partial append, and note privacy.
  • model-resolution.md: model provenance, Model Doctor, hash injection, deep scanning, and recovery policy.
  • ../decisions/README.md: concise records of product and architectural decisions that still explain current behavior.

These documents describe current contracts rather than implementation history. For exact changes, use Git history. For user-visible releases, use CHANGELOG.md. For recurring implementation traps, use .agents/logs/ai_lessons.md.