This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
breakpilot-pwa/edu-search-service/internal/staff/publication_adapter.go
Benjamin Admin 21a844cb8a fix: Restore all files lost during destructive rebase
A previous `git pull --rebase origin main` dropped 177 local commits,
losing 3400+ files across admin-v2, backend, studio-v2, website,
klausur-service, and many other services. The partial restore attempt
(660295e2) only recovered some files.

This commit restores all missing files from pre-rebase ref 98933f5e
while preserving post-rebase additions (night-scheduler, night-mode UI,
NightModeWidget dashboard integration).

Restored features include:
- AI Module Sidebar (FAB), OCR Labeling, OCR Compare
- GPU Dashboard, RAG Pipeline, Magic Help
- Klausur-Korrektur (8 files), Abitur-Archiv (5+ files)
- Companion, Zeugnisse-Crawler, Screen Flow
- Full backend, studio-v2, website, klausur-service
- All compliance SDKs, agent-core, voice-service
- CI/CD configs, documentation, scripts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 09:51:32 +01:00

79 lines
2.4 KiB
Go

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