Init: структура проекта md-converters (Excel → markdown), AGENTS.md для OMP

This commit is contained in:
2026-08-12 23:45:01 +03:00
commit 6c9ea4537a
3 changed files with 83 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
# AGENTS.md — контекст проекта для OMP
Проект: набор библиотек для конвертации файлов → markdown.
**Текущий формат: Excel (.xlsx).** Дальше — pdf, docx, pptx, html…
## Workflow для каждого формата
1. Сгенерировать простые тест-кейсы (базовые данные, заголовки, типы)
2. Найти лучшие библиотеки: сначала фреймворки (docling, owi, surya,
paddle…), потом докопаться до низкоуровневых либ формата
(для Excel: openpyxl, pandas, xlrd, calamine…)
3. Оценить по функционалу → таблица в `libs_eval/`
4. Сгенерировать сложные тест-кейсы:
- пустые, но отформатированные колонки (их много)
- большие промежутки между колонками (файл целиком читать не хочется)
- сложное форматирование: объединённые ячейки, стили, цвета
- формулы и ссылки
- пограничный размер: миллионы строк
- разные кодировки и форматы данных
5. Проверить качество конвертации
6. Забенчмаркировать: скорость, потребление памяти, нагрузка на CPU
## Ключевые договорённости
- **Excel: картинки НЕ нужны** — только текст, структура, форматирование, формулы
- Тест-кейсы: генерировать скриптами (openpyxl), файлы в `testcases/excel/`
- Именование: `tc<N>_<описание>.xlsx`, например `tc01_basic.xlsx`
- Бенчмарки: замерять wall-time, RSS (memory_profiler/psutil), CPU% — выводить таблицей
- Python 3, зависимости в `requirements.txt`, venv в `.venv/` (не коммитить)
## Питфоллы (проверено)
- Миллионы строк: openpyxl read_only mode / pandas chunking / calamine (Rust)
- Пустые отформатированные колонки: проверять `ws.calculate_dimension()` /
`ws.max_column` — многие либы их игнорируют
- Формулы: openpyxl `data_only=True` даёт cached value (если файл открывался
в Excel), иначе формулу; calamine отдаёт cached value сразу
- xlsx внутри — UTF-8 XML, но данные бывают в разных локалях; .xls (BIFF) —
отдельная история (xlrd >=2.0 только .xls!)
## Стиль работы
- Сначала изучить существующее (README, libs_eval/, тест-кейсы), не дублировать
- Код — через тебя (OMP), короткие итерации, самопроверка запуском
- Результаты бенчмарков/оценок — в markdown-таблицы в libs_eval/
- Обновления вики — делает Hermes, не трогай /mnt/synology/