Eop analyze
Изтегля документацията на конкретна поръчка от eop.bg, анализира изискванията и подготвя структуриран анализ. Използва се след избор на поръчка от eop-scan.From its SKILL.md
npx -y skills add Lutherwaves/eopowers --skill eop-analyzeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.7 KB, as published. Nobody here has run it
Зареждане на контекст
Преди да започнеш, прочети метаданните на поръчката с Read tool:
- Файл:
./eopowers/offers/$ARGUMENTS/meta.md - Ако файлът не съществува — съобщи: "Няма метаданни — стартирайте /eop-scan първо"
Анализ на поръчка $ARGUMENTS
Чеклист
- Навигиране до страницата на поръчката
- Изтегляне на всички прикачени файлове
- Разархивиране на ZIP файлове (ако има)
- Парсване на техническа спецификация
- Парсване на документация и критерии за оценка
- Идентификация на шаблон(и) за оферта
- Парсване на КСС (ако има Excel файлове)
- Генериране на analysis.md
Изтегляне на документи
Проверка за вече изтеглени файлове: Ако ./eopowers/offers/$ARGUMENTS/attachments/ вече съществува и съдържа файлове (изтеглени от eop-scan) — пропусни изтеглянето и премини директно към парсване. Покажи: "📁 Прикачените файлове вече са изтеглени от eop-scan. Преминавам към анализ."
- Навигирай до
https://app.eop.bg/today/$ARGUMENTS - Направи snapshot за да намериш секцията с прикачени файлове ("Прикачени файлове")
- Изтегли всеки файл като натиснеш бутона за сваляне (ref от snapshot)
- Запази файловете в
./eopowers/offers/$ARGUMENTS/attachments/ - Ако има ZIP файлове, разархивирай ги:
python3 -c "
import zipfile, os, shutil, subprocess
attachments = './eopowers/offers/$ARGUMENTS/attachments'
Extract ZIPs
for f in [x for x in os.listdir(attachments) if x.endswith('.zip')]: zipfile.ZipFile(os.path.join(attachments, f)).extractall(attachments)
Extract RARs
for f in [x for x in os.listdir(attachments) if x.endswith('.rar')]: subprocess.run(['unrar', 'x', '-o+', os.path.join(attachments, f), attachments + '/'], capture_output=True)
Normalize Windows backslash paths — flatten to attachments/
for root, dirs, files in os.walk(attachments): for fname in files: src = os.path.join(root, fname) dst = os.path.join(attachments, fname) if src != dst and not os.path.exists(dst): shutil.move(src, dst)
Remove empty subdirectories
for root, dirs, files in os.walk(attachments, topdown=False): if root != attachments and not os.listdir(root): os.rmdir(root) "
**Обработка на грешки:** timeout 60 секунди на файл, пропускай повредени файлове и документирай в analysis.md.
---
### Идентификация на шаблон
Евристика за идентификация на шаблон:
1. **Имена на файлове:** търси "образец", "приложение", "template", "оферт", "предложение"
2. **Структура на документа:** двуколонни таблици, полета за попълване, празни клетки
3. **Тип файл:** DOCX за текстови шаблони, XLSX за КСС
4. **При неяснота:** попитай потребителя "Кой файл е шаблонът за оферта?"
---
### Парсване на документи
Изпрати subagent eop-offer-analyzer с пътищата до всички изтеглени файлове за структурирано извличане на данни.
Алтернативно, парсвай директно:
**DOCX файлове:**
```python
python -c "
from docx import Document
doc = Document('path/to/file.docx')
for para in doc.paragraphs:
print(para.text)
for table in doc.tables:
for row in table.rows:
print(' | '.join(cell.text.strip() for cell in row.cells))
"
XLSX файлове (КСС):
python -c "
from openpyxl import load_workbook
wb = load_workbook('path/to/file.xlsx')
for sheet in wb.sheetnames:
ws = wb[sheet]
for row in ws.iter_rows(values_only=True):
print(' | '.join(str(c) if c else '' for c in row))
"
Генериране на analysis.md
След успешно парсване, запиши ./eopowers/offers/$ARGUMENTS/analysis.md със следната структура:
# Анализ на поръчка $ARGUMENTS
## Обща информация
- Възложител: [name]
- Уникален номер: [number]
- Прогнозна стойност: [value]
- Краен срок: [deadline]
- Начин на възлагане: [procedure]
## Критерии за оценка
- Цена: [X]%
- Техническо предложение: [Y]%
- Срок за изпълнение: [Z]%
(или: "Най-ниска цена" ако единствен критерий)
## Изисквания (по позиции)
| # | Изискване | Минимум | Единица | Забележка |
|---|-----------|---------|---------|-----------|
| 1 | ... | ... | ... | ... |
## КСС позиции (ако има)
| # | Описание | Ед. мярка | Количество | Ед. цена | Обща стойност |
|---|----------|-----------|-----------|----------|---------------|
| 1 | ... | ... | ... | (празно) | (празно) |
## Идентифицирани шаблони
- Оферта (DOCX): [filename]
- КСС (XLSX): [filename]
- Други: [list]
## Специални условия
- Гаранция за участие: [amount/type]
- Гаранция за изпълнение: [amount/type]
- Подизпълнители: [allowed/not allowed]
- Срок за изпълнение: [max days]
## Прикачени файлове
- [filename1] — [description/type]
- [filename2] — [description/type]