Skip to content

Commit

Permalink
tweaks and cleanup
Browse files Browse the repository at this point in the history
MattG57 committed Jan 29, 2025
1 parent 9a16fa3 commit daa598c
Showing 9 changed files with 25 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -58,7 +58,7 @@ import { randomInt } from 'crypto';
return newActivity;
}

public generateSeats() {
public generateSeats(counter) {
const newSeatsTemplate = JSON.parse(JSON.stringify(this.baseData));
const newSeatsResponse : any = newSeatsTemplate;
newSeatsResponse.seats = newSeatsTemplate.seats.map((seat: any) => {
@@ -69,13 +69,15 @@ import { randomInt } from 'crypto';



if ( Math.random() < (0.08 + Math.random() * .15 )) {
if ( Math.random() < (0.35 * Math.random() * 2 + counter/2000) ) {
seat.last_activity_editor = this.getRandomEditor();

console.log('last_activity_at \n', seat.last_activity_at);
console.log('config.startDate \n', this.config.startDate);
seat.last_activity_at = this.config.endDate ;
console.log('user \n', seat.assignee.login);
seat.created_at = this.config.startDate;
seat.updated_at = this.config.endDate;

}

return seat;
Original file line number Diff line number Diff line change
@@ -12,6 +12,7 @@ class MockSurveyGenerator {
constructor(config: SurveyMockConfig, templateData: any) {
this.config = config;
this.baseData = templateData;
return Math.floor(Math.random() * 100);
}

private getRandomUserId(): string {
@@ -31,7 +32,11 @@ class MockSurveyGenerator {
}

private getRandomPercentTimeSaved(): number {
return Math.floor(Math.random() * 100);
const x = Math.floor(Math.random() * 100);
if ( x < 50 ){
return Math.floor(Math.random() * 100) || 100;
}
return 100;
}

private getRandomReason(): string {
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ const __dirname = dirname(__filename);
const mockConfig: SurveyMockConfig = {
startDate: new Date('2024-12-30'),
endDate: new Date('2024-12-31'),
userIds: ['nathos', 'mattg57', '04Surf','azizshamim','beardofedu','austenstone','arfon', 'kyanny'],
userIds: ['nathos', 'mattg57', '04Surf','azizshamim','beardofedu','austenstone','arfon', 'kyanny', 'amandahmt', 'jefeish', 'sdehm', 'dgreif', 'matthewisabel', '2percentsilk', 'mariorod','bekahwhittle','AdamTheCreator','bevns'],
orgs: ['octodemo'],
repos: ['github-value', 'github-value-chart'],
reasons: ['Prefilled code blocks for me', 'Helped me generate test data', 'I was able to build a new feature without learning the framework'],
15 changes: 7 additions & 8 deletions backend/src/__tests__/services/calendarClockServiceTests.ts
Original file line number Diff line number Diff line change
@@ -17,10 +17,8 @@ import seatsExample from '../__mock__/seats-gen/seats2.json'; //100 users
let membersOas: any[] = []; //octoaustenstone org
let membersOcto: any[] = []; //octodemo org
let seatsInitialized: boolean = false;
let scaleupDate: any;
let seatsExampleInitialized: any;
let seatsExample2Initialized: any;
let simTime: Date;
let counter = 0;

if (!process.env.MONGODB_URI) throw new Error('MONGODB_URI is not defined');
const database = new Database(process.env.MONGODB_URI);
@@ -104,7 +102,7 @@ const seatsMockConfig: SeatsMockConfig = {
startDate: new Date('2024-11-01'),
endDate: new Date('2025-01-07'),
usagePattern: 'moderate',
heavyUsers: ['nathos', 'arfon', 'kyanny'],
heavyUsers: ['nathos', 'arfon', 'kyanny', 'amandahmt', 'jefeish', 'sdehm', 'dgreif', 'matthewisabel', '2percentsilk', 'mariorod'],
specificUser: 'nathos',
editors: [
'copilot-chat-platform',
@@ -129,7 +127,7 @@ function initializeAllSeats(templateData: any, simTime: Date) {
// Initialize last activity times for all users
templateData.seats.forEach((seat: any) => {
// Use lastActivityAt as needed
seat.last_activity_at = new Date(new Date(simTime).getTime() - 1000 * 60 * 60 * 24 * 1 * templateData.seats.indexOf(seat));
seat.last_activity_at = new Date(new Date(simTime).getTime() - 1000 * 60 * 60 * 24 * 2 * templateData.seats.indexOf(seat));
});
return templateData;
}
@@ -141,14 +139,14 @@ function generateSeatsData(datetime: Date) {
let seatsTemplate = JSON.parse(JSON.stringify(seatsExample));

const mockGenerator = new MockSeatsGenerator(seatsMockConfig, seatsTemplate);
seatsTemplate = mockGenerator.generateSeats();
seatsTemplate = mockGenerator.generateSeats(counter);

return seatsTemplate
}

async function runSurveyGen(datetime: Date) {
if (datetime.getDay() >= 1 && datetime.getDay() <= 5 && datetime.getHours() >= 6 && datetime.getHours() <= 23 && Math.random() < 0.5) {
if (Math.random() < 0.5) {
if (Math.random() < 0.7 +counter/7000) {
console.log('Running Survey Generation...', datetime);
const surveys = await runSurveysForDate(datetime);
for (const survey of surveys.surveys) {
@@ -191,7 +189,7 @@ async function runMetricsGen(datetime: Date) {
}

async function calendarClock() {
let datetime = new Date('2024-12-01T00:00:00');
let datetime = new Date('2024-11-01T00:00:00');
const endDate = new Date('2025-01-28T00:00:00');
console.log('datetime:', datetime);
membersOcto = await TeamsService.getAllMembers('octodemo');
@@ -206,6 +204,7 @@ async function calendarClock() {
await runMetricsGen(datetime);

datetime.setHours(datetime.getHours() + 1);
counter+=1;
console.log('datetime:', datetime);
}

2 changes: 1 addition & 1 deletion backend/src/controllers/survey.controller.ts
Original file line number Diff line number Diff line change
@@ -164,7 +164,7 @@ class SurveyController {
throw new Error('User not found');
}
} catch (error) {
throw new Error('Member lookup failed with', error.message);
throw new Error('Member lookup failed with: ' + (error as any).message);

Check failure

Code scanning / ESLint

Disallow the `any` type Error

Unexpected any. Specify a different type.
}
}
}
2 changes: 1 addition & 1 deletion backend/src/database.ts
Original file line number Diff line number Diff line change
@@ -37,7 +37,7 @@ class Database {
return util.inspect(m, false, 10, true)
.replace(/\n/g, '').replace(/\s{2,}/g, ' ');
};
logger.info(`\x1B[0;36mMongoose:\x1B[0m: ${collectionName}.${methodName}` + `(${methodArgs.map(msgMapper).join(', ')})`);
logger.debug(`\x1B[0;36mMongoose:\x1B[0m: ${collectionName}.${methodName}` + `(${methodArgs.map(msgMapper).join(', ')})`);
});

} catch (error) {
2 changes: 1 addition & 1 deletion backend/src/services/copilot.seats.service.ts
Original file line number Diff line number Diff line change
@@ -35,7 +35,7 @@ class SeatsService {
.sort({ queryAt: -1 }) // -1 for descending order
.select('queryAt');

console.log(`Latest query at: ${latestQuery?.queryAt}`);
//console.log(`Latest query at: ${latestQuery?.queryAt}`);

const seats = await Seats.find({
...(org ? { org } : {}),
Original file line number Diff line number Diff line change
@@ -93,6 +93,7 @@ export class TimeSavedChartComponent implements OnInit, OnChanges {

ngOnChanges() {
if (this.surveys) {
//console.log('Original surveys:', this.surveys);
this._chartOptions = {
...this._chartOptions,
...this.highchartsService.transformSurveysToScatter(this.surveys, this.activity)
Original file line number Diff line number Diff line change
@@ -405,7 +405,7 @@ export class ValueModelingComponent implements OnInit, AfterViewInit {
// 3. Calculate Target column values (percentages and then impacts)
this.gridObject.target.percentSeatsAdopted = this.calculatePercentage(this.gridObject.target.adoptedDevs as number, this.gridObject.target.seats as number);
this.gridObject.target.percentSeatsReportingTimeSavings = this.calculatePercentage(this.gridObject.target.monthlyDevsReportingTimeSavings as number, this.gridObject.target.seats as number);
this.gridObject.target.percentMaxAdopted = this.calculatePercentage(this.gridObject.target.adoptedDevs as number, this.gridObject.target.seats as number);
this.gridObject.target.percentMaxAdopted = this.calculatePercentage(this.gridObject.target.adoptedDevs as number, this.gridObject.max.seats as number);
this.gridObject.target.annualTimeSavingsDollars = this.calculateAnnualTimeSavingsDollars(this.gridObject.target.weeklyTimeSaved as number, this.gridObject.target.adoptedDevs as number);
this.gridObject.target.monthlyTimeSavings = this.calculateMonthlyTimeSavings(this.gridObject.target.adoptedDevs as number, this.gridObject.target.weeklyTimeSaved as number);
this.gridObject.target.productivityBoost = this.calculateProductivityBoost(this.gridObject.target.weeklyTimeSaved as number, this.gridObject.target.adoptedDevs as number, this.gridObject.max.seats as number) * 100;
@@ -442,9 +442,7 @@ export class ValueModelingComponent implements OnInit, AfterViewInit {
}

private calculateMonthlyTimeSavings(adoptedDevs: number, weeklyTimeSaved: number): number {
const weeksInYear = 50;
const weeksInMonth = 4;
const hoursPerWeek = this.hoursPerYear / weeksInYear;
return weeklyTimeSaved * weeksInMonth * adoptedDevs ;
}

@@ -546,7 +544,7 @@ export class ValueModelingComponent implements OnInit, AfterViewInit {
// Process metrics

gridObject.current.dailySuggestions = (Number(dayAtaTimeMetrics.copilot_ide_code_completions?.total_code_suggestions) || 0) / (Number(gridObject.current.adoptedDevs) || 1) || 0;
gridObject.current.dailyChatTurns = (dayAtaTimeMetrics.copilot_ide_chat?.total_chats || 0) / (dayAtaTimeMetrics.total_active_users || 1) || 0;
gridObject.current.dailyChatTurns = (Number(dayAtaTimeMetrics.copilot_ide_chat?.total_chats || 0)) / (dayAtaTimeMetrics.total_active_users || 1) || 0;

}),
tap(({ weekAtaTimeMetrics }) => {

0 comments on commit daa598c

Please sign in to comment.