feat: add learner memory ingestion

This commit is contained in:
user
2026-04-26 16:34:52 +09:00
parent 4a4240fea2
commit 600acf7303
23 changed files with 931 additions and 24 deletions

View File

@@ -9,12 +9,14 @@ import (
"tutor/internal/config"
"tutor/internal/interview"
"tutor/internal/learnermemory"
"tutor/internal/workflows"
)
func TestDiagnosticHTTPFlow(t *testing.T) {
service := interview.NewService(interview.NewMemoryStore(), workflows.NewStubRunner())
handler := NewHandler(config.Config{Environment: "test", ModelKey: "deepseek-v4-flash"}, service)
memory := learnermemory.NewService(learnermemory.NewMemoryStore())
service := interview.NewService(interview.NewMemoryStore(), workflows.NewStubRunner(), memory)
handler := NewHandler(config.Config{Environment: "test", ModelKey: "deepseek-v4-flash"}, service, memory)
routes := handler.Routes()
createBody := bytes.NewBufferString(`{
@@ -73,4 +75,22 @@ func TestDiagnosticHTTPFlow(t *testing.T) {
if len(loaded.Answers) != 1 {
t.Fatalf("answers = %d, want 1", len(loaded.Answers))
}
memoryReq := httptest.NewRequest(http.MethodGet, "/api/v1/learners/user-1/memory", nil)
memoryRec := httptest.NewRecorder()
routes.ServeHTTP(memoryRec, memoryReq)
if memoryRec.Code != http.StatusOK {
t.Fatalf("memory status = %d, body = %s", memoryRec.Code, memoryRec.Body.String())
}
var snapshot learnermemory.Snapshot
if err := json.NewDecoder(memoryRec.Body).Decode(&snapshot); err != nil {
t.Fatalf("decode memory response: %v", err)
}
if snapshot.Profile.UserID != "user-1" {
t.Fatalf("memory profile user = %q", snapshot.Profile.UserID)
}
if len(snapshot.Mastery) == 0 {
t.Fatal("expected mastery entries")
}
}