Skip to content

Add batch assign endpoint and functionality#2613

Merged
bcb37 merged 10 commits intodevfrom
feature/batch-assign
Sep 25, 2025
Merged

Add batch assign endpoint and functionality#2613
bcb37 merged 10 commits intodevfrom
feature/batch-assign

Conversation

@bcb37
Copy link
Copy Markdown
Collaborator

@bcb37 bcb37 commented Aug 8, 2025

Adds the authorized /api/batch-assign endpoint, along with tests.
The new endpoint can be tested in swagger.

@bcb37 bcb37 requested review from Copilot, danoswaltCL and zackcl August 8, 2025 16:25

This comment was marked as outdated.

@bcb37 bcb37 linked an issue Aug 8, 2025 that may be closed by this pull request
@bcb37 bcb37 requested a review from Copilot August 13, 2025 14:29

This comment was marked as outdated.

Comment thread backend/packages/Upgrade/src/api/controllers/BatchAssignController.ts Outdated
@danoswaltCL
Copy link
Copy Markdown
Collaborator

tested this out w/ swagger, I think the responses look right to me so far. I think I need to sit with the code for a bit, there's a lot going on i need to wrap my head around, or maybe the diff makes it seem like there's more than there really is.

One very nitty thing may be that there's a technical difference between a null when a user initialized but is not in the experiment, and null when the user is not initialized. You wouldn't know which is which in the response. it might not matter for the use-case this is being introduced for in rec-engine... but it could be a gotcha down the line. And this very much depends on stored users, which may complicate trying to do the ephemeral-user thing in experiments... just thinking out loud...

@msandbothe when you get a chance, can you take a look at this also? The responses will look like this, which is a bit different than what was specifically asked for because we wanted to keep the assignment object (the response is an Assignment type) the same as is used elsewhere, so the assignedCondition will be null if the user is not included. Otherwise, you'd want the payload here, so assignedCondition[0].payload.value. Maybe that's a little awkward, we usually are sending objects like this to a client library that parses it.

We wanted to keep this generic and consistent enough with other similar responses that it can be used for other general batch user queries.

{
  "user1": {
    "target": "faketarget3",
    "site": "fakesite3",
    "experimentType": "Simple",
    "assignedCondition": [
      {
        "id": "eb491cba-4da2-407b-89e6-d10dd9bf7f49",
        "conditionCode": "variant",
        "payload": {
          "type": "string",
          "value": "variant"
        },
        "experimentId": "544dd5b2-564d-4e12-9416-7aae99b2f354"
      }
    ]
  },
  "user2": null
}

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds a new batch assignment endpoint /api/batch-assign that allows getting experiment conditions for multiple users in a single request. The implementation includes refactoring existing assignment logic to support batch processing, adding comprehensive validation, and providing extensive test coverage.

Key changes:

  • Introduces getBatchExperimentConditions method for processing multiple users simultaneously
  • Refactors assignment formatting logic into a reusable formatAssignments method
  • Adds new repository methods for batch querying enrollments and exclusions

