Skip to content

Conversation

@konard
Copy link
Contributor

@konard konard commented Sep 10, 2025

Summary

Реализована система фильтрации для списка истории диалогов, позволяющая пользователям фильтровать историю по различным критериям:

  • Фильтрация по типу диалога: Free, JS, React, TypeScript, Vue, Git, HTML/CSS, Go, собеседования, LeetCode, тренировки
  • Фильтрация по датам: диапазон дат последнего обновления
  • Расширенный поиск: совмещение текстового поиска с фильтрами
  • Управление фильтрами: кнопки применения и сброса всех фильтров

Backend изменения

HistoryController

  • Добавлены параметры type, lessonName, dateFrom, dateTo в GET /history
  • Полная обратная совместимость с существующим API

HistoryRepository

  • Новый метод findByVkUserIdWithFilters с SQL-запросом для фильтрации
  • Поддержка сложных условий фильтрации с NULL-безопасностью

HistoryService

  • Расширенный метод getAllHistory с поддержкой всех фильтров
  • Сохранен старый метод для обратной совместимости

Frontend изменения

Новый компонент HistoryFilter

  • Интуитивный интерфейс с селектами и полями дат
  • Responsive дизайн для мобильных устройств
  • Интеграция с существующей системой состояний

Расширенное состояние

  • Новые поля в GptHistoryDialogs: typeFilter$, dateFromFilter$, dateToFilter$
  • Методы управления: setTypeFilter, clearAllFilters, applyFilters

Обновленный API клиент

  • Поддержка дополнительных параметров в getHistoryById
  • Правильное построение URL с URLSearchParams

UI/UX улучшения

  • Кнопка фильтра (иконка воронки) в заголовке панели истории
  • Выпадающая панель фильтров при нажатии
  • Кнопки "Применить фильтры", "Сбросить", "Отмена"
  • Сохранение состояния фильтров между использованиями

Техническое решение

// Пример использования нового API
await getHistoryById(
  pageNumber: 0,
  search: "React",
  type: "React", 
  lessonName: undefined,
  dateFrom: "2023-01-01",
  dateTo: "2023-12-31"
);

Test plan

  • Создан тест examples/history-filter-test.js для проверки логики фильтрации
  • Проверена работа всех типов фильтров
  • Тестирование построения URL и параметров API
  • Проверена обратная совместимость
  • Тестирование UI компонентов и взаимодействий

Совместимость

  • ✅ Полная обратная совместимость с существующим API
  • ✅ Старые клиенты продолжают работать без изменений
  • ✅ Новые фильтры опциональны
  • ✅ Плавное обновление без breaking changes

🤖 Generated with Claude Code


Resolves #148

Adding CLAUDE.md with task information for AI processing.
This file will be removed when the task is complete.

Issue: #148
@konard konard self-assigned this Sep 10, 2025
konard and others added 2 commits September 10, 2025 20:43
Implemented advanced filtering for chat history with support for:
- Filter by dialog type (Free, JS, React, TypeScript, Vue, Git, HTML/CSS, Go, interviews, LeetCode, trainings)
- Filter by date range (from date, to date)
- Enhanced search functionality (existing feature)

Backend changes:
- Extended HistoryController with new filter parameters
- Added findByVkUserIdWithFilters repository method
- Updated HistoryService to support multiple filter criteria
- Maintained backward compatibility with existing API

Frontend changes:
- New HistoryFilter component with intuitive UI
- Extended GptHistoryDialogs state management for filters
- Updated History panel with filter button and integration
- Enhanced API client to support filter parameters

Features:
- Type-based filtering for all supported dialog types
- Date range filtering by last updated timestamp
- Combined text search with advanced filters
- Clear/reset functionality for all filters
- Responsive design for mobile and desktop

Testing:
- Created comprehensive test suite for filter logic
- Verified API URL construction and parameter handling
- Ensured backward compatibility and new functionality

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@konard konard changed the title [WIP] Добавить возможность фильтрации списка истории Добавить возможность фильтрации списка истории Sep 10, 2025
@konard konard marked this pull request as ready for review September 10, 2025 17:54
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.

Добавить возможность фильтрации списка истории

2 participants