Services: Admin-Lehrer, Backend-Lehrer, Studio v2, Website, Klausur-Service, School-Service, Voice-Service, Geo-Service, BreakPilot Drive, Agent-Core Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
97 lines
3.0 KiB
Go
97 lines
3.0 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// Response represents a standard API response
|
|
type Response struct {
|
|
Success bool `json:"success"`
|
|
Data interface{} `json:"data,omitempty"`
|
|
Error string `json:"error,omitempty"`
|
|
Code string `json:"code,omitempty"`
|
|
}
|
|
|
|
// SuccessResponse creates a success response
|
|
func SuccessResponse(c *gin.Context, data interface{}) {
|
|
c.JSON(http.StatusOK, Response{
|
|
Success: true,
|
|
Data: data,
|
|
})
|
|
}
|
|
|
|
// ErrorResponse creates an error response
|
|
func ErrorResponse(c *gin.Context, status int, err string, code string) {
|
|
c.JSON(status, Response{
|
|
Success: false,
|
|
Error: err,
|
|
Code: code,
|
|
})
|
|
}
|
|
|
|
// StateData represents state response data
|
|
type StateData struct {
|
|
TenantID string `json:"tenantId"`
|
|
State interface{} `json:"state"`
|
|
Version int `json:"version"`
|
|
LastModified string `json:"lastModified"`
|
|
}
|
|
|
|
// ValidationError represents a validation error
|
|
type ValidationError struct {
|
|
RuleID string `json:"ruleId"`
|
|
Field string `json:"field"`
|
|
Message string `json:"message"`
|
|
Severity string `json:"severity"`
|
|
}
|
|
|
|
// CheckpointResult represents checkpoint validation result
|
|
type CheckpointResult struct {
|
|
CheckpointID string `json:"checkpointId"`
|
|
Passed bool `json:"passed"`
|
|
ValidatedAt string `json:"validatedAt"`
|
|
ValidatedBy string `json:"validatedBy"`
|
|
Errors []ValidationError `json:"errors"`
|
|
Warnings []ValidationError `json:"warnings"`
|
|
}
|
|
|
|
// SearchResult represents a RAG search result
|
|
type SearchResult struct {
|
|
ID string `json:"id"`
|
|
Content string `json:"content"`
|
|
Source string `json:"source"`
|
|
Score float64 `json:"score"`
|
|
Metadata map[string]string `json:"metadata,omitempty"`
|
|
Highlights []string `json:"highlights,omitempty"`
|
|
}
|
|
|
|
// GenerateRequest represents a document generation request
|
|
type GenerateRequest struct {
|
|
TenantID string `json:"tenantId" binding:"required"`
|
|
Context map[string]interface{} `json:"context"`
|
|
Template string `json:"template,omitempty"`
|
|
Language string `json:"language,omitempty"`
|
|
UseRAG bool `json:"useRag"`
|
|
RAGQuery string `json:"ragQuery,omitempty"`
|
|
MaxTokens int `json:"maxTokens,omitempty"`
|
|
Temperature float64 `json:"temperature,omitempty"`
|
|
}
|
|
|
|
// GenerateResponse represents a document generation response
|
|
type GenerateResponse struct {
|
|
Content string `json:"content"`
|
|
GeneratedAt string `json:"generatedAt"`
|
|
Model string `json:"model"`
|
|
TokensUsed int `json:"tokensUsed"`
|
|
RAGSources []SearchResult `json:"ragSources,omitempty"`
|
|
Confidence float64 `json:"confidence,omitempty"`
|
|
}
|
|
|
|
// Timestamps helper
|
|
func now() string {
|
|
return time.Now().UTC().Format(time.RFC3339)
|
|
}
|