feat: BreakPilot PWA - Full codebase (clean push without large binaries)
Some checks failed
Tests / Go Tests (push) Has been cancelled
Tests / Python Tests (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / Go Lint (push) Has been cancelled
Tests / Python Lint (push) Has been cancelled
Tests / Security Scan (push) Has been cancelled
Tests / All Checks Passed (push) Has been cancelled
Security Scanning / Secret Scanning (push) Has been cancelled
Security Scanning / Dependency Vulnerability Scan (push) Has been cancelled
Security Scanning / Go Security Scan (push) Has been cancelled
Security Scanning / Python Security Scan (push) Has been cancelled
Security Scanning / Node.js Security Scan (push) Has been cancelled
Security Scanning / Docker Image Security (push) Has been cancelled
Security Scanning / Security Summary (push) Has been cancelled
CI/CD Pipeline / Go Tests (push) Has been cancelled
CI/CD Pipeline / Python Tests (push) Has been cancelled
CI/CD Pipeline / Website Tests (push) Has been cancelled
CI/CD Pipeline / Linting (push) Has been cancelled
CI/CD Pipeline / Security Scan (push) Has been cancelled
CI/CD Pipeline / Docker Build & Push (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / CI Summary (push) Has been cancelled
ci/woodpecker/manual/build-ci-image Pipeline was successful
ci/woodpecker/manual/main Pipeline failed
Some checks failed
Tests / Go Tests (push) Has been cancelled
Tests / Python Tests (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / Go Lint (push) Has been cancelled
Tests / Python Lint (push) Has been cancelled
Tests / Security Scan (push) Has been cancelled
Tests / All Checks Passed (push) Has been cancelled
Security Scanning / Secret Scanning (push) Has been cancelled
Security Scanning / Dependency Vulnerability Scan (push) Has been cancelled
Security Scanning / Go Security Scan (push) Has been cancelled
Security Scanning / Python Security Scan (push) Has been cancelled
Security Scanning / Node.js Security Scan (push) Has been cancelled
Security Scanning / Docker Image Security (push) Has been cancelled
Security Scanning / Security Summary (push) Has been cancelled
CI/CD Pipeline / Go Tests (push) Has been cancelled
CI/CD Pipeline / Python Tests (push) Has been cancelled
CI/CD Pipeline / Website Tests (push) Has been cancelled
CI/CD Pipeline / Linting (push) Has been cancelled
CI/CD Pipeline / Security Scan (push) Has been cancelled
CI/CD Pipeline / Docker Build & Push (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / CI Summary (push) Has been cancelled
ci/woodpecker/manual/build-ci-image Pipeline was successful
ci/woodpecker/manual/main Pipeline failed
All services: admin-v2, studio-v2, website, ai-compliance-sdk, consent-service, klausur-service, voice-service, and infrastructure. Large PDFs and compiled binaries excluded via .gitignore.
This commit is contained in:
78
edu-search-service/internal/staff/publication_adapter.go
Normal file
78
edu-search-service/internal/staff/publication_adapter.go
Normal file
@@ -0,0 +1,78 @@
|
||||
// Package staff provides university staff and publication crawling functionality
|
||||
package staff
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
|
||||
"github.com/breakpilot/edu-search-service/internal/database"
|
||||
"github.com/breakpilot/edu-search-service/internal/orchestrator"
|
||||
)
|
||||
|
||||
// PublicationOrchestratorAdapter adapts publication crawling to the orchestrator interface
|
||||
// Note: This is a stub for now - publication crawling is a future feature
|
||||
type PublicationOrchestratorAdapter struct {
|
||||
repo *database.Repository
|
||||
}
|
||||
|
||||
// NewPublicationOrchestratorAdapter creates a new publication crawler adapter
|
||||
func NewPublicationOrchestratorAdapter(repo *database.Repository) *PublicationOrchestratorAdapter {
|
||||
return &PublicationOrchestratorAdapter{
|
||||
repo: repo,
|
||||
}
|
||||
}
|
||||
|
||||
// CrawlPublicationsForUniversity crawls publications for all staff at a university
|
||||
// This is Phase 4: Publication discovery (future implementation)
|
||||
func (a *PublicationOrchestratorAdapter) CrawlPublicationsForUniversity(ctx context.Context, universityID uuid.UUID) (*orchestrator.CrawlProgress, error) {
|
||||
start := time.Now()
|
||||
progress := &orchestrator.CrawlProgress{
|
||||
Phase: orchestrator.PhasePublications,
|
||||
StartedAt: start,
|
||||
}
|
||||
|
||||
log.Printf("[PublicationAdapter] Publications phase for university %s", universityID)
|
||||
|
||||
// Get staff members for this university
|
||||
staffList, err := a.repo.SearchStaff(ctx, database.StaffSearchParams{
|
||||
UniversityID: &universityID,
|
||||
Limit: 10000,
|
||||
})
|
||||
if err != nil {
|
||||
progress.Errors = append(progress.Errors, err.Error())
|
||||
return progress, err
|
||||
}
|
||||
|
||||
log.Printf("[PublicationAdapter] Found %d staff members for publication crawling", staffList.Total)
|
||||
|
||||
// TODO: Implement actual publication crawling
|
||||
// - For each staff member with ORCID/Google Scholar ID:
|
||||
// - Fetch publications from ORCID API
|
||||
// - Fetch publications from Google Scholar
|
||||
// - Match and deduplicate
|
||||
// - Store in database
|
||||
//
|
||||
// For now, we mark this phase as complete (no-op)
|
||||
|
||||
pubCount := 0
|
||||
|
||||
// Count existing publications for this university
|
||||
for _, staff := range staffList.Staff {
|
||||
pubs, err := a.repo.GetStaffPublications(ctx, staff.ID)
|
||||
if err == nil {
|
||||
pubCount += len(pubs)
|
||||
}
|
||||
}
|
||||
|
||||
progress.ItemsFound = pubCount
|
||||
progress.ItemsProcessed = staffList.Total
|
||||
now := time.Now()
|
||||
progress.CompletedAt = &now
|
||||
|
||||
log.Printf("[PublicationAdapter] Publications phase completed for university %s: %d existing publications found", universityID, pubCount)
|
||||
|
||||
return progress, nil
|
||||
}
|
||||
Reference in New Issue
Block a user