⚡ Comenzi Personalizate

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:

1. Caută compania în webscraper/websites.md (caută după Brand SAU Company)
2. Dacă există, citește fișierul scraper specific (ex: epam.md, endava.md)
3. Deschide Chrome și navighează la pagina de cariere
4. Extrage job-urile conform prompt-ului din scraper file
5. Extrage tag-urile (seniority + field) conform instrucțiunilor
6. Formatează datele conform Job Schema (fără description!)
7. Trimite către Solr
8. Actualizează "Last Scraped" în websites.md
Notă: Pentru fiecare companie există un fișier scraper în 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:

1. Verifică dacă Solr rulează: curl -s http://localhost:8983/solr/admin/ping
2. Dacă nu rulează, pornește containerul: docker start peviitor-solr
3. Formatează datele conform Job/Company schema (vezi SCHEMAS.md)
4. Trimite către Solr folosind curl cu credențiale
5. Verifică că actualizarea a fost făcută cu succes

Core-uri disponibile:

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"
Important:
  • 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:

1. Verifică că Solr rulează
2. Deschide Chrome la http://localhost:8983/solr/
3. Completează formularul de login:
- Username: solr
- Password: SolrRocks
4. Verifică că login-ul a reușit
5. Face un screenshot pentru confirmare

/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:

1. Verifică că Solr rulează
2. Parsează cheia și valoarea din argumente
3. Implicit, folosește "url" ca cheie
4. Șterge documentele care se potrivesc din job core
5. Verifică că ștergerea a reușit

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\""}}'
Important: NU folosi formatul "_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):

Pași:

1. Parsează argumentele
2. Citește webscraper/websites.md
3. Adaugă un nou rând în tabel (cu coloanele: Brand, Company, Website, Careers Page, CUI, Last Scraped, Scraper File)
4. Scrie fișierul actualizat
5. Creează fișierul scraper în webscraper/ (ex: epam.md)
Notă: După adăugare, trebuie creat fișierul scraper (ex: epam.md) cu instrucțiuni specifice pentru companie.

/docs-update

Actualizează documentația proiectului bazat pe toate fișierele.

Utilizare:

/docs-update

Pași:

1. Revizuiește toate fișierele din proiect
2. Înțelege ce face fiecare fișier
3. Actualizează/creează documentația în folderul docs/
4. Creează documentație pentru comenzi noi dacă e necesar

/instructions

Afișează instrucțiunile pentru AI - fluxuri de lucru, reguli, și convenții.

Utilizare:

/instructions

Conținut:

Pași:

1. Citește INSTRUCTIONS.md pentru fluxul de lucru curent
2. Verifică regulile pentru fields (ex: nu include description în Job model)
3. Aplică convențiile de cod din AGENTS.md
4. Urmează pașii din INSTRUCTIONS.md pentru task-ul curent

/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:

Utilizare:

/remove-404

Pași:

1. Verifică că Solr rulează: curl -s -u solr:SolrRocks "http://localhost:8983/solr/job/admin/ping"
2. Obține data de azi în format ISO (YYYY-MM-DD): date -u +"%Y-%m-%dT00:00:00Z"
3. Interoghează maxim 10 job-uri unde vdate NU este setat SAU vdate este anterior datei de azi
4. Pentru fiecare URL:
a. Verifică dacă URL-ul returnează 404
b. Dacă 404: șterge job-ul din Solr
c. Dacă 200 (valid): actualizează vdate cu data de azi
5. Raportează rezultatele: "Validated X URLs: Y valid (updated vdate), Z removed (404)"

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"):

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\""}}'
Important:
  • 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:

1. Șterge fișierele temporare PowerShell (*.ps1 care nu sunt necesare)
2. Șterge fișierele JSON temporare (*_jobs.json)
3. Șterge node_modules și rezultatele testelor (pot fi recreate)
4. Actualizează documentația HTML în folderul docs/
5. Verifică și șterge foldere goale

Fișiere șterse:

Fișiere păstrate:

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:

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