[0.9.11] - 2025-08-25
Some checks failed
Deploy on push / deploy (push) Failing after 3m6s

### 📦 Added
- **Автоматическое определение главного топика**: Система автоматически назначает главный топик при публикации
- **Валидация топиков при публикации**: Проверка наличия хотя бы одного топика перед публикацией

### 🏗️ Changed
- **Исправлена логика публикации черновиков**: Теперь автоматически устанавливается главный топик при отсутствии
- **Обновлена логика создания статей**: Гарантируется наличие главного топика во всех публикациях

### 🐛 Fixed
- **Исправлена критическая ошибка с публикацией статей**: Статьи теперь корректно появляются в фидах после публикации
- **Гарантирован главный топик**: Все опубликованные статьи теперь обязательно имеют главный топик (`main=True`)
This commit is contained in:
2025-08-25 02:30:56 +03:00
parent de94408e04
commit 94af896c2d
3 changed files with 46 additions and 5 deletions

View File

@@ -230,14 +230,23 @@ async def create_shout(_: None, info: GraphQLResolveInfo, inp: dict) -> dict:
try:
logger.debug(f"Linking topics: {[t.slug for t in input_topics]}")
main_topic = inp.get("main_topic")
for topic in input_topics:
# 🔍 Проверяем наличие главного топика
has_main_topic = bool(main_topic and any(t.slug == main_topic for t in input_topics))
for i, topic in enumerate(input_topics):
# 🩵 Если нет главного топика, делаем первый топик главным
is_main = (topic.slug == main_topic) if main_topic else (not has_main_topic and i == 0)
st = ShoutTopic(
topic=topic.id,
shout=new_shout.id,
main=(topic.slug == main_topic) if main_topic else False,
main=is_main,
)
session.add(st)
logger.debug(f"Added topic {topic.slug} {'(main)' if st.main else ''}")
if is_main:
logger.info(f"Set topic {topic.id} as main topic for shout {new_shout.id}")
except Exception as e:
logger.error(f"Error linking topics: {e}", exc_info=True)
return {"error": f"Error linking topics: {e!s}"}