Skip to content

[Предложение] Конструктор выражений для поиска файлов с визуальной составляющей #1125

Description

@drweb86

Description of the new feature or improvement

Идея - в улучшении поиска файлов на базе выражений пользователя, которые он бы мог писать на родном языке (языке перевода) или конструировать визуально.

Пример:

Текст:

(имя соответствует "*.ts;*.tsx" ) И (изменён за последние 7 дней) И НЕ (внутри папки "node_modules")

Визуально (чтобы пользователь мог накликать, и увидеть выражение)

ИМЯ  соответствует  "*.ts;*.tsx"     И
ФАЙЛ содержит "Super" И
ФАЙЛ не содержит "Проверка"
ДАТА ИЗМЕНЕНИЯ последние 7 дней    И
ПАПКА не node_modules

Типы условий и операторы

1. Имя файла

Оператор Пример
соответствует маске имя соответствует "invoice_*.pdf"
содержит имя содержит "черновик"
начинается с имя начинается с "IMG_"
заканчивается на имя заканчивается на "_final"
равно точно имя равно "отчёт.docx"
соответствует regex (для продвинутых) имя соответствует /^\d{4}-\d{2}/

2. Расположение (папка / путь)

Оператор Пример
внутри папки внутри папки "/Проекты" (с флагом «включая подпапки»)
не внутри папки не внутри папки "/Архив"
путь соответствует путь соответствует "*/2024/*"

3. Содержимое файла

Оператор Пример
содержит текст содержимое содержит "договор аренды"
не содержит текст содержимое не содержит "черновик"
соответствует regex содержимое соответствует /ИНН \d{10}/

4. Размер

Оператор Пример
больше размер больше 10 МБ
меньше размер меньше 1 КБ
между размер между 5 МБ и 50 МБ

5. Дата изменения / создания

Оператор Пример
после изменён после 01.01.2026
до создан до 15.03.2025
за последние N дней/месяцев изменён за последние 7 дней
между датами изменён между 01.06.2026 и 30.06.2026

6. Тип / вид файла

Оператор Пример
является тип является "изображение"
один из тип один из [PDF, Документ, Таблица]

Тип определяется по сигнатуре файла (magic bytes), а не по расширению — иначе .pdf, переименованный в .txt, обманет фильтр.

Составной пример

Найти PDF-файлы больше 5 МБ, изменённые за последние 30 дней, находящиеся в папке /Контракты, но не содержащие слово «черновик»:

(тип = PDF)
И (размер > 5 МБ)
И (изменён за последние 30 дней)
И (внутри папки "/Контракты")
И НЕ (содержимое содержит "черновик")

UI: два уровня

  1. Визуальный конструктор (по умолчанию) — строки вида [Поле ▾] [Оператор ▾] [Значение] [+ И/ИЛИ], вложенные группы с отступами. Основной способ работы для большинства пользователей.
  2. Текстовый режим — переключатель на компактный синтаксис для тех, кто предпочитает печатать:
    name:*.log AND modified:>7d AND NOT path:/archive/**
    
    Синхронизация визуальный ↔ текстовый может быть однонаправленной в первой версии (текст генерируется из дерева, без обратного парсинга).

Proposed technical implementation details (optional)

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions