About the project
Each publication goes through several processing steps. The interface needed to show its source, OCR output, classification and the operator's decision. Errors and queues have separate screens.
The system collected publications, ran OCR and classification, then showed them to an operator for review. The service, its data and backups have been removed from the VPS. Anonymized screenshots, diagrams and measurements are kept here.
- Archived project; service decommissioned. There is no WTG demo link or recovery option.
- Job statuses and confidence values are not measurements of OCR or model accuracy.
- Legacy noVNC and unavailable sections are not presented as working features.
- Observed web memory growth to approximately 3.8 GiB is documented as an observation; the code-level root cause was not established.
Screenshots, diagrams and source evidence retain their original language; captions and descriptions are translated.
Architecture and diagrams
- Collection and long-running processing are separate jobs with leases and heartbeats.
- OCR is separate from the web service, with its own queue, statuses and attempts.
- Source publications, intermediate decisions and final materials have different roles.
- The archive contains only anonymized images, documentation and aggregates; the working database, sessions and backups were not retained.
Code map: files and dependencies
This map is tied to version 21841487f524. The table lists the screen or API, related module and data.
| Feature | Screen / API | Module | Data / verification |
|---|---|---|---|
| Authorization | accounts | services/auth.py, vk_user_token.py | auth_accounts, account_communities; browser/API states are considered separately |
| Job creation and execution | schedules, processing | services/admin_control.py, cli/admin_worker.py | admin_jobs, admin_job_step_logs; claim, heartbeat, retry, stale cleanup |
| API scheduling | schedules, group-pool | services/api_posts_schedule.py | api_schedule_steps, api_group_pool_items; schedule generation, queue, cooldown |
| Collection | groups, posts | services/crawler.py, vk_parsers.py | communities, posts, post_media; source, rereading, normalization |
| Profile and marketplace | groups tabs, market | community_profile.py, community_market.py, community_services.py | profile, products, services; filters and group association |
| Quick selection | group-pool | fast_screen_pool.py, fast_wall_probe.py | fast_screen_pool_states, fast_screen_pool_checks; lease, due rows, retention |
| Pipeline | pipeline | services/content_pipeline.py | content_pipeline_runs/posts/items; stages and persisted results |
| OCR | processing, post details | ocr.py, ocr_jobs.py, cli/ocr_worker.py, cli/ocr_sidecar.py | ocr_jobs, post_media; completed/failed, attempts, timeout |
| Canonical materials | results | publication_materials.py, publication-intelligence | publication_decisions/materials/media; decision-to-source relationship and revision |
| Labeling and teacher | labels, processing | publication_teacher.py | teacher runs/results/applications; labeling, discrepancies, application |
| Logs | logs, file-logs | web/app.py, helpers file logs | admin_job_logs, step logs, files; event and file traces |
| Delivery | Telegram / MAX | separate bot repositories | canonical output + bot tables; downstream consumes prepared data |
Using the code map
- Before making a change, find the feature and trace its links to the API, state and storage.
- Check inputs, errors, repeated events and dependent workflows.
- After making a change, update the map and affected diagrams alongside the code.
- Run the related checks and link the new evidence to the source version.
Workflows and API
- Browse anonymized schedules, groups, pipeline and materials.
- Match a screen to its code-map entry and data diagram.
- Open queue/history aggregates and read the measurement date and limitations.
- Review the deletion record and disk/RAM comparison before and after decommissioning.
Verification of the published version
CI: prod-deploy ↗ · 61c78116 · historical run of a different version · 2026-06-16T11:57:17Z
CI: prod-deploy ↗ · 1299a357 · historical run of a different version · 2026-06-16T11:45:01Z
- 30 sanitized UI images checked before deletion
- Deletion and authoritative DNS removal verified
These checks apply to the listed version. Business metrics and model quality on an independent dataset were not measured.
Measurements
- 30 meaningful screenshots of the actual interface retained.
- Each screenshot includes its date, scenario and code revision.
- 527,718 publications and 29,092 OCR jobs recorded; these are different entities, not quality metrics.
- WTG was deleted after the local archive was verified; before cleanup, its directory occupied approximately 104 GiB.
Running and operating
WTG is excluded from portfolio rollback. /opt/wtg, its containers, data, backups, access credentials, configurations and DNS records were deleted after the local archive was verified.
GitHub source code and shared OS logs were retained as agreed. Dedicated deployment workflows were disabled and WTG keys removed.
The result confirms logical deletion of managed data. Physical erasure of the provider's storage blocks cannot be confirmed from inside a guest VPS.
The server checkout and published audited repository have different SHAs. Each evidence source is identified separately; no equivalence is claimed between the old image and the checkout contents.
Stack
| Python / FastAPI / Jinja | Operations admin interface, JSON API and orchestration. |
|---|---|
| PostgreSQL / SQLAlchemy / Alembic | Publications, jobs, decision versions, materials and migrations. |
| PaddleOCR | Separate OCR sidecar and worker. |
| Docker / Nginx / systemd | Former deployment of seven services and background jobs. |
Materials and source code
Code-map documents: June 2026; retained data history: June–July. Archiving and deletion: 7 September 2026.
The evidence archive retains its original language.