Conversation
…ивности (PRI-212)
…ated_at) (PRI-212)
feat(mcp): keepalive сессии ревью — живость по последней активности (PRI-212)
…-less тулов (PRI-179)
feat: directed session-less тул implementations (входящие IMPLEMENTS) — PRI-179
…own → HTML (PRI-213) md_to_html вставлял URL из markdown-ссылки в href после html.escape, что не защищает от опасных схем (не HTML-метасимволы). Ссылка вне белого списка http(s)/mailto теперь деградирует в исходный текст вместо активного <a href>.
…I-213)
Второй GET /tasks/{uuid} в YougileBoard.create резолвит проектный код
(PRI-N). При сетевом сбое деградация до uuid сопровождалась warning'ом,
а при успешном 200-ответе без поля idTaskProject — нет: пользователь
получал ссылку на внутренний uuid без объяснения причины.
Если POST /issues вернул 200 без idReadable, YouTrackBoard.create молча считал создание успешным и так же молча не применял запрошенный target — теперь оба случая явно попадают в warnings. Заодно вынесен общий хелпер _resolve_project_id (create и _admin_status_fields резолвили project→id идентичным запросом) и уточнён контракт target_resolved в Protocol.create: семантика truthiness различается между YouGile (всегда непустой title колонки, в т.ч. как fallback) и YouTrack (None и при незапрошенном target, и при неудачном резолве) — потребитель должен сравнивать с запрошенным target, а не проверять на truthiness.
…I-213) MCPReviewService.create_task резолвит провайдера доски (по board_type или единственному настроенному), собирает канонический markdown через TaskDoc/render_markdown, зовёт provider.create и переиндексирует созданную задачу write-through (fetch_one → normalize → index_task), как finish_task. Fail-soft: сбой создания — словарь с ошибкой, сбой реиндекса — warning без падения вызова. Зарегистрирован одноимённый MCP-тул в mcp_server.py.
fetch_one раньше уходил сетевым запросом с пустой строкой (ключ YouTrack без idReadable) и полагался на общий except; теперь явный guard пропускает запрос и логирует причину. Добавлены зеркальные finish_task fail-soft тесты write-through для create_task (пустой ключ и сбой fetch_one).
…адач (PRI-213) Обычный sync_board инкрементален по watermark: задачи с timestamp <= курсора идут через дешёвый meta-refresh, минуя полную нормализацию. После смены normalize_yougile (markdown вместо HTML) старые задачи так и остались бы с HTML в сторе. force_renormalize=True на один прогон отключает watermark-гейт для всех задач провайдера — каждая проходит полный normalize → index_batch; курсор по-прежнему продвигается на max_ts, следующий обычный синк снова инкрементален.
feat(tasks): создание задач на досках YouGile/YouTrack (PRI-213)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
merge