2014-11-16 3 views
0

처음으로 죄송합니다.이 포럼을 잘못된 포럼에 올리면 다른 종류의 문제가 있다는 것을 알고 있습니다. 내 문제는 실제 코드 자체의 문제가 아니라 문제에 대한 해결책을 구현하는 방법에 관한 것입니다.내 솔루션에 대한 리뷰가 필요합니다. 오픈 티켓의 평균 일수 계산하기

사용자가 티켓을 제출할 수있는 지원 시스템이 있다고 가정 해보십시오 (osticket 시스템과 비슷 함). 티켓에는 "제출 된/할당 된"등의 상태가 "닫힌 상태"가 될 때까지 계속 유지할 수 있습니다.

티켓이 열려있는 (제출 된 이후부터 닫을 때까지) 평균 일수를 원한다고 가정하십시오. 이 숫자를 주 단위로 원합니다. 이 문제를 어떻게 풀려고합니까?

내가하는 것은 아래의 의사 코드와 동일합니다.

Pick out all tickets that have ever existed and are in any state = alltheticketsarray 
    for(var i =0; i<alltheticketsarray.length; i++){ 

    var weekarray = //determine which date that is smallest/largest and create an array containing all those weeks and weeks in between. Creating an empty object inside each index with the year-week as a key. 
    } 

    for(var i =0; i < alltheticketsarray.length; i++){ 
     var startdate = //picking out which date a ticket is submitted, converting it into a year-week number to know in which index in weekarray to start. 
    var stop = //getting the week number when the ticket is closed, if not avaliable stop=weekarray.length 

    for(var k =startdate; k < stop; k++){ 
    //add number of days the ticket has been open so far to weekarray, that is 
    number of days so far 
    add that number to weekarray[k].opendays += convertToDays(weekarray[k] - weekarray[startdate]) 
    if(weekarray[k]===weekarray[startdate]){ 
     use moment.js to get which day number (1-7) the submittet value is and add hat value to weekarray[k].opendays 
    } 
    weekarray[k].opentickets++; 
    } 
} 

은 다음 표는 각 주에 공개 된 avarage 일 내가 weekarray[k].opendays/weekarray[k].opentickets

이 당신이이 문제를 해결할 방법이다 걸릴 얻으려면? 내가 부탁하는 이유는 70 일간의 평균과 같은 비합리적인 높은 가치를 계속 유지하기 때문입니다. 이것이 맞는지 확실하지 않습니다. 이

weekarray[k].opendays += convertToDays(weekarray[k] - weekarray[startdate]) 

이 잘되지 않을 수 있습니다 말한다 당신의 의사에 버그가 있습니다

+0

먼저 할 일은 종이에 예를 만들고 그것이 맞는지 확인하는 것입니다. 결과가 정확한지 알 수 없다면 우리가 할 수있는 방법이 없습니다. –

답변

0

내가 정확하게 당신이 코드를 이해하는 경우 convertToDays이 (...) 표현 일 수를 계산하기 때문에 시작일부터 주 'k'까지 그러나 루프의이 시점에서 주 'k'에 대해 opendays에 최대 7을 추가해야합니다 (티켓을 별도로 열 때 첫 번째 주를 처리하는 다음 줄과 비교하십시오).

대부분의 경우 지난주의 첫 주와 비슷한 특수 사례가 있어야합니다.

관련 문제