Reviewed Changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
backend/packages/Upgrade/src/api/controllers/BatchAssignController.ts New controller implementing the batch assignment endpoint with validation and error handling
backend/packages/Upgrade/src/api/services/ExperimentAssignmentService.ts Core batch assignment logic with segment resolution refactoring and formatting utilities
backend/packages/Upgrade/src/api/services/ExperimentUserService.ts Added methods for retrieving multiple user documents
backend/packages/Upgrade/src/api/repositories/*.ts Extended repositories with batch query methods for improved performance
backend/packages/Upgrade/test/unit/services/ExperimentAssignmentService.test.ts Comprehensive test suite covering various batch assignment scenarios

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment thread backend/packages/Upgrade/test/unit/services/ExperimentAssignmentService.test.ts Outdated
Comment thread backend/packages/Upgrade/src/api/services/ExperimentAssignmentService.ts Outdated
Comment thread backend/packages/Upgrade/src/api/controllers/BatchAssignController.ts Outdated
Comment thread backend/packages/Upgrade/src/api/services/FeatureFlagService.ts
Comment thread backend/packages/Upgrade/src/api/services/ExperimentAssignmentService.ts Outdated
@bcb37 bcb37 requested a review from danoswaltCL September 17, 2025 15:33
@bcb37 bcb37 requested a review from danoswaltCL September 24, 2025 21:24
@bcb37 bcb37 merged commit 42e1b88 into dev Sep 25, 2025
10 checks passed
@bcb37 bcb37 deleted the feature/batch-assign branch September 25, 2025 19:25
danoswaltCL added a commit that referenced this pull request Nov 10, 2025
* Auto-remove leading/trailing spaces from all input text (#2537)

* fix entity types; add enum migration (#2551)

* add parent segments list to 'Used By' status of segments (#2543)

* add parent segments list to 'Used By' status of segments

* remove unused data binding

* update no-data message

* Add and display 'status' field of parent segments

* don't await response from csv export endpoint (#2552)

* add mooclet env vars to app-infrastructure.yml (#2555)

* add mooclet env vars to app-infrastructure.yml

* correct ssm value typos

* toggle mooclet on in frontend

* toggle mooclet on in frontend (#2564)

* toggle staging also (#2566)

* Feature/ff ephemeral user options (#2556) (#2573)

* ephemeral ff user groups and remove exposure id FK constraint

* ephemeral ff user groups and remove exposure id FK constraint

* remove comment from ff-exposure model

* use same language in usercheck middleware docs as swagger

* restore condition payload formatting on pagination response (#2574)

* split ScheduledJobService in two to avoid circular dependency (#2575)

* split ScheduledJobService in two to avoid circular dependency

* Update backend/packages/Upgrade/test/unit/services/ScheduledJobService.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update backend/packages/Upgrade/test/unit/services/MoocletExperimentService.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix test suite description for Experiment Scheduler Service

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* add example in add-metrics editor and a link to gitbook (#2581)

* add example in add-metrics editor and a link to gitbook

* remove typo

* filter out _REWARD metrics that do not belong to experiment (#2580)

* filter out _REWARD metrics that do not belong to experiment

* correct for add experiment flow

* clarify logic

* remove console log

* throw errors from axios mooclet requests; but not from deleting mooclet resources (#2582)

* Bump on-headers, compression, morgan and express-session (#2585)

---
updated-dependencies:
- dependency-name: on-headers
  dependency-version: 1.1.0
  dependency-type: indirect
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: direct:production
- dependency-name: morgan
  dependency-version: 1.10.1
  dependency-type: direct:production
- dependency-name: express-session
  dependency-version: 1.18.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update Reward Metric Display (#2583)

* Update Reward Metric Display

* Make the key and value more distinct

* Refine Metrics table for displaying group metrics and categorical type

* Remove bullet from Key and Values

* Bump form-data from 4.0.0 to 4.0.4 in /k6

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.0 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.0...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump form-data from 4.0.1 to 4.0.4 in /backend/packages/Scheduler

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.1 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.1...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump on-headers and compression in /frontend (#2591)

Bumps [on-headers](https://github.com/jshttp/on-headers) and [compression](https://github.com/expressjs/compression). These dependencies needed to be updated together.

Updates `on-headers` from 1.0.2 to 1.1.0
- [Release notes](https://github.com/jshttp/on-headers/releases)
- [Changelog](https://github.com/jshttp/on-headers/blob/master/HISTORY.md)
- [Commits](jshttp/on-headers@v1.0.2...v1.1.0)

Updates `compression` from 1.8.0 to 1.8.1
- [Release notes](https://github.com/expressjs/compression/releases)
- [Changelog](https://github.com/expressjs/compression/blob/master/HISTORY.md)
- [Commits](expressjs/compression@1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: on-headers
  dependency-version: 1.1.0
  dependency-type: indirect
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* clone lists on duplicate (#2588)

* Use new 'repeated_enrollment' table for within-subject experiments (#2559)

* Use new 'repeated_enrollment' table for within-subject experiments

* Update backend/packages/Upgrade/test/integration/ExperimentStats/WithinSubjectEnrollment.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* use relative paths

* fix postgres text case return values

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Bump form-data from 4.0.0 to 4.0.4 in /clientlibs/js

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.0 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.0...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump form-data in /backend/packages/Upgrade (#2604)

Bumps  and [form-data](https://github.com/form-data/form-data). These dependencies needed to be updated together.

Updates `form-data` from 4.0.1 to 4.0.4
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.1...v4.0.4)

Updates `form-data` from 2.5.2 to 4.0.4
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.1...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Resolve segment options not showing in experiment participants include table (#2609)

* fix: resolve segment options not showing in experiment participants include table

* Remove redundant bindParticipantsData call from ngOnInit

* perform all metrics queries in a single transaction (#2610)

* perform all metrics queries in a single transaction

* Update backend/packages/Upgrade/test/unit/services/QueryService.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Bump form-data from 4.0.1 to 4.0.4 in /frontend

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.1 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](form-data/form-data@v4.0.1...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump sha.js from 2.4.11 to 2.4.12 in /backend/packages/Upgrade

Bumps [sha.js](https://github.com/crypto-browserify/sha.js) from 2.4.11 to 2.4.12.
- [Changelog](https://github.com/browserify/sha.js/blob/master/CHANGELOG.md)
- [Commits](browserify/sha.js@v2.4.11...v2.4.12)

---
updated-dependencies:
- dependency-name: sha.js
  dependency-version: 2.4.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump multer and routing-controllers in /backend/packages/Upgrade (#2620)

Bumps [multer](https://github.com/expressjs/multer) to 2.0.2 and updates ancestor dependency [routing-controllers](https://github.com/typestack/routing-controllers). These dependencies need to be updated together.


Updates `multer` from 1.4.5-lts.1 to 2.0.2
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](expressjs/multer@v1.4.5-lts.1...v2.0.2)

Updates `routing-controllers` from 0.11.2 to 0.11.3
- [Release notes](https://github.com/typestack/routing-controllers/releases)
- [Changelog](https://github.com/typestack/routing-controllers/blob/develop/CHANGELOG.md)
- [Commits](typestack/routing-controllers@v0.11.2...v0.11.3)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.0.2
  dependency-type: indirect
- dependency-name: routing-controllers
  dependency-version: 0.11.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump tmp and @inquirer/editor in /frontend (#2619)

Removes [tmp](https://github.com/raszi/node-tmp). It's no longer used after updating ancestor dependency [@inquirer/editor](https://github.com/SBoudrias/Inquirer.js). These dependencies need to be updated together.


Removes `tmp`

Updates `@inquirer/editor` from 4.2.6 to 4.2.17
- [Release notes](https://github.com/SBoudrias/Inquirer.js/releases)
- [Commits](https://github.com/SBoudrias/Inquirer.js/compare/@inquirer/editor@4.2.6...@inquirer/editor@4.2.17)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 
  dependency-type: indirect
- dependency-name: "@inquirer/editor"
  dependency-version: 4.2.17
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* clientlibs: check for cached data in assign and ff calls (#2615)

* clientlibs: check for cached data in assign and ff calls

* Update clientlibs/js/src/UpGradeClient/UpgradeClient.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update clientlibs/js/src/UpGradeClient/UpgradeClient.spec.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* clientlib versions to 6.1.2; update java README (#2634)

* add back files needed for client publish github action (#2637)

* Merge release 6.1 into dev (#2636)

* update env toggle for staging and prod (#2454)

* increase max subsegment depth to 8 (#2462)

* remove joins from findOneSegmentByContextAndType (#2467)

* skip duplicate check for private segments on upsert (#2472)

* put changelog.md for release notes in repo (#2463)

* remove sorting by status from global exclude list (#2476)

* Exclude user with no working group data if there are global group excludes (#2502)

* Auto-remove leading/trailing spaces from user-entered payloads (#2534)

* Feature/ff ephemeral user options (#2556)

* ephemeral ff user groups and remove exposure id FK constraint

* ephemeral ff user groups and remove exposure id FK constraint

* remove comment from ff-exposure model

* use same language in usercheck middleware docs as swagger

* mooclet configs on for staging (#2565)

* recommit

---------

Co-authored-by: Ben Blanchard <bblanchard@carnegielearning.com>
Co-authored-by: Zack Lee <90279765+zackcl@users.noreply.github.com>

* generate new readme (#2641)

* Move tests to jenkins ci (#2639)

* move tests from pre-commit  to jenkinsfile

* lint all the things

* Clear group type when unit of assignment is not Group (#2645)

* Bump axios from 1.8.2 to 1.12.0 in /clientlibs/js (#2652)

Bumps [axios](https://github.com/axios/axios) from 1.8.2 to 1.12.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.8.2...v1.12.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump axios from 1.8.2 to 1.12.2 in /backend/packages/Upgrade (#2653)

Bumps [axios](https://github.com/axios/axios) from 1.8.2 to 1.12.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.8.2...v1.12.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* move jaxb.ws.rs to Jakarta and bump Jersey to 3 (#2654)

* Update clientlibs/java jaxb.ws.rs to Jakarta and bump Jersey to 3

---------

Co-authored-by: doswalt <doswalt@carnegielearning.com>
Co-authored-by: danoswaltCL <97542869+danoswaltCL@users.noreply.github.com>
Co-authored-by: Matt McHenry <mmchenry@carnegielearning.com>

* validate group and group assignment unit agreement in experiment import, add, and update (#2649)

* fix data exports for within-subject experiments (#2605)

* fix data exports for within-subject experiments

* remove unused method; simplify variable

* remove enrollmentComplete experiments from pools unless already enrolled (#2670)

* remove enrollmentComplete experiments from pools unless already enrolled

* Update backend/packages/Upgrade/test/unit/services/ExperimentAssignmentService.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* no multiple assignment per decision point

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add Docker build support for the demo app (#2658)

* Update demo-app.js script and add Docker build support

* Fix the frontend settings to work on /upgrade path for the demo app

* Revert changes made to demo-app.js

* Force user role to Creator when APP_DEMO is true (#2675)

* force user role to Admin when APP_DEMO is true

* force user role to Creator when APP_DEMO is true

* Preverve the admin role on demo mode

* Revert "Preverve the admin role on demo mode"

This reverts commit b21fed9.

* Add batch assign endpoint and functionality (#2613)

* Add batch assign endpoint and functionality

* remove console log and fix reference issue

* remove filtering within-subject experiments

* fix conditionals

* remove 404

* remove extra vars from tests; add return type to method

* refactor methods for readability

* DRY assign methods

* return 'NOT_FOUND' for users that are...not found

* Fix/nav on detail url id segment change (#2677)

* hash navigation helper

* manually tell router to navigate when hashchangeevent fires

* add new parameters to processExperimentPools() in getBatchExperimentConditions() (#2684)

* Bump tar-fs from 2.1.3 to 2.1.4 in /backend/packages/Upgrade (#2683)

Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 2.1.3 to 2.1.4.
- [Commits](mafintosh/tar-fs@v2.1.3...v2.1.4)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 2.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* nav to detail on create, pip exp count if 0 on getExperimentId success, rename confusing observable (#2676)

* add 6.2 release notes (#2685)

* Feature/ts client lib 6 2 (#2686)

* add 6.2 release notes

* get ts client lib version aligned w release version

* update packages to 6.3 (#2687)

* use custom data source for transaction (#2688)

* use custom data source for transaction

* fix test

* use custom data source for transaction (#2688) (#2689)

* use custom data source for transaction

* fix test

* remove transaction from metrics log queries (#2690)

* use transaction entity manager in metrics log queries

* remove transaction

* Update backend/packages/Upgrade/src/api/repositories/LogRepository.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* do not wait for export to finish (#2691)

* toggle within-subjects true for staging tests, mooclet true in prod file (#2692)

* optimize export log query and service method (#2694)

* optimize export log query and service method

* Update backend/packages/Upgrade/src/api/services/AnalyticsService.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update backend/packages/Upgrade/src/api/services/AnalyticsService.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update backend/packages/Upgrade/src/api/services/AnalyticsService.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* use "upgrade-ci" task definition and run integration tests

* change to trigger tests

* set test host to 'localhost'

* Update backend/packages/Upgrade/src/api/services/ExperimentAssignmentService.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Bump validator from 13.12.0 to 13.15.20 in /types (#2706)

Bumps [validator](https://github.com/validatorjs/validator.js) from 13.12.0 to 13.15.20.
- [Release notes](https://github.com/validatorjs/validator.js/releases)
- [Changelog](https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md)
- [Commits](validatorjs/validator.js@13.12.0...13.15.20)

---
updated-dependencies:
- dependency-name: validator
  dependency-version: 13.15.20
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump koa from 3.0.1 to 3.0.3 in /backend/packages/Upgrade (#2700)

Bumps [koa](https://github.com/koajs/koa) from 3.0.1 to 3.0.3.
- [Release notes](https://github.com/koajs/koa/releases)
- [Changelog](https://github.com/koajs/koa/blob/master/History.md)
- [Commits](koajs/koa@v3.0.1...v3.0.3)

---
updated-dependencies:
- dependency-name: koa
  dependency-version: 3.0.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump validator from 13.12.0 to 13.15.20 in /frontend (#2711)

Bumps [validator](https://github.com/validatorjs/validator.js) from 13.12.0 to 13.15.20.
- [Release notes](https://github.com/validatorjs/validator.js/releases)
- [Changelog](https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md)
- [Commits](validatorjs/validator.js@13.12.0...13.15.20)

---
updated-dependencies:
- dependency-name: validator
  dependency-version: 13.15.20
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump typeorm from 0.3.20 to 0.3.26 in /backend/packages/Upgrade (#2709)

Bumps [typeorm](https://github.com/typeorm/typeorm) from 0.3.20 to 0.3.26.
- [Release notes](https://github.com/typeorm/typeorm/releases)
- [Changelog](https://github.com/typeorm/typeorm/blob/master/CHANGELOG.md)
- [Commits](typeorm/typeorm@0.3.20...0.3.26)

---
updated-dependencies:
- dependency-name: typeorm
  dependency-version: 0.3.26
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Display the menu button on the details page to non-Reader roles (#2713)

* Feature/2524 experiment redesign backend 1 (#2538)

* Revert adding 'filtered total' for experiments

* add experiment list endpoints

* copilot review changes

* add swagger annotations and endpoint tests

* Implement experiments root page component and navigation (#2546)

* Implement experiment root section card component (#2549)

* Implement experiment root section card table component (#2553)

* Implement experiment root section card component

* Implement experiment root section card table component

* Fix searching on status

* Implement upsert experiment modal component (#2558)

* Implement upsert experiment modal component

* Resolve all comments

* Remove mistake part

* show experiment list actions in audit logs (#2570)

* show experiment list actions in audit logs

* Update frontend/projects/upgrade/src/app/features/dashboard/logs/components/timeline/timeline.component.html

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* add endpoints for importing and exporting experiment exclusion and in… (#2587)

* add endpoints for importing and exporting experiment exclusion and inclusion lists

* Update backend/packages/Upgrade/src/api/services/ExperimentService.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update backend/packages/Upgrade/src/api/controllers/ExperimentController.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update backend/packages/Upgrade/src/api/controllers/ExperimentController.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* more specific typing

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Implement experiment details page (#2563)

* Implement experiment details page

* Remove mistake part

* Make experiment details page navigation work

* Update ExperimentOverviewDetailsSectionCardComponent and ExperimentDetailsPageContentComponent

* Refine selectExperimentOverviewDetails and update CommonTabbedSectionCardFooterComponent

* Refine experiment details section card components

* Refine en.json file

* Update UpsertExperimentModalComponent to send requests with valid experiment data

* Disable Factorial Experiment Type for v2

* Refactor nested ternaries

* Add strongly-typed DTO interfaces for experiment requests

* Update timeLog type in ExperimentStateTimeLogDTO

* Update ExperimentConditionPayloadDTO to match backend

* Remove redundant comments

* Implement decision points table components (#2599)

* Implement decision points table components

* Remove unused ngOnInit

* Implement conditions table components (#2600)

* Implement decision points table components

* Remove unused ngOnInit

* Implement conditions table component

* Refine the ExperimentConditionsTableComponent

* Remove redundant check

* convert to new list format for all endpoints (#2614)

* Implement experiment include list table component (#2601)

* Implement experiment include list table component

* Refine the inclusions table component

* Implement Include All toggle feature

* Fix the empty Type cell after disabling Include All toggle

* remove redundant API call in updateFilterMode method

* Remove listType preservation

* Simplify the updateFilterMode function

* Implement experiment exclude list table component  (#2612)

* Implement experiment include list table component

* Refine the inclusions table component

* Implement Include All toggle feature

* Fix the empty Type cell after disabling Include All toggle

* remove redundant API call in updateFilterMode method

* Implement experiment exclude list table component

* Disable the slide toggle and action buttons on inclusion table when update permission is now allowed

* Implement experiment metrics table component (#2622)

* Implement experiment metrics table component

* Fix the statistic order for categorical metrics

* Update table row styles

* add experiment list modals and functionality (#2638)

* add experiment list modals and functionality

* Update frontend/projects/upgrade/src/app/core/experiments/store/experiments.reducer.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update frontend/projects/upgrade/src/app/core/experiments/store/experiments.reducer.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* add missing text values

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* add edit-condition-weights modal (#2646)

* add edit-condition-weights modal

* Update frontend/projects/upgrade/src/app/features/dashboard/experiments/modals/edit-condition-weights-modal/edit-condition-weights-modal.component.spec.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove inaccurate comment

* tighten css

* changes to get closer to the spec

* remove unneeded things

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Implement Upsert Decision Point Modal for Experiments (#2633)

* Add upsert decision point modal component

* Implement sendUpsertDecisionPointRequest for Add/Edit Decision Point modal

* Create decision-point-helper.service.ts and implement the Delete Decision Point modal

* Remove unneeded experimentContext input

* Remove redundant fallback

* refactor: add context validation and improve ternary readability

* Fix duplicated import

* condition edit/add/delete modal

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove redundant duplicate check

* remove payload from conditions table (#2704)

* remove payload from conditions table

* fix columns

* fix preexisting typecheck and missed unit tests

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Zack Lee <90279765+zackcl@users.noreply.github.com>
Co-authored-by: Ben Blanchard <bblanchard@carnegielearning.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: ddenniston <106688763+ddenniston@users.noreply.github.com>
Co-authored-by: Matt McHenry <mmchenry@carnegielearning.com>
Co-authored-by: Zack Lee <zlee@carnegielearning.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Batch Assign Endpoint

3 participants