Merged in jmathison/v2-upload-batch (pull request #224)

Implement v2 upload batch cleanup

* Implement v2 upload batch cleanup

* Merge remote-tracking branch 'origin/main' into jmathison/v2-upload-batch

* Address upload batch review feedback

* Raise batch worker coverage

* Fix batch cleanup review issues


Approved-by: Jay Brown
This commit is contained in:
Jacob Mathison
2026-05-08 21:42:46 +00:00
parent 7b820b18c2
commit a080ca59d8
35 changed files with 2587 additions and 108 deletions
+127
View File
@@ -0,0 +1,127 @@
package api
import (
"context"
"errors"
"log/slog"
"os"
"strings"
"queryorchestration/internal/client"
"queryorchestration/internal/database/repository"
"queryorchestration/internal/serviceconfig"
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgconn"
)
const (
localDevClientIDEnv = "LOCAL_DEV_CLIENT_ID"
localDevClientNameEnv = "LOCAL_DEV_CLIENT_NAME"
localDevEulaVersionEnv = "LOCAL_DEV_EULA_VERSION"
localDevEulaTitleEnv = "LOCAL_DEV_EULA_TITLE"
localDevEulaAutoAcceptSubjectEnv = "LOCAL_DEV_EULA_AUTO_ACCEPT_SUBJECT"
localDevEulaAutoAcceptEmailEnv = "LOCAL_DEV_EULA_AUTO_ACCEPT_EMAIL"
)
const localDevEulaContent = `<h3>Acceptance of Terms</h3><p>By accessing and using AArete DoczyAI in this local development environment, you agree to use the application only for authorized testing and evaluation.</p><h3>Authorized Use</h3><p>You are responsible for ensuring uploaded documents and generated outputs are appropriate for local development use and comply with applicable internal policies.</p><h3>Data Handling</h3><p>This local instance is intended for development workflows. Do not upload production, confidential, or regulated data unless the environment has been approved for that data.</p><h3>No Warranty</h3><p>This local development instance is provided as-is for testing. Features, data, and outputs may change during development.</p>`
type localDevClientConfig interface {
serviceconfig.ConfigProvider
GetLogger() *slog.Logger
}
func ensureLocalDevClient(ctx context.Context, cfg localDevClientConfig) error {
if strings.ToLower(os.Getenv("DISABLE_AUTH")) != "true" {
return nil
}
clientID := strings.TrimSpace(os.Getenv(localDevClientIDEnv))
if clientID == "" {
return nil
}
clientName := strings.TrimSpace(os.Getenv(localDevClientNameEnv))
if clientName == "" {
clientName = clientID
}
_, err := cfg.GetDBQueries().GetClient(ctx, clientID)
if err == nil {
return nil
}
if !errors.Is(err, pgx.ErrNoRows) {
var pgErr *pgconn.PgError
if errors.As(err, &pgErr) && pgErr.Code == "42P01" {
localDevBootstrapLogger(cfg).Warn("Skipping local dev client bootstrap because client tables are unavailable")
return nil
}
return err
}
_, err = client.New(cfg).Create(ctx, client.CreateParams{
ID: clientID,
Name: clientName,
})
if err != nil {
return err
}
localDevBootstrapLogger(cfg).Info("Created local dev client", slog.String("client_id", clientID))
return nil
}
func ensureLocalDevEula(ctx context.Context, cfg localDevClientConfig) error {
if strings.ToLower(os.Getenv("DISABLE_AUTH")) != "true" {
return nil
}
version := strings.TrimSpace(os.Getenv(localDevEulaVersionEnv))
if version == "" {
return nil
}
title := strings.TrimSpace(os.Getenv(localDevEulaTitleEnv))
if title == "" {
title = "AArete DoczyAI Terms of Use"
}
versionID, err := cfg.GetDBQueries().ActivateLocalDevEulaVersion(ctx, &repository.ActivateLocalDevEulaVersionParams{
Version: version,
Title: title,
Content: localDevEulaContent,
})
if err != nil {
var pgErr *pgconn.PgError
if errors.As(err, &pgErr) && pgErr.Code == "42P01" {
localDevBootstrapLogger(cfg).Warn("Skipping local dev EULA bootstrap because EULA tables are unavailable")
return nil
}
return err
}
subject := strings.TrimSpace(os.Getenv(localDevEulaAutoAcceptSubjectEnv))
email := strings.TrimSpace(os.Getenv(localDevEulaAutoAcceptEmailEnv))
if subject != "" {
if email == "" {
email = subject
}
if err := cfg.GetDBQueries().CreateLocalDevEulaAgreement(ctx, &repository.CreateLocalDevEulaAgreementParams{
CognitoSubjectID: subject,
UserEmail: email,
EulaVersionID: versionID,
}); err != nil {
return err
}
}
localDevBootstrapLogger(cfg).Info("Activated local dev EULA", slog.String("version", version))
return nil
}
func localDevBootstrapLogger(cfg localDevClientConfig) *slog.Logger {
if logger := cfg.GetLogger(); logger != nil {
return logger
}
return slog.Default()
}