Comenzi Disponibile
Aceste comenzi sunt definite în .opencode/commands/ și pot fi folosite în OpenCode.
| Comandă | Descriere |
|---|---|
/scrape |
Rulează scraper-ul pentru o companie specifică |
/update-solr |
Actualizează indexul Solr cu date noi |
/delete-solr |
Șterge documente job din Solr |
/login-solr |
Deschide panoul de admin Solr |
/add-website |
Adaugă o nouă companie în websites.md |
/docs-update |
Actualizează documentația proiectului |
/instructions |
Afișează instrucțiunile pentru AI |
/remove-404 |
Validează URL-uri job și șterge job-urile inactive |
/clean-project |
Curăță fișierele temporare și actualizează documentația |
/scrape [nume_companie]
Rulează scraper-ul pentru o companie specifică.
Utilizare:
/scrape EPAM
/scrape ENDAVA
/scrape "EPAM SYSTEMS INTERNATIONAL SRL"
Pași:
webscraper/websites.md (caută după Brand SAU Company)webscraper/ (epam.md, endava.md, bento.md, genpact.md). Acestea conțin instrucțiuni specifice pentru extragerea job-urilor și tag-urilor.
/update-solr
Actualizează indexul Solr cu date noi (job sau company).
Utilizare:
/update-solr
Pași:
curl -s http://localhost:8983/solr/admin/pingdocker start peviitor-solrCore-uri disponibile:
/solr/job/update- pentru job-uri/solr/company/update- pentru companii
Exemplu API - Adaugă job-uri:
curl -u solr:SolrRocks -X POST -H "Content-Type: application/json" \
'http://localhost:8983/solr/job/update?commit=true' \
-d '[{"url":"https://example.com/job","title":"Software Engineer","company":"Example SRL","status":"scraped","date":"2026-02-19T00:00:00Z"}]'
Exemplu API - Adaugă companii:
curl -u solr:SolrRocks -X POST -H "Content-Type: application/json" \
'http://localhost:8983/solr/company/update?commit=true' \
-d '[{"id":"12345678","company":"Example SRL","status":"activ","website":["https://example.com"],"career":["https://example.com/careers"]}]'
Verificare:
curl -s -u solr:SolrRocks "http://localhost:8983/solr/job/select?q=company:Example%20SRL"
- Folosește întotdeauna credențiale:
-u solr:SolrRocks - NU include câmpul "description" - nu există în schema Job
- Follow Job/Company schema din SCHEMAS.md
- Tag-urile trebuie să fie lowercase, fără diacritice
/login-solr
Deschide panoul de admin Solr în Chrome și face login.
Utilizare:
/login-solr
Pași:
http://localhost:8983/solr/solrSolrRocks/delete-solr url:https://example.com/job
Șterge documente job din Solr bazat pe o cheie specifică (implicit: url).
Utilizare:
/delete-solr url:https://example.com/job
/delete-solr company:Test Company
/delete-solr title:Software Engineer
Pași:
Exemplu API (corect):
curl -u solr:SolrRocks -X POST -H "Content-Type: application/json" \
'http://localhost:8983/solr/job/update?commit=true' \
-d '{"delete":{"query":"url:\"https://example.com/job\""}}'
"_delete_":true - acesta nu funcționează corect. Folosește întotdeauna formatul delete-by-query arătat mai sus.
/add-website
Adaugă o nouă companie în fișierul websites.md.
Utilizare:
/add-website "Company Name|Brand|https://website.com|https://careers.com|CUI12345678"
Argumente (separate prin pipe):
- Numele complet al companiei (ex: "EPAM SYSTEMS INTERNATIONAL SRL")
- Brand-ul (ex: "EPAM")
- URL-ul site-ului companiei (ex: "https://epam.com")
- URL-ul paginii de cariere (ex: "https://careers.epam.com")
- CUI-ul companiei (ex: "33159615")
Pași:
/docs-update
Actualizează documentația proiectului bazat pe toate fișierele.
Utilizare:
/docs-update
Pași:
/instructions
Afișează instrucțiunile pentru AI - fluxuri de lucru, reguli, și convenții.
Utilizare:
/instructions
Conținut:
- Fluxul de lucru pentru scraping (INSTRUCTIONS.md)
- Schema de date pentru Job și Company (SCHEMAS.md)
- Convenții de cod (AGENTS.md)
- Formatul corect pentru Solr delete-by-query
Pași:
/remove-404
Validează URL-urile job-urilor care nu au fost verificate azi (vdate nu este setat sau vdate este anterior datei de azi). Pentru fiecare URL:
- Dacă returnează 404: șterge job-ul din Solr
- Dacă este valid: actualizează câmpul vdate cu data de azi
Utilizare:
/remove-404
Pași:
curl -s -u solr:SolrRocks "http://localhost:8983/solr/job/admin/ping"date -u +"%Y-%m-%dT00:00:00Z"Exemplu API - Interogare jobs pentru verificare:
curl -s -u solr:SolrRocks "http://localhost:8983/solr/job/select?q=NOT+vdate:*&rows=10&fl=url,vdate"
Exemplu API - Verificare 404:
curl -s -o /dev/null -w "%{http_code}" "https://example.com/job"
Exemplu API - Actualizare vdate (URL valid):
curl -u solr:SolrRocks -X POST -H "Content-Type: application/json" \
'http://localhost:8983/solr/job/update?commit=true' \
-d '[{"url":"https://example.com/job","vdate":"2026-02-19T00:00:00Z"}]'
Verificare cu Chrome (pentru "not available"):
- Folosește Chrome DevTools MCP doar dacă curl returnează 200 dar trebuie verificat conținutul paginii
- Deschide pagina în Chrome folosind MCP
- Folosește chrome-devtools_take_snapshot pentru a获取 conținutul paginii
- Caută mesaje precum: "not available", "no longer available", "expired", "closed", "this job is not active"
Exemplu API - Ștergere (URL 404):
curl -u solr:SolrRocks -X POST -H "Content-Type: application/json" \
'http://localhost:8983/solr/job/update?commit=true' \
-d '{"delete":{"query":"url:\"https://example.com/job\""}}'
- Limitează la 10 URL-uri per execuție pentru a evita timeout-urile
- Câmpul vdate stochează data ultimei verificări (format ISO8601)
- URL-urile verificate azi vor fi ignorate în următoarea execuție
- NU folosi formatul
"_delete_":true- folosește întotdeauna formatul delete-by-query - Când status="tested", setat și expirationdate = vdate + 30 zile
/clean-project
Curăță proiectul prin ștergerea fișierelor temporare și actualizarea documentației.
Utilizare:
/clean-project
Pași:
Fișiere șterse:
- push_levi9.ps1, process_ddroidd.ps1, scripts/
- levi9_jobs.json, artsoft_jobs.json, yardi_jobs.json
- tests/node_modules/, tests/package-lock.json
- .opencode/node_modules/, .opencode/bun.lock
Fișiere păstrate:
- start-chrome.ps1 (necesar)
- webscraper/ (prompts companii)
- docs/ (documentație)
- tests/*.test.ts (surse teste)
- .opencode/commands/*.md (comenzi)
Pentru a restaura node_modules:
cd tests && npm install
Cum Funcționează
Comenzile sunt definite în fișiere Markdown în .opencode/commands/. Fiecare fișier conține:
- Descrierea comenzii
- Agentul care va executa comanda
- Pașii detaliați de executat
Exemplu - scrape.md:
---
description: Run scraper for a company
agent: build
---
Run the peviitor scraper for the company specified in $ARGUMENTS.
Steps:
1. First, check if the company exists in websites.md
2. If found, use the careers page URL to scrape jobs
3. Format the data according to the Job model schema
4. Push the data to Solr using the job core