Conversation
…ration (Phases 1-3) - Install pgvector npm package for 768-dim LaBSE embedding storage - Create PipelineStatus, RunStatus, ActionPriority enums - Create SENTIMENT_GATE, COVERAGE_WARNINGS, and pipeline constants - Add EMBEDDINGS/TOPIC_MODEL/RECOMMENDATIONS worker URL + concurrency env vars - Create 9 new entities: SubmissionEmbedding, AnalysisPipeline, SentimentRun, SentimentResult, TopicModelRun, Topic, TopicAssignment, RecommendationRun, RecommendedAction (each with custom repository) - Register all new entities in barrel file and MikroORM config - Add migration with pgvector extension, all tables, CHECK constraints, composite indexes, and partial unique indexes (soft-delete aware) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…strator, controller (Phases 4-8) Wire the end-to-end analysis pipeline: worker contract schemas, batch processing infrastructure, all four processors (embedding, sentiment, topic model, recommendations), pipeline orchestrator with sequential stage execution and sentiment gate filtering, REST controller, and embedding auto-dispatch on submission. Includes adversarial review fixes: batch result passthrough for typed worker responses, N+1 query elimination in sentiment gate, scoped enrollment counts, aggregated recommendations payload, class-validator decorators on DTO, and deterministic test for env-gated behavior.
y4nder
added a commit
that referenced
this pull request
Mar 14, 2026
* FAC-46 feat: add analytics metadata foundation — entities, enums, migration (Phases 1-3) - Install pgvector npm package for 768-dim LaBSE embedding storage - Create PipelineStatus, RunStatus, ActionPriority enums - Create SENTIMENT_GATE, COVERAGE_WARNINGS, and pipeline constants - Add EMBEDDINGS/TOPIC_MODEL/RECOMMENDATIONS worker URL + concurrency env vars - Create 9 new entities: SubmissionEmbedding, AnalysisPipeline, SentimentRun, SentimentResult, TopicModelRun, Topic, TopicAssignment, RecommendationRun, RecommendedAction (each with custom repository) - Register all new entities in barrel file and MikroORM config - Add migration with pgvector extension, all tables, CHECK constraints, composite indexes, and partial unique indexes (soft-delete aware) * FAC-46 feat: add analysis pipeline infrastructure — processors, orchestrator, controller (Phases 4-8) Wire the end-to-end analysis pipeline: worker contract schemas, batch processing infrastructure, all four processors (embedding, sentiment, topic model, recommendations), pipeline orchestrator with sequential stage execution and sentiment gate filtering, REST controller, and embedding auto-dispatch on submission. Includes adversarial review fixes: batch result passthrough for typed worker responses, N+1 query elimination in sentiment gate, scoped enrollment counts, aggregated recommendations payload, class-validator decorators on DTO, and deterministic test for env-gated behavior. * FAC-46 docs: update documentation for analysis pipeline infrastructure --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
y4nder
added a commit
that referenced
this pull request
Mar 14, 2026
* FAC-40 feat: add image on enrollments response (#79) * FAC-41 feat: add questionnaire type and version queries (#81) Add GET /questionnaires/types and GET /questionnaires/types/:type/versions endpoints for listing questionnaire types with their associated entities and browsing versions by type with OpenAPI schema definitions. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * FAC-42 feat: seed questionnaire types with sample questionnaires (#84) Add schema constants and idempotent seeder for all three questionnaire types (Faculty In-Classroom, Out-of-Classroom, Faculty Feedback) with published v1 versions. Replace placeholder dimensions with real section-aligned dimensions matching UC faculty evaluation forms. * 85 fac 43 feat implement redis caching layer (#89) * FAC-43 feat: add Redis caching infrastructure Register CacheModule with @keyv/redis store (falls back to in-memory when REDIS_URL is not set). Add Redis env config with Zod validation for REDIS_URL, REDIS_KEY_PREFIX, and REDIS_CACHE_TTL. * FAC-43 feat: add CacheService with namespace-based invalidation Introduce CacheService wrapper over CACHE_MANAGER with namespace-aware key tracking. Supports wrap() for get-or-set caching with HIT/MISS logging, and invalidateNamespace()/invalidateNamespaces() for targeted cache clearing. Register and export from CommonModule. * FAC-43 feat: integrate caching into enrollments, questionnaires, and sync jobs Wrap getMyEnrollments (30min TTL), getQuestionnaireTypes and getVersionsByType (1hr TTL) with CacheService. Add cache invalidation after questionnaire mutations and enrollment sync. Update all affected test files with CacheService mock. * FAC-43 docs: add caching architecture, AI pipeline spec, and update-docs skill Add caching architecture doc, decision record for namespace-based invalidation, and AI inference pipeline implementation spec fragment. Update core-components and roadmap with caching and RabbitMQ references. Add /update-docs slash command skill. * FAC-44 feat: add BullMQ job queue infrastructure (#91) * FAC-44 feat: add BullMQ job queue infrastructure Add async job processing for AI analysis pipeline using BullMQ on Redis. Includes queue-per-type pattern, HTTP-based job processors, Terminus health checks, mock worker for local dev, and Docker Compose support. * chore: add analysis job queue tech-spec artifact * FAC-45 fix: add Redis service to publish-contract workflow (#93) BullMQ (FAC-44) requires Redis at startup, which broke the OpenAPI spec generation in CI. Add Redis service container and REDIS_URL env var. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * FAC-46 feat: add analytics metadata to questionnaire submission (#97) * FAC-46 feat: add analytics metadata foundation — entities, enums, migration (Phases 1-3) - Install pgvector npm package for 768-dim LaBSE embedding storage - Create PipelineStatus, RunStatus, ActionPriority enums - Create SENTIMENT_GATE, COVERAGE_WARNINGS, and pipeline constants - Add EMBEDDINGS/TOPIC_MODEL/RECOMMENDATIONS worker URL + concurrency env vars - Create 9 new entities: SubmissionEmbedding, AnalysisPipeline, SentimentRun, SentimentResult, TopicModelRun, Topic, TopicAssignment, RecommendationRun, RecommendedAction (each with custom repository) - Register all new entities in barrel file and MikroORM config - Add migration with pgvector extension, all tables, CHECK constraints, composite indexes, and partial unique indexes (soft-delete aware) * FAC-46 feat: add analysis pipeline infrastructure — processors, orchestrator, controller (Phases 4-8) Wire the end-to-end analysis pipeline: worker contract schemas, batch processing infrastructure, all four processors (embedding, sentiment, topic model, recommendations), pipeline orchestrator with sequential stage execution and sentiment gate filtering, REST controller, and embedding auto-dispatch on submission. Includes adversarial review fixes: batch result passthrough for typed worker responses, N+1 query elimination in sentiment gate, scoped enrollment counts, aggregated recommendations payload, class-validator decorators on DTO, and deterministic test for env-gated behavior. * FAC-46 docs: update documentation for analysis pipeline infrastructure --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * FAC-47 refactor: add PipelineResponseDto to flatten pipeline API responses (#101) Replace raw AnalysisPipeline entity returns with a flat DTO that maps ManyToOne relations to UUID strings, preventing deeply nested entity graphs from leaking into the OpenAPI spec. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
y4nder
added a commit
that referenced
this pull request
Mar 14, 2026
* FAC-40 feat: add image on enrollments response (#79) * FAC-41 feat: add questionnaire type and version queries (#81) Add GET /questionnaires/types and GET /questionnaires/types/:type/versions endpoints for listing questionnaire types with their associated entities and browsing versions by type with OpenAPI schema definitions. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * FAC-42 feat: seed questionnaire types with sample questionnaires (#84) Add schema constants and idempotent seeder for all three questionnaire types (Faculty In-Classroom, Out-of-Classroom, Faculty Feedback) with published v1 versions. Replace placeholder dimensions with real section-aligned dimensions matching UC faculty evaluation forms. * 85 fac 43 feat implement redis caching layer (#89) * FAC-43 feat: add Redis caching infrastructure Register CacheModule with @keyv/redis store (falls back to in-memory when REDIS_URL is not set). Add Redis env config with Zod validation for REDIS_URL, REDIS_KEY_PREFIX, and REDIS_CACHE_TTL. * FAC-43 feat: add CacheService with namespace-based invalidation Introduce CacheService wrapper over CACHE_MANAGER with namespace-aware key tracking. Supports wrap() for get-or-set caching with HIT/MISS logging, and invalidateNamespace()/invalidateNamespaces() for targeted cache clearing. Register and export from CommonModule. * FAC-43 feat: integrate caching into enrollments, questionnaires, and sync jobs Wrap getMyEnrollments (30min TTL), getQuestionnaireTypes and getVersionsByType (1hr TTL) with CacheService. Add cache invalidation after questionnaire mutations and enrollment sync. Update all affected test files with CacheService mock. * FAC-43 docs: add caching architecture, AI pipeline spec, and update-docs skill Add caching architecture doc, decision record for namespace-based invalidation, and AI inference pipeline implementation spec fragment. Update core-components and roadmap with caching and RabbitMQ references. Add /update-docs slash command skill. * FAC-44 feat: add BullMQ job queue infrastructure (#91) * FAC-44 feat: add BullMQ job queue infrastructure Add async job processing for AI analysis pipeline using BullMQ on Redis. Includes queue-per-type pattern, HTTP-based job processors, Terminus health checks, mock worker for local dev, and Docker Compose support. * chore: add analysis job queue tech-spec artifact * FAC-45 fix: add Redis service to publish-contract workflow (#93) BullMQ (FAC-44) requires Redis at startup, which broke the OpenAPI spec generation in CI. Add Redis service container and REDIS_URL env var. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * FAC-46 feat: add analytics metadata to questionnaire submission (#97) * FAC-46 feat: add analytics metadata foundation — entities, enums, migration (Phases 1-3) - Install pgvector npm package for 768-dim LaBSE embedding storage - Create PipelineStatus, RunStatus, ActionPriority enums - Create SENTIMENT_GATE, COVERAGE_WARNINGS, and pipeline constants - Add EMBEDDINGS/TOPIC_MODEL/RECOMMENDATIONS worker URL + concurrency env vars - Create 9 new entities: SubmissionEmbedding, AnalysisPipeline, SentimentRun, SentimentResult, TopicModelRun, Topic, TopicAssignment, RecommendationRun, RecommendedAction (each with custom repository) - Register all new entities in barrel file and MikroORM config - Add migration with pgvector extension, all tables, CHECK constraints, composite indexes, and partial unique indexes (soft-delete aware) * FAC-46 feat: add analysis pipeline infrastructure — processors, orchestrator, controller (Phases 4-8) Wire the end-to-end analysis pipeline: worker contract schemas, batch processing infrastructure, all four processors (embedding, sentiment, topic model, recommendations), pipeline orchestrator with sequential stage execution and sentiment gate filtering, REST controller, and embedding auto-dispatch on submission. Includes adversarial review fixes: batch result passthrough for typed worker responses, N+1 query elimination in sentiment gate, scoped enrollment counts, aggregated recommendations payload, class-validator decorators on DTO, and deterministic test for env-gated behavior. * FAC-46 docs: update documentation for analysis pipeline infrastructure --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * FAC-47 refactor: add PipelineResponseDto to flatten pipeline API responses (#101) Replace raw AnalysisPipeline entity returns with a flat DTO that maps ManyToOne relations to UUID strings, preventing deeply nested entity graphs from leaking into the OpenAPI spec. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Merged
y4nder
added a commit
that referenced
this pull request
Mar 14, 2026
[FAC-40, FAC-41, FAC-42, FAC-43, FAC-44, FAC-45, FAC-46, FAC-47] (#102) * FAC-40 feat: add image on enrollments response (#79) * FAC-41 feat: add questionnaire type and version queries (#81) Add GET /questionnaires/types and GET /questionnaires/types/:type/versions endpoints for listing questionnaire types with their associated entities and browsing versions by type with OpenAPI schema definitions. * FAC-42 feat: seed questionnaire types with sample questionnaires (#84) Add schema constants and idempotent seeder for all three questionnaire types (Faculty In-Classroom, Out-of-Classroom, Faculty Feedback) with published v1 versions. Replace placeholder dimensions with real section-aligned dimensions matching UC faculty evaluation forms. * 85 fac 43 feat implement redis caching layer (#89) * FAC-43 feat: add Redis caching infrastructure Register CacheModule with @keyv/redis store (falls back to in-memory when REDIS_URL is not set). Add Redis env config with Zod validation for REDIS_URL, REDIS_KEY_PREFIX, and REDIS_CACHE_TTL. * FAC-43 feat: add CacheService with namespace-based invalidation Introduce CacheService wrapper over CACHE_MANAGER with namespace-aware key tracking. Supports wrap() for get-or-set caching with HIT/MISS logging, and invalidateNamespace()/invalidateNamespaces() for targeted cache clearing. Register and export from CommonModule. * FAC-43 feat: integrate caching into enrollments, questionnaires, and sync jobs Wrap getMyEnrollments (30min TTL), getQuestionnaireTypes and getVersionsByType (1hr TTL) with CacheService. Add cache invalidation after questionnaire mutations and enrollment sync. Update all affected test files with CacheService mock. * FAC-43 docs: add caching architecture, AI pipeline spec, and update-docs skill Add caching architecture doc, decision record for namespace-based invalidation, and AI inference pipeline implementation spec fragment. Update core-components and roadmap with caching and RabbitMQ references. Add /update-docs slash command skill. * FAC-44 feat: add BullMQ job queue infrastructure (#91) * FAC-44 feat: add BullMQ job queue infrastructure Add async job processing for AI analysis pipeline using BullMQ on Redis. Includes queue-per-type pattern, HTTP-based job processors, Terminus health checks, mock worker for local dev, and Docker Compose support. * chore: add analysis job queue tech-spec artifact * FAC-45 fix: add Redis service to publish-contract workflow (#93) BullMQ (FAC-44) requires Redis at startup, which broke the OpenAPI spec generation in CI. Add Redis service container and REDIS_URL env var. * FAC-46 feat: add analytics metadata to questionnaire submission (#97) * FAC-46 feat: add analytics metadata foundation — entities, enums, migration (Phases 1-3) - Install pgvector npm package for 768-dim LaBSE embedding storage - Create PipelineStatus, RunStatus, ActionPriority enums - Create SENTIMENT_GATE, COVERAGE_WARNINGS, and pipeline constants - Add EMBEDDINGS/TOPIC_MODEL/RECOMMENDATIONS worker URL + concurrency env vars - Create 9 new entities: SubmissionEmbedding, AnalysisPipeline, SentimentRun, SentimentResult, TopicModelRun, Topic, TopicAssignment, RecommendationRun, RecommendedAction (each with custom repository) - Register all new entities in barrel file and MikroORM config - Add migration with pgvector extension, all tables, CHECK constraints, composite indexes, and partial unique indexes (soft-delete aware) * FAC-46 feat: add analysis pipeline infrastructure — processors, orchestrator, controller (Phases 4-8) Wire the end-to-end analysis pipeline: worker contract schemas, batch processing infrastructure, all four processors (embedding, sentiment, topic model, recommendations), pipeline orchestrator with sequential stage execution and sentiment gate filtering, REST controller, and embedding auto-dispatch on submission. Includes adversarial review fixes: batch result passthrough for typed worker responses, N+1 query elimination in sentiment gate, scoped enrollment counts, aggregated recommendations payload, class-validator decorators on DTO, and deterministic test for env-gated behavior. * FAC-46 docs: update documentation for analysis pipeline infrastructure --------- * FAC-47 refactor: add PipelineResponseDto to flatten pipeline API responses (#101) Replace raw AnalysisPipeline entity returns with a flat DTO that maps ManyToOne relations to UUID strings, preventing deeply nested entity graphs from leaking into the OpenAPI spec. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.