Skip to content

Some fixes#596

Merged
Nefrit0n merged 18 commits into
mainfrom
some_fixes
Jun 21, 2026
Merged

Some fixes#596
Nefrit0n merged 18 commits into
mainfrom
some_fixes

Conversation

@Nefrit0n

Copy link
Copy Markdown
Owner

No description provided.

Nefrit0n and others added 18 commits June 17, 2026 11:07
…inference (#593)

* feat(import): универсальный Generic JSON формат с гибкими типами и авто-выводом kind

- Убрано требование project_id из CanParse: он может приходить из query-параметра
- Добавлены flexSeverity/flexConfidence/flexStatus с UnmarshalJSON, принимающими
  как числа (0-N с клампингом), так и строки (critical/high/medium/low/open/fixed/…)
- Добавлен flexCWEIDs: принимает []int и []string ("CWE-79", "89") в любом сочетании
- Добавлено поле Status в genericFinding (ранее всегда хардкодился StatusOpen)
- Добавлен per-finding source_type для переопределения конвертного значения
- Добавлена функция inferGenericKind: выводит kind по набору полей когда не задан явно
  (порядок: secrets → iac → dast → sca → sast → other)
- Добавлены smoke-тесты: string/int severity, string status/confidence, cwe_ids mixed,
  per-finding source_type, CanParse без project_id, регрессия на SARIF/Trivy,
  все правила inferGenericKind включая "явный kind побеждает эвристику"
- Обновлён openapi.yaml: расширены описания /api/v1/import, добавлены схемы
  GenericImport и GenericFinding с документацией всех полей и допустимых значений

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PdATyy4Y4nma1qwGADedFY

* docs(import): документация универсального Generic JSON формата импорта

Новый файл docs/import-formats.md содержит:
- Обзор всех поддерживаемых форматов с признаками автодетекта
- Описание endpoint, авторизации и передачи project_id
- Таблицу полей Generic-конверта и finding с делением на обязательные/рекомендуемые/опциональные
- Таблицы допустимых значений severity/confidence/status/kind (числовые и строковые синонимы)
- Документацию эвристики авто-вывода kind (порядок проверок)
- Эталонный JSON со всеми полями и минимальный валидный пример
- Примеры для каждого kind (sca/sast/dast/iac/secrets)
- Описание механизма дедупликации по fingerprint
- Раздел частых проблем с причинами и решениями

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PdATyy4Y4nma1qwGADedFY

---------

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Параметр `sources` приходил с фронтенда, но бэкенд его игнорировал:
не было ни парсинга в findings handler, ни поля в FindingsFilter,
ни условия в WHERE. Добавлен SourceTypes в фильтр, условие
`f.source_type = ANY(...)` в buildBaseWhere и парсинг query-параметра.
Фасет by_source теперь исключает собственную ось при подсчёте.


Claude-Session: https://claude.ai/code/session_013UgZM7JCkw3n4v4yWUwBV6

Co-authored-by: Claude <noreply@anthropic.com>
Constrain the settings form to a centered max-width container, group each
section into bordered panels, strengthen labels and visibility toggle, and
tidy the save footer. Visual-only — form state, handlers and API unchanged.


Claude-Session: https://claude.ai/code/session_01PvW3zCqsEw1rCgHSxp6o7m

Co-authored-by: Claude <noreply@anthropic.com>
@Nefrit0n Nefrit0n merged commit 8657260 into main Jun 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant