in app/src/main/kotlin/io/klibs/app/indexing/ProjectIndexingService.kt [67:98]
fun addAiTags() {
var selectedProjectId: Int? = null
try {
val project = projectRepository.findWithoutTags() ?: return
if (tagsBackoffProvider.isBackedOff(project.idNotNull)) {
logger.debug("Selected projectId=${project.id} is in backoff; skipping this run")
return
}
selectedProjectId = project.idNotNull
val repo = scmRepositoryRepository.findById(project.scmRepoId) ?: error("Unable to find the repo: $project")
logger.debug("Generating AI tags for projectId=${project.id}: ${repo.name}")
val tags = projectTagsGenerator.generateTagsForProject(
repo.name,
project.description ?: "",
repo.description ?: "",
repo.minimizedReadme ?: ""
).map {
TagEntity(
projectId = project.idNotNull,
value = it,
origin = TagOrigin.AI
)
}
projectTagRepository.saveAll(tags)
logger.debug("Updated AI tags for projectId=${project.id} ${repo.name}: ${tags.joinToString(",") { it.value }})")
tagsBackoffProvider.onSuccess(project.idNotNull)
} catch (e: Exception) {
logger.error("Exception while updating AI tags", e)
selectedProjectId?.let { tagsBackoffProvider.onFailure(it) }
}
}