Перейти к основному содержимому

Публичный каталог задач

Зачем нужно

Публичный каталог нужен для SEO, открытого образовательного продукта, привлечения преподавателей и демонстрации задач. Он является public-safe projection поверх task-bank, а не отдельной базой задач.

Ownership

ОбластьВладелец
canonical problem identitytask-bank
public eligibilitytask-bank
public-safe statement/metadatatask-bank
answer/solution visibility policytask-bank
page rendering and SEO deliverystorefront
lead capture and marketing blocksstorefront / CRM

URL rules

URLНазначение
/tasksкаталог
/tasks/<taskId>canonical task page
/tasks/topic/<path>topic landing/list
/tasks/source/<path>source landing/list
/tasks/tag/<slug>tag page
/tasks/search?q=search, noindex follow

Canonical задачи: /tasks/<taskId>. Topic/source path не входит в canonical URL задачи.

Projection fields

Public projection может отдавать:

  • task id;
  • public statement;
  • subject;
  • difficulty;
  • age/class range;
  • primary topic;
  • secondary topics collapsed;
  • publishable source label/path;
  • tags;
  • solution visibility according to policy;
  • related tasks links;
  • SEO metadata.

Public projection не отдаёт:

  • hidden answer key;
  • teacher-only notes;
  • moderation comments;
  • raw attempts;
  • closed competition tasks;
  • embargoed sources;
  • private organization tasks;
  • hidden rubrics.

Publication profile

problem_publication_profile хранит:

  • public_status;
  • public_after_date;
  • canonical_public_url;
  • primary_topic_id;
  • public_solution_policy;
  • license_status;
  • SEO overrides;
  • quality score.

Public task требует primary topic. Source license/status должен быть проверен до публикации.

Filters and SEO

Фильтры должны нормализоваться, чтобы не создавать бесконечные индексируемые комбинации. Search pages должны быть noindex follow. Topic/source/tag pages могут индексироваться, если они stable, полезны и не раскрывают закрытый контент.

Готовность

  • /tasks/<taskId> является canonical;
  • task page не зависит от topic path;
  • primary topic есть у каждой public task;
  • answer keys and hidden solutions protected;
  • restricted/unknown source не публикуется без решения;
  • storefront получает только public-safe payload.