diff --git a/.vscode/cspell.json b/.vscode/cspell.json index 72973f6bb..a494c9075 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -31,6 +31,7 @@ "Dataframe", "dateutil", "ddof", + "Downcasting", "dropna", "dryrun", "dtype", diff --git a/.vscode/settings.json b/.vscode/settings.json index 4fe15d6c2..ba7116fd2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,26 +9,6 @@ "ruff.path": [ ".venv/bin/ruff" ], - "python.formatting.blackPath": ".venv/bin/black", - "python.formatting.provider": "black", - "python.linting.enabled": true, - "python.linting.lintOnSave": true, - "python.linting.pylintEnabled": true, - "python.linting.pylintPath": ".venv/bin/pylint", - "python.linting.mypyEnabled": true, - "python.linting.mypyPath": ".venv/bin/mypy", - "python.linting.mypyArgs": [], - "python.linting.banditEnabled": false, - "python.linting.pylamaEnabled": false, - "python.linting.prospectorEnabled": false, - "python.linting.pydocstyleEnabled": false, - "python.linting.pycodestyleEnabled": false, - "python.linting.ignorePatterns": [ - ".vscode/*.py", - "**/site-packages/**/*.py", - "docs/**/*.py", - "tests/**/*.py", - ], "python.analysis.extraPaths": [ ".venv/lib/python3.11/site-packages/" ], @@ -49,8 +29,8 @@ ".devcontainer/venv/": true }, "editor.minimap.enabled": false, - "ruff.args": [ + "ruff.lint.args": [ "--config=pyproject.toml" ], - + } \ No newline at end of file diff --git a/annofabcli/statistics/visualization/dataframe/user_performance.py b/annofabcli/statistics/visualization/dataframe/user_performance.py index 7aa0223ff..d17fd4291 100644 --- a/annofabcli/statistics/visualization/dataframe/user_performance.py +++ b/annofabcli/statistics/visualization/dataframe/user_performance.py @@ -96,6 +96,18 @@ def _add_ratio_column_for_productivity_per_user(df: pandas.DataFrame, phase_list """ ユーザーの生産性に関する列を、DataFrameに追加します。 """ + df[("real_monitored_worktime_hour/real_actual_worktime_hour", "sum")] = ( + df[("real_monitored_worktime_hour", "sum")] / df[("real_actual_worktime_hour", "sum")] + ) + + # TODO + # 集計対象タスクから算出した計測作業時間(`monitored_worktime_hour`)に対応する実績作業時間を推定で算出する + # 具体的には、実際の計測作業時間と十先作業時間の比(`real_monitored_worktime_hour/real_actual_worktime_hour`)になるように按分する + df[("actual_worktime_hour", "sum")] = ( + df[("monitored_worktime_hour", "sum")] + / df[("real_monitored_worktime_hour/real_actual_worktime_hour", "sum")] + ) + for phase in phase_list: def get_monitored_worktime_ratio(row: pandas.Series) -> float: @@ -137,6 +149,16 @@ def get_monitored_worktime_ratio(row: pandas.Series) -> float: df[("actual_worktime_hour", phase)] / df[("annotation_count", phase)] ) + ratio__actual_vs_monitored_worktime = ( + df[("actual_worktime_hour", phase)] / df[("monitored_worktime_hour", phase)] + ) + df[("stdev__actual_worktime_hour/input_data_count", phase)] = ( + df[("stdev__monitored_worktime_hour/input_data_count", phase)] * ratio__actual_vs_monitored_worktime + ) + df[("stdev__actual_worktime_hour/annotation_count", phase)] = ( + df[("stdev__monitored_worktime_hour/annotation_count", phase)] * ratio__actual_vs_monitored_worktime + ) + phase = TaskPhase.ANNOTATION.value df[("pointed_out_inspection_comment_count/annotation_count", phase)] = ( df[("pointed_out_inspection_comment_count", phase)] / df[("annotation_count", phase)] @@ -148,9 +170,12 @@ def get_monitored_worktime_ratio(row: pandas.Series) -> float: @staticmethod def get_phase_list(columns: list[tuple[str, str]]) -> list[str]: - # multiindexの2段目を取得する - tmp_set = {c[1] for c in columns} + """ + サポートしているフェーズのlistを取得します。 + `monitored_worktime_hour`列情報を見て、サポートしているフェーズを判断します。 + """ + tmp_set = {c1 for c0, c1 in columns if c0 == "monitored_worktime_hour"} phase_list = [] for phase in TaskPhase: @@ -169,16 +194,23 @@ def empty(cls) -> UserPerformance: """空のデータフレームを持つインスタンスを生成します。""" df_dtype: dict[tuple[str, str], str] = { + ("account_id", ""): "string", ("user_id", ""): "string", ("username", ""): "string", ("biography", ""): "string", ("last_working_date", ""): "string", + ("real_monitored_worktime_hour", "sum"): "float64", + ("real_monitored_worktime_hour", "annotation"): "float64", + ("real_monitored_worktime_hour", "inspection"): "float64", + ("real_monitored_worktime_hour", "acceptance"): "float64", # phaseがinspection, acceptanceの列は出力されない可能性があるので、絶対出力される"sum", "annotation"の列のみ定義する ("monitored_worktime_hour", "annotation"): "float64", ("monitored_worktime_hour", "sum"): "float64", ("task_count", "annotation"): "float64", ("input_data_count", "annotation"): "float64", ("annotation_count", "annotation"): "float64", + ("real_actual_worktime_hour", "sum"): "float64", + ("real_monitored_worktime_hour/real_actual_worktime_hour", "sum"): "float64", ("actual_worktime_hour", "sum"): "float64", ("actual_worktime_hour", "annotation"): "float64", ("pointed_out_inspection_comment_count", "annotation"): "float64", @@ -198,6 +230,7 @@ def from_df( df_task_history: pandas.DataFrame, df_worktime_ratio: pandas.DataFrame, df_user: pandas.DataFrame, + df_worktime_per_date: pandas.DataFrame, df_labor: Optional[pandas.DataFrame] = None, ) -> UserPerformance: """ @@ -215,6 +248,8 @@ def from_df( * rejected_count. * pointed_out_inspection_comment_count + df_user: ユーザー情報が格納されたDataFrame + df_worktime_per_date: 日ごとの作業時間が記載されたDataFrame df_labor: 実績作業時間のDataFrame。以下の列を参照する actual_worktime_hour, date, account_id @@ -222,6 +257,78 @@ def from_df( """ + def join_stdev(df: pandas.DataFrame) -> pandas.DataFrame: + """ + 標準偏差を結合する + """ + if len(df_worktime_ratio) == 0: + # 集計対象のタスクが0件の場合など + # TODO + return df + + df_worktime_ratio2 = df_worktime_ratio.copy() + df_worktime_ratio2["worktime_hour/input_data_count"] = ( + df_worktime_ratio2["worktime_hour"] / df_worktime_ratio2["input_data_count"] + ) + df_worktime_ratio2["worktime_hour/annotation_count"] = ( + df_worktime_ratio2["worktime_hour"] / df_worktime_ratio2["annotation_count"] + ) + + # 母標準偏差を算出する + df_stdev = df_worktime_ratio2.groupby(["account_id", "phase"])[ + ["worktime_hour/input_data_count", "worktime_hour/annotation_count"] + ].std(ddof=0) + + df_stdev2 = pandas.pivot_table( + df_stdev, + values=["worktime_hour/input_data_count", "worktime_hour/annotation_count"], + index="account_id", + columns="phase", + ) + df_stdev3 = df_stdev2.rename( + columns={ + "worktime_hour/input_data_count": "stdev__monitored_worktime_hour/input_data_count", + "worktime_hour/annotation_count": "stdev__monitored_worktime_hour/annotation_count", + } + ) + + return df.join(df_stdev3) + + def join_real_monitored_worktime_hour(df: pandas.DataFrame) -> pandas.DataFrame: + """ + 集計対象タスクに影響されない実際の計測作業時間を、引数`df`に結合して、そのたDataFrameを返します。 + """ + df_agg_worktime = df_worktime_per_date.pivot_table( + values=[ + "monitored_worktime_hour", + "monitored_annotation_worktime_hour", + "monitored_inspection_worktime_hour", + "monitored_acceptance_worktime_hour", + ], + index="account_id", + aggfunc="sum", + ) + + # 列をMultiIndexに変更する + df_agg_worktime = df_agg_worktime[ + [ + "monitored_worktime_hour", + "monitored_annotation_worktime_hour", + "monitored_inspection_worktime_hour", + "monitored_acceptance_worktime_hour", + ] + ] + df_agg_worktime.columns = pandas.MultiIndex.from_tuples( + [ + ("real_monitored_worktime_hour", "sum"), + ("real_monitored_worktime_hour", "annotation"), + ("real_monitored_worktime_hour", "inspection"), + ("real_monitored_worktime_hour", "acceptance"), + ] + ) + + return df.join(df_agg_worktime) + def join_various_counts(df: pandas.DataFrame) -> pandas.DataFrame: """ 生産量や指摘数などの個数情報を引数`df`に結合して、そのDataFrameを返します。 @@ -256,7 +363,7 @@ def join_various_counts(df: pandas.DataFrame) -> pandas.DataFrame: ], columns="phase", index="account_id", - aggfunc=numpy.sum, + aggfunc="sum", ).fillna(0) # 特定のフェーズの生産量の列が存在しないときは、列を追加する @@ -306,14 +413,15 @@ def get_phase_list(columns: list[str]) -> list[str]: # 受入作業が実施されていないのに、"acceptance"列が存在すると、bokehなどでwarningが発生する。それを回避するため df_agg_task_history = ( df_task_history[df_task_history["worktime_hour"] > 0] - .pivot_table(values="worktime_hour", columns="phase", index="account_id", aggfunc=numpy.sum) + .pivot_table(values="worktime_hour", columns="phase", index="account_id", aggfunc="sum") .fillna(0) ) + # TODO 見直す。 `df_labor`は不要だと思う if df_labor is not None and len(df_labor) > 0: - df_agg_labor = df_labor.pivot_table(values="actual_worktime_hour", index="account_id", aggfunc=numpy.sum) + df_agg_labor = df_labor.pivot_table(values="actual_worktime_hour", index="account_id", aggfunc="sum") df_tmp = df_labor[df_labor["actual_worktime_hour"] > 0].pivot_table( - values="date", index="account_id", aggfunc=numpy.max + values="date", index="account_id", aggfunc="max" ) if len(df_tmp) > 0: df_agg_labor["last_working_date"] = df_tmp @@ -345,6 +453,14 @@ def get_phase_list(columns: list[str]) -> list[str]: if len(phase_list) == 0: df[("monitored_worktime_hour", TaskPhase.ANNOTATION.value)] = 0 + # TODO + df[(("real_actual_worktime_hour", "sum"))] = df[(("actual_worktime_hour", "sum"))] + + # 実際の計測作業時間情報(集計タスクに影響されない作業時間)を結合する + df = join_real_monitored_worktime_hour(df) + + df = join_stdev(df) + # 生産量などの情報をdfに結合する df = join_various_counts(df) @@ -356,7 +472,9 @@ def get_phase_list(columns: list[str]) -> list[str]: # ユーザ情報を結合する df = join_user_info(df) - return cls(df) + + # `df.reset_index()`を実行する理由:indexである`account_id`を列にするため + return cls(df.reset_index()) @classmethod def _convert_column_dtypes(cls, df: pandas.DataFrame) -> pandas.DataFrame: @@ -366,7 +484,13 @@ def _convert_column_dtypes(cls, df: pandas.DataFrame) -> pandas.DataFrame: columns = set(df.columns) # 列ヘッダに相当する列名 - basic_columns = [("user_id", ""), ("username", ""), ("biography", ""), ("last_working_date", "")] + basic_columns = [ + ("account_id", ""), + ("user_id", ""), + ("username", ""), + ("biography", ""), + ("last_working_date", ""), + ] value_columns = columns - set(basic_columns) dtypes = {col: "string" for col in basic_columns} @@ -393,11 +517,15 @@ def max_last_working_date(date1: Union[float, str], date2: Union[float, str]) -> return max_date def merge_row(row1: pandas.Series, row2: pandas.Series) -> pandas.Series: - string_column_list = ["username", "biography", "last_working_date"] - sum_row = row1.drop(labels=string_column_list, level=0).fillna(0) + row2.drop( + string_column_list = ["user_id", "username", "biography", "last_working_date"] + # `string_column_list`に対応する列は加算できないので、除外した上で加算する + # `infer_objects(copy=False)`を実行している理由:以下の警告に対応するため + # FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. # noqa: E501 + sum_row = row1.drop(labels=string_column_list, level=0).infer_objects(copy=False).fillna(0) + row2.drop( labels=string_column_list, level=0 - ).fillna(0) + ).infer_objects(copy=False).fillna(0) + sum_row.loc["user_id", ""] = row1.loc["user_id", ""] sum_row.loc["username", ""] = row1.loc["username", ""] sum_row.loc["biography", ""] = row1.loc["biography", ""] sum_row.loc["last_working_date", ""] = max_last_working_date( @@ -408,27 +536,27 @@ def merge_row(row1: pandas.Series, row2: pandas.Series) -> pandas.Series: df1 = obj1.df df2 = obj2.df - user_id_set = set(df1["user_id"]) | set(df2["user_id"]) - sum_df = df1.set_index("user_id").copy() - added_df = df2.set_index("user_id") + account_id_set = set(df1["account_id"]) | set(df2["account_id"]) + sum_df = df1.set_index("account_id").copy() + added_df = df2.set_index("account_id") - for user_id in user_id_set: - if user_id not in added_df.index: + for account_id in account_id_set: + if account_id not in added_df.index: continue - if user_id in sum_df.index: - sum_df.loc[user_id] = merge_row(sum_df.loc[user_id], added_df.loc[user_id]) + if account_id in sum_df.index: + sum_df.loc[account_id] = merge_row(sum_df.loc[account_id], added_df.loc[account_id]) else: - sum_df.loc[user_id] = added_df.loc[user_id] + sum_df.loc[account_id] = added_df.loc[account_id] sum_df.reset_index(inplace=True) # DataFrameを一旦Seriesに変換することで、列の型情報がすべてobjectになるので、再度正しい列の型に変換する sum_df = UserPerformance._convert_column_dtypes(sum_df) - phase_list = UserPerformance.get_phase_list(list(sum_df["monitored_worktime_hour"].columns)) + phase_list = UserPerformance.get_phase_list(sum_df.columns) UserPerformance._add_ratio_column_for_productivity_per_user(sum_df, phase_list=phase_list) - sum_df.sort_values(["user_id"], inplace=True) - return UserPerformance(sum_df) + + return UserPerformance(sum_df.sort_values(["user_id"])) def _validate_df_for_output(self, output_file: Path) -> bool: if len(self.df) == 0: @@ -438,9 +566,23 @@ def _validate_df_for_output(self, output_file: Path) -> bool: @staticmethod def get_productivity_columns(phase_list: list[str]) -> list[tuple[str, str]]: + """ + 生産性に関する情報(作業時間、生産量、生産量あたり作業時間)の列を取得します。 + """ + # `phase_list`を参照しない理由: `phase_list`は集計対象のタスクから求めた作業時間を元に決めている + # `real_monitored_worktime_hour`は実際に作業した時間を表すため、`phase_list`を参照していない。 + # `phase_list`を参照しないことで、以下のケースにも対応できる + # * 実際には受入作業しているが、受入作業を実施したタスクが集計対象でない + real_monitored_worktime_columns = [ + ("real_monitored_worktime_hour", "sum"), + ("real_monitored_worktime_hour", "annotation"), + ("real_monitored_worktime_hour", "inspection"), + ("real_monitored_worktime_hour", "acceptance"), + ] + monitored_worktime_columns = ( - [("monitored_worktime_hour", phase) for phase in phase_list] - + [("monitored_worktime_hour", "sum")] + [("monitored_worktime_hour", "sum")] + + [("monitored_worktime_hour", phase) for phase in phase_list] + [("monitored_worktime_ratio", phase) for phase in phase_list] ) production_columns = ( @@ -449,6 +591,10 @@ def get_productivity_columns(phase_list: list[str]) -> list[tuple[str, str]]: + [("annotation_count", phase) for phase in phase_list] ) + real_actual_worktime_columns = [ + ("real_actual_worktime_hour", "sum"), + ("real_monitored_worktime_hour/real_actual_worktime_hour", "sum"), + ] actual_worktime_columns = [("actual_worktime_hour", "sum")] + [ ("actual_worktime_hour", phase) for phase in phase_list ] @@ -471,13 +617,23 @@ def get_productivity_columns(phase_list: list[str]) -> list[tuple[str, str]]: ("rejected_count/task_count", TaskPhase.ANNOTATION.value), ] + stdev_columns = ( + [("stdev__monitored_worktime_hour/input_data_count", phase) for phase in phase_list] + + [("stdev__actual_worktime_hour/input_data_count", phase) for phase in phase_list] + + [("stdev__monitored_worktime_hour/annotation_count", phase) for phase in phase_list] + + [("stdev__actual_worktime_hour/annotation_count", phase) for phase in phase_list] + ) + prior_columns = ( - monitored_worktime_columns + real_monitored_worktime_columns + + monitored_worktime_columns + production_columns + + real_actual_worktime_columns + actual_worktime_columns + productivity_columns + inspection_comment_columns + rejected_count_columns + + stdev_columns ) return prior_columns @@ -488,7 +644,13 @@ def to_csv(self, output_file: Path) -> None: value_columns = self.get_productivity_columns(self.phase_list) - user_columns = [("user_id", ""), ("username", ""), ("biography", ""), ("last_working_date", "")] + user_columns = [ + ("account_id", ""), + ("user_id", ""), + ("username", ""), + ("biography", ""), + ("last_working_date", ""), + ] columns = user_columns + value_columns print_csv(self.df[columns], str(output_file)) @@ -572,6 +734,10 @@ def _add_ratio_key_for_whole_productivity(series: pandas.Series, phase_list: lis """ # ゼロ割の警告を無視する with numpy.errstate(divide="ignore", invalid="ignore"): + series[("real_monitored_worktime_hour/real_actual_worktime_hour", "sum")] = ( + series[("real_monitored_worktime_hour", "sum")] / series[("real_actual_worktime_hour", "sum")] + ) + for phase in phase_list: # Annofab時間の比率を算出 # 計測作業時間の合計値が0により、monitored_worktime_ratioはnanになる場合は、教師付の実績作業時間を実績作業時間の合計値になるようなmonitored_worktime_ratioに変更する @@ -622,10 +788,12 @@ def get_summary(self) -> pandas.Series: """ columns_for_sum = [ + "real_monitored_worktime_hour", "monitored_worktime_hour", "task_count", "input_data_count", "annotation_count", + "real_actual_worktime_hour", "actual_worktime_hour", "pointed_out_inspection_comment_count", "rejected_count", @@ -1068,6 +1236,20 @@ def to_csv(self, output_file: Path) -> None: indexes = UserPerformance.get_productivity_columns(phase_list) + [ ("working_user_count", phase) for phase in phase_list ] + # TODO 標準偏差は求められないので削除する + for phase in phase_list: + for key in [ + "stdev__monitored_worktime_hour/input_data_count", + "stdev__monitored_worktime_hour/annotation_count", + "stdev__actual_worktime_hour/input_data_count", + "stdev__actual_worktime_hour/annotation_count", + ]: + try: + indexes.remove((key, phase)) + except ValueError: + continue + + indexes = [index for index in indexes if "stdev" not in index[0]] series = self.series[indexes] output_file.parent.mkdir(exist_ok=True, parents=True) diff --git a/annofabcli/statistics/visualization/dataframe/worktime_per_date.py b/annofabcli/statistics/visualization/dataframe/worktime_per_date.py index aa398c7e0..35e8e694b 100644 --- a/annofabcli/statistics/visualization/dataframe/worktime_per_date.py +++ b/annofabcli/statistics/visualization/dataframe/worktime_per_date.py @@ -43,6 +43,7 @@ def __init__(self, df: pandas.DataFrame) -> None: _df_dtype = { "date": "string", + "account_id": "string", "user_id": "string", "username": "string", "biography": "string", @@ -244,7 +245,7 @@ def _get_cumulative_dataframe(df: pandas.DataFrame) -> pandas.DataFrame: def merge(cls, obj1: WorktimePerDate, obj2: WorktimePerDate) -> WorktimePerDate: df_tmp = pandas.concat([obj1.df, obj2.df]) - df = df_tmp.groupby(["date", "user_id"])[ + df = df_tmp.groupby(["date", "account_id"])[ [ "actual_worktime_hour", "monitored_worktime_hour", @@ -255,9 +256,9 @@ def merge(cls, obj1: WorktimePerDate, obj2: WorktimePerDate) -> WorktimePerDate: ].sum() df.reset_index(inplace=True) - df_user = df_tmp.drop_duplicates(subset="user_id")[["user_id", "username", "biography"]] + df_user = df_tmp.drop_duplicates(subset="account_id")[["account_id", "user_id", "username", "biography"]] - df = df.merge(df_user, on="user_id", how="left") + df = df.merge(df_user, on="account_id", how="left") return cls(df) diff --git a/annofabcli/statistics/visualize_statistics.py b/annofabcli/statistics/visualize_statistics.py index 807564ef1..998606be9 100644 --- a/annofabcli/statistics/visualize_statistics.py +++ b/annofabcli/statistics/visualize_statistics.py @@ -54,9 +54,6 @@ def get_project_output_dir(project_title: str) -> str: class WriteCsvGraph: - task_df: Optional[pandas.DataFrame] = None - task_history_df: Optional[pandas.DataFrame] = None - def __init__( self, service: annofabapi.Resource, @@ -81,6 +78,10 @@ def __init__( self.project_dir = ProjectDir(output_dir) + self.task_df: Optional[pandas.DataFrame] = None + self.task_history_df: Optional[pandas.DataFrame] = None + self.worktime_per_date: Optional[WorktimePerDate] = None + def _catch_exception(self, function: Callable[..., Any]) -> Callable[..., Any]: """ Exceptionをキャッチしてログにstacktraceを出力する。 @@ -105,6 +106,13 @@ def _get_task_history_df(self) -> pandas.DataFrame: self.task_history_df = self.table_obj.create_task_history_df() return self.task_history_df + def _get_worktime_per_date(self) -> WorktimePerDate: + if self.worktime_per_date is None: + self.worktime_per_date = WorktimePerDate.from_webapi( + self.service, self.project_id, self.df_labor, start_date=self.start_date, end_date=self.end_date + ) + return self.worktime_per_date + def write_task_info(self) -> None: """ タスクに関するヒストグラムを出力する。 @@ -136,6 +144,7 @@ def write_user_performance(self) -> None: df_task_history=df_task_history, df_worktime_ratio=annotation_count_ratio_df, df_user=df_user, + df_worktime_per_date=self._get_worktime_per_date().df, df_labor=self.df_labor, ) @@ -168,9 +177,7 @@ def write_cumulative_linegraph_by_user(self, user_id_list: Optional[List[str]] = def write_worktime_per_date(self, user_id_list: Optional[List[str]] = None) -> None: """日ごとの作業時間情報を出力する。""" - worktime_per_date_obj = WorktimePerDate.from_webapi( - self.service, self.project_id, self.df_labor, start_date=self.start_date, end_date=self.end_date - ) + worktime_per_date_obj = self._get_worktime_per_date() self.project_dir.write_worktime_per_date_user(worktime_per_date_obj) diff --git "a/tests/data/stat_visualization/visualization-dir/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" "b/tests/data/stat_visualization/visualization-dir/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" index 52c28e90c..d1ecfddd9 100644 --- "a/tests/data/stat_visualization/visualization-dir/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" +++ "b/tests/data/stat_visualization/visualization-dir/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" @@ -1,16 +1,16 @@ -date,user_id,username,biography,actual_worktime_hour,monitored_worktime_hour,monitored_annotation_worktime_hour,monitored_inspection_worktime_hour,monitored_acceptance_worktime_hour -2021-11-01,AE,AE,category-KK,3,2.35747638888889,2.35747638888889,0,0 -2021-11-01,OW,OW,category-KT,5.16666666666667,4.37651388888889,3.43365333333333,0,0.942860555555555 -2021-11-01,KX,KX,category-KT,3.75,1.61257861111111,1.61257861111111,0,0 -2021-11-02,AE,AE,category-KK,2.5,2.33247083333333,2.33247083333333,0,0 -2021-11-02,OW,OW,category-KT,4.83333333333333,4.56632861111111,4.14881194444445,0,0.417516666666667 -2021-11-02,KX,KX,category-KT,0,1.71704527777778,1.71704527777778,0,0 -2021-11-02,EM,EM,category-KT,0,1.59044583333333,0.1913825,0,1.39906333333333 -2021-11-03,EM,EM,category-KT,3,0.846563611111111,0.846563611111111,0,0 -2021-11-04,AE,AE,category-KK,2,1.90333416666667,1.90333416666667,0,0 -2021-11-04,OW,OW,category-KT,5.5,5.42994055555556,3.75310444444445,0,1.67683611111111 -2021-11-04,KX,KX,category-KT,2,1.61104777777778,1.61104777777778,0,0 -2021-11-04,EM,EM,category-KT,3.75,4.790775,3.73020194444444,0,1.06057305555556 -2021-11-05,AE,AE,category-KK,1,1.0133925,1.0133925,0,0 -2021-11-05,OW,OW,category-KT,5.16666666666667,5.04375055555556,3.25301527777778,0,1.79073527777778 -2021-11-05,KX,KX,category-KT,2.5,0.902265833333333,0.902265833333333,0,0 +date,account_id,user_id,username,biography,actual_worktime_hour,monitored_worktime_hour,monitored_annotation_worktime_hour,monitored_inspection_worktime_hour,monitored_acceptance_worktime_hour +2021-11-01,AE,AE,AE,category-KK,3,2.357476389,2.357476389,0,0 +2021-11-01,OW,OW,OW,category-KT,5.166666667,4.376513889,3.433653333,0,0.942860556 +2021-11-01,KX,KX,KX,category-KT,3.75,1.612578611,1.612578611,0,0 +2021-11-02,AE,AE,AE,category-KK,2.5,2.332470833,2.332470833,0,0 +2021-11-02,OW,OW,OW,category-KT,4.833333333,4.566328611,4.148811944,0,0.417516667 +2021-11-02,KX,KX,KX,category-KT,0,1.717045278,1.717045278,0,0 +2021-11-02,EM,EM,EM,category-KT,0,1.590445833,0.1913825,0,1.399063333 +2021-11-03,EM,EM,EM,category-KT,3,0.846563611,0.846563611,0,0 +2021-11-04,AE,AE,AE,category-KK,2,1.903334167,1.903334167,0,0 +2021-11-04,OW,OW,OW,category-KT,5.5,5.429940556,3.753104444,0,1.676836111 +2021-11-04,KX,KX,KX,category-KT,2,1.611047778,1.611047778,0,0 +2021-11-04,EM,EM,EM,category-KT,3.75,4.790775,3.730201944,0,1.060573056 +2021-11-05,AE,AE,AE,category-KK,1,1.0133925,1.0133925,0,0 +2021-11-05,OW,OW,OW,category-KT,5.166666667,5.043750556,3.253015278,0,1.790735278 +2021-11-05,KX,KX,KX,category-KT,2.5,0.902265833,0.902265833,0,0 diff --git a/tests/data/statistics/productivity-per-user2.csv b/tests/data/statistics/productivity-per-user2.csv index c8e809ea7..d0c77f690 100644 --- a/tests/data/statistics/productivity-per-user2.csv +++ b/tests/data/statistics/productivity-per-user2.csv @@ -1,58 +1,58 @@ -user_id,username,biography,last_working_date,monitored_worktime_hour,monitored_worktime_hour,monitored_worktime_hour,monitored_worktime_ratio,monitored_worktime_ratio,task_count,task_count,input_data_count,input_data_count,annotation_count,annotation_count,actual_worktime_hour,actual_worktime_hour,actual_worktime_hour,monitored_worktime_hour/input_data_count,monitored_worktime_hour/input_data_count,actual_worktime_hour/input_data_count,actual_worktime_hour/input_data_count,monitored_worktime_hour/annotation_count,monitored_worktime_hour/annotation_count,actual_worktime_hour/annotation_count,actual_worktime_hour/annotation_count,pointed_out_inspection_comment_count,pointed_out_inspection_comment_count/input_data_count,pointed_out_inspection_comment_count/annotation_count,rejected_count,rejected_count/task_count -,,,,annotation,acceptance,sum,annotation,acceptance,annotation,acceptance,annotation,acceptance,annotation,acceptance,sum,annotation,acceptance,annotation,acceptance,annotation,acceptance,annotation,acceptance,annotation,acceptance,annotation,annotation,annotation,annotation,annotation -KD,KD,category-KK,2020-06-04,1.4887575,65.4255652777777,66.9143227777777,0.02224871205742,0.97775128794258,15,1321.11277740651,15,1321.11277740651,149,13189.5822598267,238.483333333333,5.30594701382691,233.177386319506,0.0992505,0.049523073576062,0.353729800921794,0.176500742637021,0.009991661073826,0.004960397076187,0.035610382643134,0.017678906103776,5,0.333333333333333,0.033557046979866,2,0.133333333333333 -C,C,category-KK,2020-06-04,105.095032222222,0,105.095032222222,1,0,1162,0,1162,0,11176,0,126,126,0,0.090443229106904,,0.108433734939759,,0.009403635667701,,0.011274158911954,,695,0.598106712564544,0.062186828919112,392,0.337349397590361 -MY,MY,category-KK,2020-06-05,14.5297083333333,200.357874722222,214.887583055556,0.06761539278692,0.93238460721308,142,1747.02800820044,142,1747.02800820044,1350,18135.0086659234,642.5,43.4428898655963,599.057110134404,0.102321889671362,0.114684981455223,0.305935844123917,0.342900690385309,0.01076274691358,0.011048126770334,0.03217991841896,0.033033185766272,33,0.232394366197183,0.024444444444445,19,0.133802816901408 -BD,BD,category-KK,2020-05-13,74.3195966666666,0,74.3195966666666,1,0,334.998009296363,0,334.998009296363,0,3368.92634396544,0,78.0833333333333,78.0833333333333,0,0.22185086061487,,0.233085962204197,,0.022060321027734,,0.023177512762545,,182.998009296363,0.546265960447753,0.054319385647643,112.998009296363,0.337309494864482 -LD,LD,category-KK,2020-06-04,24.8860130555556,172.415077777778,197.301090833334,0.126132161512364,0.873867838487636,152,1395.00289331716,152,1395.00289331716,1661,14321.1825494169,595.083333333333,75.0591471133158,520.024186220018,0.163723770102339,0.123594781490234,0.493810178377078,0.372776421261363,0.014982548498227,0.012039164865251,0.045189131314459,0.036311539527243,38,0.25,0.022877784467189,24,0.157894736842105 -X,X,category-KK,2020-04-21,35.2398797222222,0,35.2398797222222,1,0,72,0,72,0,753,0,34.85,34.85,0,0.489442773919753,,0.484027777777778,,0.046799309060056,,0.046281540504648,,49,0.680555555555556,0.065073041168659,33,0.458333333333333 -YX,YX,category-KK,2020-06-04,24.420095,159.282004166667,183.702099166667,0.132933129837806,0.867066870162194,189,1968.61342715442,189,1968.61342715442,1876,19963.4683940479,596.983333333333,79.3588629610061,517.624470372327,0.129206851851852,0.080910757779858,0.419888163814847,0.262938606042397,0.013017108208955,0.007978673896874,0.042302165757466,0.025928584159587,42,0.222222222222222,0.022388059701493,31,0.164021164021164 -E,E,category-KK,2020-06-03,164.383726666666,0,164.383726666666,1,0,1538,0,1538,0,14511,0,193.966666666667,193.966666666667,0,0.106881486779367,,0.126116168183788,,0.011328214917419,,0.013366871109274,,669,0.434980494148245,0.04610295637792,405,0.26332899869961 -LJ,LJ,category-KK,2020-06-05,15.5984483333333,154.551692499999,170.150140833333,0.091674613120729,0.908325386879271,178,5173.97724228541,178,5173.97724228541,1964,48798.6777880525,508.466666666667,46.6134849514534,461.853181715213,0.087631732209738,0.029870964881116,0.261873510963221,0.089264633392784,0.007942183469111,0.003167128690889,0.02373395364127,0.00946446097825,25,0.140449438202247,0.012729124236253,23,0.129213483146067 -QU,QU,category-KK,2020-06-04,233.321729444445,0,233.321729444445,1,0,2803.8869894659,0,2803.8869894659,0,24650.4178525226,0,326.433333333333,326.433333333333,0,0.083213670993526,,0.116421715482732,,0.009465224112644,,0.013242507096079,,1206,0.430117192501301,0.048924119956716,714.886989465903,0.254962839854711 -M,M,category-KK,2020-05-13,9.15181055555556,59.2349966666666,68.3868072222222,0.133824211529818,0.866175788470182,146,680.324471840845,146,680.324471840845,1238,6264.7958303624,75.5833333333333,10.1148799881288,65.4684533452046,0.062683633942161,0.08706874310487,0.06927999991869,0.096231219153499,0.007392415634536,0.009455215823568,0.008170339247277,0.010450213401674,68,0.465753424657534,0.054927302100162,41,0.280821917808219 -FX,FX,category-KK,2020-06-05,14.5327161111111,120.615396111111,135.148112222222,0.107531772898279,0.892468227101721,175,1620.88471870508,175,1620.88471870508,1232,15418.7172863286,176.283333333333,18.9560593657516,157.327273967582,0.083044092063492,0.074413309422443,0.108320339232866,0.097062593133255,0.011796035804473,0.007822660852473,0.01538641182285,0.010203655144976,33,0.188571428571429,0.026785714285714,24,0.137142857142857 -IE,IE,category-KK,2020-06-05,6.85908527777778,67.9477336111111,74.8068188888889,0.091690642372664,0.908309357627335,62,834.686096626054,62,834.686096626054,759,8358.85346154303,272.483333333333,24.9841718691781,247.499161464155,0.110630407706093,0.081405134080665,0.402970514019002,0.296517651922788,0.009037003001025,0.008128834166518,0.032917222489036,0.0296092236337,9,0.145161290322581,0.011857707509882,7,0.112903225806452 -MF,MF,category-KK,2020-06-05,7.28984944444445,168.490687777778,175.780537222222,0.041471311668758,0.958528688331242,68,1986.46995310794,68,1986.46995310794,642,20304.4799275324,445.366666666667,18.4699398402091,426.896726826458,0.107203668300654,0.084819147409788,0.271616762356016,0.214902181711107,0.011354905676705,0.008298202582835,0.028769376698145,0.021024755539175,4,0.058823529411765,0.006230529595016,3,0.044117647058824 -KM,KM,category-KK,2020-05-15,15.26164,84.1011827777778,99.3628227777778,0.153595072818455,0.846404927181545,37.0019907036366,423.020701676931,37.0019907036366,423.020701676931,457.073656034556,4585.05813912056,434.783333333333,66.7805777435838,368.00275558975,0.412454565545849,0.198811033229308,1.80478337715545,0.869940298739327,0.033389891975849,0.018342446317139,0.146104630756788,0.08026130627437,16.0019907036366,0.432462967514446,0.035009654335508,7.00199070363664,0.189232810734923 -PG,PG,category-KK,2020-06-05,16.8874977777778,163.2386475,180.126145277778,0.093753728820073,0.906246271179927,132,2114.11774473321,132,2114.11774473321,1083,20479.1842080451,216.5,20.2976822895457,196.202317710454,0.127935589225589,0.077213602651351,0.153770320375346,0.092805766471259,0.015593257412537,0.007970954596711,0.018742088910015,0.009580572923084,34,0.257575757575758,0.031394275161588,28,0.212121212121212 -IO,IO,category-U,2020-06-05,133.499571944444,0,133.499571944444,1,0,1721,0,1721,0,17153,0,177.5,177.5,0,0.077570930821874,,0.103137710633353,,0.007782870165245,,0.010348044073923,,386,0.224288204532249,0.022503352183292,245,0.142359093550261 -BF,BF,category-U,2020-06-05,157.902376666667,0,157.902376666667,1,0,1883,0,1883,0,18348,0,192,192,0,0.083856811825102,,0.101964949548593,,0.008605972131386,,0.010464355788097,,747,0.396707381837493,0.040712884238064,432,0.229421136484333 -GZ,GZ,category-U,2020-06-05,218.533596666666,0,218.533596666666,1,0,1985,0,1985,0,19026,0,285.75,285.75,0,0.110092492023509,,0.143954659949622,,0.011486050492309,,0.015018921475875,,714,0.359697732997481,0.037527593818985,416,0.209571788413098 -AL,AL,category-U,2020-06-05,116.861481944444,0,116.861481944444,1,0,2332,0,2332,0,21978,0,171,171,0,0.050112127763484,,0.073327615780446,,0.005317202745675,,0.007780507780508,,1271,0.545025728987993,0.057830557830558,684,0.293310463121784 -YV,YV,category-U,2020-06-04,139.941278055556,0,139.941278055556,1,0,1056,0,1056,0,10338,0,179.75,179.75,0,0.132520149673822,,0.170217803030303,,0.013536591028783,,0.017387308957245,,417,0.394886363636364,0.040336622170633,252,0.238636363636364 -QP,QP,category-U,2020-05-18,69.4883908333333,0,69.4883908333333,1,0,579.945338242341,0,579.945338242341,0,4908.01608836214,0,89.5,89.5,0,0.119818862660288,,0.154324889085669,,0.014158142431135,,0.018235474046677,,197.836014727023,0.341128726591045,0.04030875432461,120.945338242341,0.208546099549475 -CQ,CQ,category-U,2020-06-05,91.1784125,0,91.1784125,1,0,797,0,797,0,8317,0,122.5,122.5,0,0.114402023212045,,0.153701380175659,,0.010962896777684,,0.014728868582422,,187,0.234629861982434,0.022484068774799,113,0.141781681304893 -KE,KE,category-U,2020-06-05,187.634903611111,0,187.634903611111,1,0,1920,0,1920,0,18454,0,225.5,225.5,0,0.097726512297454,,0.117447916666667,,0.010167709093482,,0.012219572992305,,489,0.2546875,0.026498320147394,350,0.182291666666667 -QT,QT,category-U,2020-06-05,110.984493333333,0,110.984493333333,1,0,1041,0,1041,0,9901,0,141.25,141.25,0,0.106613346141531,,0.135686839577329,,0.011209422617244,,0.014266235733764,,294,0.282420749279539,0.02969397030603,184,0.176753121998079 -CU,CU,category-U,2020-06-05,168.128474444445,0,168.128474444445,1,0,1405,0,1405,0,13784,0,227.5,227.5,0,0.119664394622381,,0.161921708185053,,0.012197364657897,,0.016504643064423,,391,0.278291814946619,0.028366221706326,245,0.174377224199288 -RN,RN,category-U,2020-05-13,34.999655,0,34.999655,1,0,349,0,349,0,3276,0,41.25,41.25,0,0.100285544412607,,0.118194842406877,,0.010683655372405,,0.012591575091575,,218,0.624641833810888,0.066544566544567,129,0.369627507163324 -CY,CY,category-U,2020-06-05,109.293472777778,0,109.293472777778,1,0,1266.64020833582,0,1266.64020833582,0,12236.6825000298,0,147.5,147.5,0,0.086286122972027,,0.116449800842651,,0.008931626098619,,0.012053920660248,,307,0.242373483787755,0.025088499272516,209,0.165003446617723 -OW,OW,category-U,2020-06-05,26.3924719444444,69.2018177777778,95.5942897222222,0.276088373281873,0.723911626718127,405,1127.82056339433,405,1127.82056339433,3805,10935.2173705458,143,39.4806373793079,103.519362620692,0.06516659739369,0.061358889901338,0.09748305525755,0.091787085623919,0.006936260694992,0.006328344049582,0.010375988798767,0.00946660309648,165,0.407407407407407,0.043363994743758,109,0.269135802469136 -IS,IS,category-U,2020-06-04,186.390688055556,0,186.390688055556,1,0,2016,0,2016,0,19491,0,238,238,0,0.092455698440256,,0.118055555555556,,0.00956291047435,,0.012210763942332,,599,0.297123015873016,0.030732132779232,372,0.18452380952381 -DA,DA,category-U,2020-06-05,185.010624444444,0,185.010624444444,1,0,1533,0,1533,0,15364,0,229.5,229.5,0,0.120685338841777,,0.149706457925636,,0.012041826636582,,0.014937516271804,,360,0.234833659491194,0.023431398073418,236,0.153946510110894 -TS,TS,category-U,2020-06-05,57.7882713888889,137.933798333333,195.722069722222,0.295256796900343,0.704743203099657,743,1506.12403173895,743,1506.12403173895,6712,15077.6312294665,249.25,73.5927566274105,175.65724337259,0.077776946687603,0.091581964982045,0.099048124666771,0.116628670462006,0.008609694783803,0.009148240611149,0.010964355874167,0.011650188328608,281,0.378196500672947,0.041865315852205,166,0.223418573351279 -HY,HY,category-U,2020-06-05,127.119925,0,127.119925,1,0,1482,0,1482,0,14471,0,169.75,169.75,0,0.08577592780027,,0.114541160593792,,0.00878446029991,,0.011730357266257,,458,0.309041835357625,0.031649505908369,315,0.212550607287449 -NM,NM,category-U,2020-05-13,69.6266491666667,0,69.6266491666667,1,0,391,0,391,0,3710,0,80.5,80.5,0,0.178073271526002,,0.205882352941176,,0.018767290880503,,0.021698113207547,,139,0.355498721227621,0.037466307277628,85,0.217391304347826 -SW,SW,category-U,2020-06-04,122.378538888889,0,122.378538888889,1,0,1263,0,1263,0,12060,0,158.5,158.5,0,0.096895121843934,,0.125494853523357,,0.010147474203059,,0.013142620232173,,166,0.131433095803642,0.013764510779436,118,0.093428345209818 -DJ,DJ,category-U,2020-06-04,227.973279722222,0,227.973279722222,1,0,3028,0,3028,0,29051,0,299.25,299.25,0,0.075288401493469,,0.098827608982827,,0.007847347069713,,0.010300850228908,,1009,0.333223249669749,0.034732022994045,645,0.213011889035667 -CE,CE,category-U,2020-05-13,48.3923730555555,0,48.3923730555555,1,0,229,0,229,0,2084,0,66,66,0,0.211320406356138,,0.2882096069869,,0.023220908375986,,0.031669865642994,,102,0.445414847161572,0.0489443378119,49,0.213973799126638 -OL,OL,category-KT,2020-06-04,11.8600841666667,109.177951111111,121.038035277778,0.097986423354016,0.902013576645984,170.113010534097,856.836964223544,170.113010534097,856.836964223544,1508.58214747736,8198.46711832427,299.333333333333,29.3306027239688,270.002730609365,0.069718854127794,0.127419749228544,0.172418339031686,0.315115642628744,0.007861742356224,0.013316873695461,0.019442496235963,0.032933318718311,22,0.129325793076776,0.014583229714595,20.1130105340972,0.118233229021985 -EM,EM,category-KT,2020-05-13,30.1749586111111,65.5572791666666,95.7322377777777,0.315201642743962,0.684798357256038,430.054661757659,1368.61805759859,430.054661757659,1368.61805759859,3404.98391163786,12968.0196160438,126.5,39.8730078071111,86.6269921928889,0.070165402899679,0.04790034648651,0.09271613902323,0.063295228140484,0.008861997411493,0.005055303824923,0.01171018978117,0.006680047899196,155.163985272977,0.360800612272897,0.045569667669396,105.054661757659,0.244282113646424 -IY,IY,category-KT,2020-06-01,2.06921583333333,223.448476944444,225.517692777777,0.009175403525311,0.990824596474688,21,2041.40856400591,21,2041.40856400591,196,19317.3980348712,807,7.40455064492637,799.595449355074,0.098534087301587,0.109457989392366,0.352597649758399,0.391688103720897,0.010557223639456,0.011567213997511,0.037778319616971,0.041392502650288,4,0.190476190476191,0.020408163265306,4,0.190476190476191 -BZ,BZ,category-KT,2020-06-04,0,0.510636388888889,0.510636388888889,0,1,0,6.98683595102307,0,6.98683595102307,0,88.6944384636581,324.983333333333,0,324.983333333333,,0.073085498567362,,46.5136630674357,,0.005757253754959,,3.66407791697664,0,,,0, -SL,SL,category-KT,2020-05-13,15.8854580555556,95.3140225,111.199480555556,0.142855505944735,0.857144494055265,418,2857.04606014579,418,2857.04606014579,3698,25745.5239338163,132.833333333333,18.9759730396589,113.857360293674,0.038003488171186,0.033361038111908,0.045397064688179,0.039851426227222,0.004295689036116,0.003702158975091,0.005131415099962,0.004422413798467,326,0.779904306220096,0.0881557598702,127,0.303827751196172 -SP,SP,category-KT,2020-05-14,125.829991944444,0,125.829991944444,1,0,1437,0,1437,0,13428,0,147.383333333333,147.383333333333,0,0.087564364609913,,0.10256321039202,,0.009370717302982,,0.01097582166617,,494,0.343771746694502,0.036788799523384,301,0.20946416144746 -BV,BV,category-KT,2020-05-13,10.8114383333333,78.1788930555556,88.9903313888889,0.121490033406969,0.878509966593031,171,2543.25417005877,171,2543.25417005877,1578,22168.243685026,119.916666666667,14.5686798393857,105.347986827281,0.063224785575049,0.030739708982272,0.085196958125062,0.041422516108505,0.006851355090832,0.003526616459398,0.009232369986936,0.004752202669914,69,0.403508771929825,0.043726235741445,47,0.274853801169591 -KA,KA,category-KT,2020-05-14,32.3911402777778,0,32.3911402777778,1,0,207,0,207,0,2007,0,41.75,41.75,0,0.156478938539989,,0.201690821256039,,0.016139083347174,,0.020802192326856,,150,0.72463768115942,0.074738415545591,87,0.420289855072464 -DU,DU,category-KT,2020-05-12,14.1988183333333,53.5104577777777,67.7092761111111,0.209702704693417,0.790297295306583,261,1072.220866141,261,1072.220866141,2300,9291.85006753075,325.583333333333,68.2757056030982,257.307627730235,0.054401602809706,0.049906189543173,0.261592741774323,0.239976329369809,0.006173399275362,0.005758859364807,0.029685089392651,0.02769175415662,58,0.222222222222222,0.025217391304348,21,0.080459770114943 -FD,FD,category-KT,2020-06-02,177.674615833333,0,177.674615833333,1,0,1142,0,1142,0,10897,0,227.55,227.55,0,0.155581975335668,,0.199255691768827,,0.016304911061148,,0.020881894099293,,542,0.474605954465849,0.04973846012664,297,0.260070052539405 -XU,XU,category-KT,2020-06-03,28.1891172222222,177.526127222222,205.715244444445,0.137029792314857,0.862970207685143,550,3625.27943700758,550,3625.27943700758,5149,33606.6120272167,608.766666666667,83.4191699015409,525.347496765126,0.051252940404041,0.048968949927004,0.151671218002802,0.144912276665427,0.005474678038886,0.005282476171012,0.016201042901834,0.015632265946346,66,0.12,0.012818022917071,52,0.094545454545455 -BH,BH,category-KT,2020-05-12,22.4437813888889,92.5059150000001,114.949696388889,0.195248722649591,0.804751277350409,332,1796.78381016558,332,1796.78381016558,2686,16295.1117087086,150.5,29.3849327587635,121.115067241237,0.067601751171352,0.051484165472014,0.088508833610733,0.067406588681404,0.008355838193927,0.005676911987695,0.010940034534164,0.007432601224606,142,0.427710843373494,0.052866716306776,93,0.280120481927711 -MI,MI,category-KT,2020-06-05,32.0614363888889,133.53672,165.598156388889,0.193609863104974,0.806390136895026,223.909516586948,2711.59983449273,223.909516586948,2711.59983449273,2127.00936491287,26751.8526327895,216.75,41.9649378280032,174.785062171997,0.143189252862501,0.04924647003638,0.187419179263456,0.064458280292193,0.015073481535989,0.004991681205522,0.019729550099899,0.006533568518457,94.9095165869485,0.423874420496519,0.044621108939422,64.9095165869485,0.289891727588733 -XK,XK,category-AH,2020-05-14,202.647436944444,0,202.647436944444,1,0,1178,0,1178,0,10545,0,216.75,216.75,0,0.172026686710055,,0.183998302207131,,0.019217395632475,,0.020554765291607,,271,0.230050933786078,0.025699383594121,182,0.154499151103565 -Q,Q,category-AH,2020-05-14,1.76916694444444,0,1.76916694444444,1,0,13,0,13,0,110,0,2.5,2.5,0,0.136089764957265,,0.192307692307692,,0.016083335858586,,0.022727272727273,,6,0.461538461538462,0.054545454545455,6,0.461538461538462 -UK,UK,category-KK,2020-06-05,169.329715555556,0,169.329715555556,1,0,2431,0,2431,0,22920,0,224.75,224.75,0,0.069654346176699,,0.092451665981078,,0.007387858444832,,0.009805846422339,,842,0.346359522830111,0.03673647469459,513,0.211024269847799 -RF,RF,category-KK,2020-06-05,155.029423611111,0,155.029423611111,1,0,1521,0,1521,0,14601,0,185.75,185.75,0,0.101925985280152,,0.122123602892834,,0.010617726430458,,0.012721731388261,,422,0.277449046679816,0.028902129991097,272,0.178829717291256 -RW,RW,category-KK,2020-06-05,2.26514388888889,97.6203188888888,99.8854627777776,0.022677412967774,0.977322587032226,30.0904834130515,936.346158260935,30.0904834130515,936.346158260935,270.990635087134,9956.86507681643,359.5,8.15252996191478,351.347470038085,0.075277750037954,0.104256655540936,0.270933831471072,0.375232457503365,0.008358753387033,0.0098043227598,0.030084176005911,0.035286957021861,2.09048341305153,0.069473241235626,0.007714227513358,2.09048341305153,0.069473241235626 -NG,NG,category-KK,2020-06-05,12.9764363888889,175.193346388889,188.169782777778,0.068961318854333,0.931038681145667,313,5378.08849336533,313,5378.08849336533,2943,50685.5779559726,510.716666666667,35.219694894222,475.496971772445,0.041458263223287,0.032575393023937,0.112522986882499,0.088413750045028,0.004409254634349,0.003456473289918,0.011967276552573,0.009381307088685,30,0.095846645367412,0.010193679918451,20,0.063897763578275 +account_id,user_id,username,biography,last_working_date,real_monitored_worktime_hour,real_monitored_worktime_hour,real_monitored_worktime_hour,real_monitored_worktime_hour,monitored_worktime_hour,monitored_worktime_hour,monitored_worktime_hour,monitored_worktime_ratio,monitored_worktime_ratio,task_count,task_count,input_data_count,input_data_count,annotation_count,annotation_count,real_actual_worktime_hour,actual_worktime_hour,actual_worktime_hour,actual_worktime_hour,monitored_worktime_hour/input_data_count,monitored_worktime_hour/input_data_count,actual_worktime_hour/input_data_count,actual_worktime_hour/input_data_count,monitored_worktime_hour/annotation_count,monitored_worktime_hour/annotation_count,actual_worktime_hour/annotation_count,actual_worktime_hour/annotation_count,pointed_out_inspection_comment_count,pointed_out_inspection_comment_count/input_data_count,pointed_out_inspection_comment_count/annotation_count,rejected_count,rejected_count/task_count +,,,,,sum,annotation,inspection,acceptance,annotation,acceptance,sum,annotation,acceptance,annotation,acceptance,annotation,acceptance,annotation,acceptance,sum,sum,annotation,acceptance,annotation,acceptance,annotation,acceptance,annotation,acceptance,annotation,acceptance,annotation,annotation,annotation,annotation,annotation +KD,KD,KD,category-KK,2020-06-04,66.91432278,1.4887575,0,65.42556528,1.4887575,65.42556528,66.91432278,0.022248712,0.977751288,15,1321.112777,15,1321.112777,149,13189.58226,238.4833333,238.4833333,5.305947014,233.1773863,0.0992505,0.049523074,0.353729801,0.176500743,0.009991661,0.004960397,0.035610383,0.017678906,5,0.333333333,0.033557047,2,0.133333333 +C,C,C,category-KK,2020-06-04,105.0950322,105.0950322,0,0,105.0950322,0,105.0950322,1,0,1162,0,1162,0,11176,0,126,126,126,0,0.090443229,,0.108433735,,0.009403636,,0.011274159,,695,0.598106713,0.062186829,392,0.337349398 +MY,MY,MY,category-KK,2020-06-05,214.8875831,14.52970833,0,200.3578747,14.52970833,200.3578747,214.8875831,0.067615393,0.932384607,142,1747.028008,142,1747.028008,1350,18135.00867,642.5,642.5,43.44288987,599.0571101,0.10232189,0.114684981,0.305935844,0.34290069,0.010762747,0.011048127,0.032179918,0.033033186,33,0.232394366,0.024444444,19,0.133802817 +BD,BD,BD,category-KK,2020-05-13,74.31959667,74.31959667,0,0,74.31959667,0,74.31959667,1,0,334.9980093,0,334.9980093,0,3368.926344,0,78.08333333,78.08333333,78.08333333,0,0.221850861,,0.233085962,,0.022060321,,0.023177513,,182.9980093,0.54626596,0.054319386,112.9980093,0.337309495 +LD,LD,LD,category-KK,2020-06-04,197.3010908,24.88601306,0,172.4150778,24.88601306,172.4150778,197.3010908,0.126132162,0.873867838,152,1395.002893,152,1395.002893,1661,14321.18255,595.0833333,595.0833333,75.05914711,520.0241862,0.16372377,0.123594781,0.493810178,0.372776421,0.014982548,0.012039165,0.045189131,0.03631154,38,0.25,0.022877784,24,0.157894737 +X,X,X,category-KK,2020-04-21,35.23987972,35.23987972,0,0,35.23987972,0,35.23987972,1,0,72,0,72,0,753,0,34.85,34.85,34.85,0,0.489442774,,0.484027778,,0.046799309,,0.046281541,,49,0.680555556,0.065073041,33,0.458333333 +YX,YX,YX,category-KK,2020-06-04,183.7020992,24.420095,0,159.2820042,24.420095,159.2820042,183.7020992,0.13293313,0.86706687,189,1968.613427,189,1968.613427,1876,19963.46839,596.9833333,596.9833333,79.35886296,517.6244704,0.129206852,0.080910758,0.419888164,0.262938606,0.013017108,0.007978674,0.042302166,0.025928584,42,0.222222222,0.02238806,31,0.164021164 +E,E,E,category-KK,2020-06-03,164.3837267,164.3837267,0,0,164.3837267,0,164.3837267,1,0,1538,0,1538,0,14511,0,193.9666667,193.9666667,193.9666667,0,0.106881487,,0.126116168,,0.011328215,,0.013366871,,669,0.434980494,0.046102956,405,0.263328999 +LJ,LJ,LJ,category-KK,2020-06-05,170.1501408,15.59844833,0,154.5516925,15.59844833,154.5516925,170.1501408,0.091674613,0.908325387,178,5173.977242,178,5173.977242,1964,48798.67779,508.4666667,508.4666667,46.61348495,461.8531817,0.087631732,0.029870965,0.261873511,0.089264633,0.007942183,0.003167129,0.023733954,0.009464461,25,0.140449438,0.012729124,23,0.129213483 +QU,QU,QU,category-KK,2020-06-04,233.3217294,233.3217294,0,0,233.3217294,0,233.3217294,1,0,2803.886989,0,2803.886989,0,24650.41785,0,326.4333333,326.4333333,326.4333333,0,0.083213671,,0.116421715,,0.009465224,,0.013242507,,1206,0.430117193,0.04892412,714.8869895,0.25496284 +M,M,M,category-KK,2020-05-13,68.38680722,9.151810556,0,59.23499667,9.151810556,59.23499667,68.38680722,0.133824212,0.866175788,146,680.3244718,146,680.3244718,1238,6264.79583,75.58333333,75.58333333,10.11487999,65.46845335,0.062683634,0.087068743,0.06928,0.096231219,0.007392416,0.009455216,0.008170339,0.010450213,68,0.465753425,0.054927302,41,0.280821918 +FX,FX,FX,category-KK,2020-06-05,135.1481122,14.53271611,0,120.6153961,14.53271611,120.6153961,135.1481122,0.107531773,0.892468227,175,1620.884719,175,1620.884719,1232,15418.71729,176.2833333,176.2833333,18.95605937,157.327274,0.083044092,0.074413309,0.108320339,0.097062593,0.011796036,0.007822661,0.015386412,0.010203655,33,0.188571429,0.026785714,24,0.137142857 +IE,IE,IE,category-KK,2020-06-05,74.80681889,6.859085278,0,67.94773361,6.859085278,67.94773361,74.80681889,0.091690642,0.908309358,62,834.6860966,62,834.6860966,759,8358.853462,272.4833333,272.4833333,24.98417187,247.4991615,0.110630408,0.081405134,0.402970514,0.296517652,0.009037003,0.008128834,0.032917222,0.029609224,9,0.14516129,0.011857708,7,0.112903226 +MF,MF,MF,category-KK,2020-06-05,175.7805372,7.289849444,0,168.4906878,7.289849444,168.4906878,175.7805372,0.041471312,0.958528688,68,1986.469953,68,1986.469953,642,20304.47993,445.3666667,445.3666667,18.46993984,426.8967268,0.107203668,0.084819147,0.271616762,0.214902182,0.011354906,0.008298203,0.028769377,0.021024756,4,0.058823529,0.00623053,3,0.044117647 +KM,KM,KM,category-KK,2020-05-15,99.36282278,15.26164,0,84.10118278,15.26164,84.10118278,99.36282278,0.153595073,0.846404927,37.0019907,423.0207017,37.0019907,423.0207017,457.073656,4585.058139,434.7833333,434.7833333,66.78057774,368.0027556,0.412454566,0.198811033,1.804783377,0.869940299,0.033389892,0.018342446,0.146104631,0.080261306,16.0019907,0.432462968,0.035009654,7.001990704,0.189232811 +PG,PG,PG,category-KK,2020-06-05,180.1261453,16.88749778,0,163.2386475,16.88749778,163.2386475,180.1261453,0.093753729,0.906246271,132,2114.117745,132,2114.117745,1083,20479.18421,216.5,216.5,20.29768229,196.2023177,0.127935589,0.077213603,0.15377032,0.092805766,0.015593257,0.007970955,0.018742089,0.009580573,34,0.257575758,0.031394275,28,0.212121212 +IO,IO,IO,category-U,2020-06-05,133.4995719,133.4995719,0,0,133.4995719,0,133.4995719,1,0,1721,0,1721,0,17153,0,177.5,177.5,177.5,0,0.077570931,,0.103137711,,0.00778287,,0.010348044,,386,0.224288205,0.022503352,245,0.142359094 +BF,BF,BF,category-U,2020-06-05,157.9023767,157.9023767,0,0,157.9023767,0,157.9023767,1,0,1883,0,1883,0,18348,0,192,192,192,0,0.083856812,,0.10196495,,0.008605972,,0.010464356,,747,0.396707382,0.040712884,432,0.229421136 +GZ,GZ,GZ,category-U,2020-06-05,218.5335967,218.5335967,0,0,218.5335967,0,218.5335967,1,0,1985,0,1985,0,19026,0,285.75,285.75,285.75,0,0.110092492,,0.14395466,,0.01148605,,0.015018921,,714,0.359697733,0.037527594,416,0.209571788 +AL,AL,AL,category-U,2020-06-05,116.8614819,116.8614819,0,0,116.8614819,0,116.8614819,1,0,2332,0,2332,0,21978,0,171,171,171,0,0.050112128,,0.073327616,,0.005317203,,0.007780508,,1271,0.545025729,0.057830558,684,0.293310463 +YV,YV,YV,category-U,2020-06-04,139.9412781,139.9412781,0,0,139.9412781,0,139.9412781,1,0,1056,0,1056,0,10338,0,179.75,179.75,179.75,0,0.13252015,,0.170217803,,0.013536591,,0.017387309,,417,0.394886364,0.040336622,252,0.238636364 +QP,QP,QP,category-U,2020-05-18,69.48839083,69.48839083,0,0,69.48839083,0,69.48839083,1,0,579.9453382,0,579.9453382,0,4908.016088,0,89.5,89.5,89.5,0,0.119818863,,0.154324889,,0.014158142,,0.018235474,,197.8360147,0.341128727,0.040308754,120.9453382,0.2085461 +CQ,CQ,CQ,category-U,2020-06-05,91.1784125,91.1784125,0,0,91.1784125,0,91.1784125,1,0,797,0,797,0,8317,0,122.5,122.5,122.5,0,0.114402023,,0.15370138,,0.010962897,,0.014728869,,187,0.234629862,0.022484069,113,0.141781681 +KE,KE,KE,category-U,2020-06-05,187.6349036,187.6349036,0,0,187.6349036,0,187.6349036,1,0,1920,0,1920,0,18454,0,225.5,225.5,225.5,0,0.097726512,,0.117447917,,0.010167709,,0.012219573,,489,0.2546875,0.02649832,350,0.182291667 +QT,QT,QT,category-U,2020-06-05,110.9844933,110.9844933,0,0,110.9844933,0,110.9844933,1,0,1041,0,1041,0,9901,0,141.25,141.25,141.25,0,0.106613346,,0.13568684,,0.011209423,,0.014266236,,294,0.282420749,0.02969397,184,0.176753122 +CU,CU,CU,category-U,2020-06-05,168.1284744,168.1284744,0,0,168.1284744,0,168.1284744,1,0,1405,0,1405,0,13784,0,227.5,227.5,227.5,0,0.119664395,,0.161921708,,0.012197365,,0.016504643,,391,0.278291815,0.028366222,245,0.174377224 +RN,RN,RN,category-U,2020-05-13,34.999655,34.999655,0,0,34.999655,0,34.999655,1,0,349,0,349,0,3276,0,41.25,41.25,41.25,0,0.100285544,,0.118194842,,0.010683655,,0.012591575,,218,0.624641834,0.066544567,129,0.369627507 +CY,CY,CY,category-U,2020-06-05,109.2934728,109.2934728,0,0,109.2934728,0,109.2934728,1,0,1266.640208,0,1266.640208,0,12236.6825,0,147.5,147.5,147.5,0,0.086286123,,0.116449801,,0.008931626,,0.012053921,,307,0.242373484,0.025088499,209,0.165003447 +OW,OW,OW,category-U,2020-06-05,95.59428972,26.39247194,0,69.20181778,26.39247194,69.20181778,95.59428972,0.276088373,0.723911627,405,1127.820563,405,1127.820563,3805,10935.21737,143,143,39.48063738,103.5193626,0.065166597,0.06135889,0.097483055,0.091787086,0.006936261,0.006328344,0.010375989,0.009466603,165,0.407407407,0.043363995,109,0.269135802 +IS,IS,IS,category-U,2020-06-04,186.3906881,186.3906881,0,0,186.3906881,0,186.3906881,1,0,2016,0,2016,0,19491,0,238,238,238,0,0.092455698,,0.118055556,,0.00956291,,0.012210764,,599,0.297123016,0.030732133,372,0.18452381 +DA,DA,DA,category-U,2020-06-05,185.0106244,185.0106244,0,0,185.0106244,0,185.0106244,1,0,1533,0,1533,0,15364,0,229.5,229.5,229.5,0,0.120685339,,0.149706458,,0.012041827,,0.014937516,,360,0.234833659,0.023431398,236,0.15394651 +TS,TS,TS,category-U,2020-06-05,195.7220697,57.78827139,0,137.9337983,57.78827139,137.9337983,195.7220697,0.295256797,0.704743203,743,1506.124032,743,1506.124032,6712,15077.63123,249.25,249.25,73.59275663,175.6572434,0.077776947,0.091581965,0.099048125,0.11662867,0.008609695,0.009148241,0.010964356,0.011650188,281,0.378196501,0.041865316,166,0.223418573 +HY,HY,HY,category-U,2020-06-05,127.119925,127.119925,0,0,127.119925,0,127.119925,1,0,1482,0,1482,0,14471,0,169.75,169.75,169.75,0,0.085775928,,0.114541161,,0.00878446,,0.011730357,,458,0.309041835,0.031649506,315,0.212550607 +NM,NM,NM,category-U,2020-05-13,69.62664917,69.62664917,0,0,69.62664917,0,69.62664917,1,0,391,0,391,0,3710,0,80.5,80.5,80.5,0,0.178073272,,0.205882353,,0.018767291,,0.021698113,,139,0.355498721,0.037466307,85,0.217391304 +SW,SW,SW,category-U,2020-06-04,122.3785389,122.3785389,0,0,122.3785389,0,122.3785389,1,0,1263,0,1263,0,12060,0,158.5,158.5,158.5,0,0.096895122,,0.125494854,,0.010147474,,0.01314262,,166,0.131433096,0.013764511,118,0.093428345 +DJ,DJ,DJ,category-U,2020-06-04,227.9732797,227.9732797,0,0,227.9732797,0,227.9732797,1,0,3028,0,3028,0,29051,0,299.25,299.25,299.25,0,0.075288401,,0.098827609,,0.007847347,,0.01030085,,1009,0.33322325,0.034732023,645,0.213011889 +CE,CE,CE,category-U,2020-05-13,48.39237306,48.39237306,0,0,48.39237306,0,48.39237306,1,0,229,0,229,0,2084,0,66,66,66,0,0.211320406,,0.288209607,,0.023220908,,0.031669866,,102,0.445414847,0.048944338,49,0.213973799 +OL,OL,OL,category-KT,2020-06-04,121.0380353,11.86008417,0,109.1779511,11.86008417,109.1779511,121.0380353,0.097986423,0.902013577,170.1130105,856.8369642,170.1130105,856.8369642,1508.582147,8198.467118,299.3333333,299.3333333,29.33060272,270.0027306,0.069718854,0.127419749,0.172418339,0.315115643,0.007861742,0.013316874,0.019442496,0.032933319,22,0.129325793,0.01458323,20.11301053,0.118233229 +EM,EM,EM,category-KT,2020-05-13,95.73223778,30.17495861,0,65.55727917,30.17495861,65.55727917,95.73223778,0.315201643,0.684798357,430.0546618,1368.618058,430.0546618,1368.618058,3404.983912,12968.01962,126.5,126.5,39.87300781,86.62699219,0.070165403,0.047900346,0.092716139,0.063295228,0.008861997,0.005055304,0.01171019,0.006680048,155.1639853,0.360800612,0.045569668,105.0546618,0.244282114 +IY,IY,IY,category-KT,2020-06-01,225.5176928,2.069215833,0,223.4484769,2.069215833,223.4484769,225.5176928,0.009175404,0.990824596,21,2041.408564,21,2041.408564,196,19317.39803,807,807,7.404550645,799.5954494,0.098534087,0.109457989,0.35259765,0.391688104,0.010557224,0.011567214,0.03777832,0.041392503,4,0.19047619,0.020408163,4,0.19047619 +BZ,BZ,BZ,category-KT,2020-06-04,0.510636389,0,0,0.510636389,0,0.510636389,0.510636389,0,1,0,6.986835951,0,6.986835951,0,88.69443846,324.9833333,324.9833333,0,324.9833333,,0.073085499,,46.51366307,,0.005757254,,3.664077917,0,,,0, +SL,SL,SL,category-KT,2020-05-13,111.1994806,15.88545806,0,95.3140225,15.88545806,95.3140225,111.1994806,0.142855506,0.857144494,418,2857.04606,418,2857.04606,3698,25745.52393,132.8333333,132.8333333,18.97597304,113.8573603,0.038003488,0.033361038,0.045397065,0.039851426,0.004295689,0.003702159,0.005131415,0.004422414,326,0.779904306,0.08815576,127,0.303827751 +SP,SP,SP,category-KT,2020-05-14,125.8299919,125.8299919,0,0,125.8299919,0,125.8299919,1,0,1437,0,1437,0,13428,0,147.3833333,147.3833333,147.3833333,0,0.087564365,,0.10256321,,0.009370717,,0.010975822,,494,0.343771747,0.0367888,301,0.209464161 +BV,BV,BV,category-KT,2020-05-13,88.99033139,10.81143833,0,78.17889306,10.81143833,78.17889306,88.99033139,0.121490033,0.878509967,171,2543.25417,171,2543.25417,1578,22168.24369,119.9166667,119.9166667,14.56867984,105.3479868,0.063224786,0.030739709,0.085196958,0.041422516,0.006851355,0.003526616,0.00923237,0.004752203,69,0.403508772,0.043726236,47,0.274853801 +KA,KA,KA,category-KT,2020-05-14,32.39114028,32.39114028,0,0,32.39114028,0,32.39114028,1,0,207,0,207,0,2007,0,41.75,41.75,41.75,0,0.156478939,,0.201690821,,0.016139083,,0.020802192,,150,0.724637681,0.074738416,87,0.420289855 +DU,DU,DU,category-KT,2020-05-12,67.70927611,14.19881833,0,53.51045778,14.19881833,53.51045778,67.70927611,0.209702705,0.790297295,261,1072.220866,261,1072.220866,2300,9291.850068,325.5833333,325.5833333,68.2757056,257.3076277,0.054401603,0.04990619,0.261592742,0.239976329,0.006173399,0.005758859,0.029685089,0.027691754,58,0.222222222,0.025217391,21,0.08045977 +FD,FD,FD,category-KT,2020-06-02,177.6746158,177.6746158,0,0,177.6746158,0,177.6746158,1,0,1142,0,1142,0,10897,0,227.55,227.55,227.55,0,0.155581975,,0.199255692,,0.016304911,,0.020881894,,542,0.474605954,0.04973846,297,0.260070053 +XU,XU,XU,category-KT,2020-06-03,205.7152444,28.18911722,0,177.5261272,28.18911722,177.5261272,205.7152444,0.137029792,0.862970208,550,3625.279437,550,3625.279437,5149,33606.61203,608.7666667,608.7666667,83.4191699,525.3474968,0.05125294,0.04896895,0.151671218,0.144912277,0.005474678,0.005282476,0.016201043,0.015632266,66,0.12,0.012818023,52,0.094545455 +BH,BH,BH,category-KT,2020-05-12,114.9496964,22.44378139,0,92.505915,22.44378139,92.505915,114.9496964,0.195248723,0.804751277,332,1796.78381,332,1796.78381,2686,16295.11171,150.5,150.5,29.38493276,121.1150672,0.067601751,0.051484165,0.088508834,0.067406589,0.008355838,0.005676912,0.010940035,0.007432601,142,0.427710843,0.052866716,93,0.280120482 +MI,MI,MI,category-KT,2020-06-05,165.5981564,32.06143639,0,133.53672,32.06143639,133.53672,165.5981564,0.193609863,0.806390137,223.9095166,2711.599834,223.9095166,2711.599834,2127.009365,26751.85263,216.75,216.75,41.96493783,174.7850622,0.143189253,0.04924647,0.187419179,0.06445828,0.015073482,0.004991681,0.01972955,0.006533569,94.90951659,0.42387442,0.044621109,64.90951659,0.289891728 +XK,XK,XK,category-AH,2020-05-14,202.6474369,202.6474369,0,0,202.6474369,0,202.6474369,1,0,1178,0,1178,0,10545,0,216.75,216.75,216.75,0,0.172026687,,0.183998302,,0.019217396,,0.020554765,,271,0.230050934,0.025699384,182,0.154499151 +Q,Q,Q,category-AH,2020-05-14,1.769166944,1.769166944,0,0,1.769166944,0,1.769166944,1,0,13,0,13,0,110,0,2.5,2.5,2.5,0,0.136089765,,0.192307692,,0.016083336,,0.022727273,,6,0.461538462,0.054545455,6,0.461538462 +UK,UK,UK,category-KK,2020-06-05,169.3297156,169.3297156,0,0,169.3297156,0,169.3297156,1,0,2431,0,2431,0,22920,0,224.75,224.75,224.75,0,0.069654346,,0.092451666,,0.007387858,,0.009805846,,842,0.346359523,0.036736475,513,0.21102427 +RF,RF,RF,category-KK,2020-06-05,155.0294236,155.0294236,0,0,155.0294236,0,155.0294236,1,0,1521,0,1521,0,14601,0,185.75,185.75,185.75,0,0.101925985,,0.122123603,,0.010617726,,0.012721731,,422,0.277449047,0.02890213,272,0.178829717 +RW,RW,RW,category-KK,2020-06-05,99.88546278,2.265143889,0,97.62031889,2.265143889,97.62031889,99.88546278,0.022677413,0.977322587,30.09048341,936.3461583,30.09048341,936.3461583,270.9906351,9956.865077,359.5,359.5,8.152529962,351.34747,0.07527775,0.104256656,0.270933831,0.375232458,0.008358753,0.009804323,0.030084176,0.035286957,2.090483413,0.069473241,0.007714228,2.090483413,0.069473241 +NG,NG,NG,category-KK,2020-06-05,188.1697828,12.97643639,0,175.1933464,12.97643639,175.1933464,188.1697828,0.068961319,0.931038681,313,5378.088493,313,5378.088493,2943,50685.57796,510.7166667,510.7166667,35.21969489,475.4969718,0.041458263,0.032575393,0.112522987,0.08841375,0.004409255,0.003456473,0.011967277,0.009381307,30,0.095846645,0.01019368,20,0.063897764 diff --git "a/tests/data/statistics/visualization-dir1/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" "b/tests/data/statistics/visualization-dir1/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" index a789fd994..cfae88256 100644 --- "a/tests/data/statistics/visualization-dir1/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" +++ "b/tests/data/statistics/visualization-dir1/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" @@ -1,5 +1,5 @@ -date,user_id,username,biography,actual_worktime_hour,monitored_worktime_hour,monitored_annotation_worktime_hour,monitored_inspection_worktime_hour,monitored_acceptance_worktime_hour -2022-01-01,AE,AE,category-KK,1,11,11,0,0 -2022-01-31,OW,OW,category-KT,2,12,12,0,0 -2022-02-01,KX,KX,category-KT,3,13,13,0,0 -2022-02-28,AE,AE,category-KK,4,14,14,0,0 +date,account_id,user_id,username,biography,actual_worktime_hour,monitored_worktime_hour,monitored_annotation_worktime_hour,monitored_inspection_worktime_hour,monitored_acceptance_worktime_hour +2022-01-01,AE,AE,AE,category-KK,1,11,11,0,0 +2022-01-31,OW,OW,OW,category-KT,2,12,12,0,0 +2022-02-01,KX,KX,KX,category-KT,3,13,13,0,0 +2022-02-28,AE,AE,AE,category-KK,4,14,14,0,0 diff --git a/tests/data/statistics/worktime-per-date.csv b/tests/data/statistics/worktime-per-date.csv new file mode 100644 index 000000000..e5be1d94d --- /dev/null +++ b/tests/data/statistics/worktime-per-date.csv @@ -0,0 +1,4 @@ +date,account_id,user_id,username,biography,actual_worktime_hour,monitored_worktime_hour,monitored_annotation_worktime_hour,monitored_inspection_worktime_hour,monitored_acceptance_worktime_hour +2021/11/1,alice,alice,Alice,U.S.,3,2.357476389,2.357476389,0,0 +2021/11/1,bob,bob,Bob,Japan,5,4.376513889,3.433653333,0,0.942860556 +2021/11/2,alice,alice,Alice,U.S.,3,2.332470833,2.332470833,0,0 diff --git "a/tests/data/statistics/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" "b/tests/data/statistics/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" index cb684c5e8..22cddf943 100644 --- "a/tests/data/statistics/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" +++ "b/tests/data/statistics/\343\203\246\343\203\274\343\202\266_\346\227\245\344\273\230list-\344\275\234\346\245\255\346\231\202\351\226\223.csv" @@ -1,4 +1,4 @@ -date,user_id,username,biography,actual_worktime_hour,monitored_worktime_hour,monitored_annotation_worktime_hour,monitored_inspection_worktime_hour,monitored_acceptance_worktime_hour -2021-11-01,alice,Alice,U.S.,3,2.35747638888889,2.35747638888889,0,0 -2021-11-01,bob,Bob,Japan,5,4.37651388888889,3.43365333333333,0,0.942860555555555 -2021-11-02,alice,Alice,U.S.,3,2.33247083333333,2.33247083333333,0,0 +date,account_id,user_id,username,biography,actual_worktime_hour,monitored_worktime_hour,monitored_annotation_worktime_hour,monitored_inspection_worktime_hour,monitored_acceptance_worktime_hour +2021-11-01,alice,alice,Alice,U.S.,3,2.35747638888889,2.35747638888889,0,0 +2021-11-01,bob,bob,Bob,Japan,5,4.37651388888889,3.43365333333333,0,0.942860555555555 +2021-11-02,alice,alice,Alice,U.S.,3,2.33247083333333,2.33247083333333,0,0 diff --git "a/tests/data/statistics/\345\205\250\344\275\223\343\201\256\347\224\237\347\224\243\346\200\247\343\201\250\345\223\201\350\263\252.csv" "b/tests/data/statistics/\345\205\250\344\275\223\343\201\256\347\224\237\347\224\243\346\200\247\343\201\250\345\223\201\350\263\252.csv" index c1f0606d8..52e184e76 100755 --- "a/tests/data/statistics/\345\205\250\344\275\223\343\201\256\347\224\237\347\224\243\346\200\247\343\201\250\345\223\201\350\263\252.csv" +++ "b/tests/data/statistics/\345\205\250\344\275\223\343\201\256\347\224\237\347\224\243\346\200\247\343\201\250\345\223\201\350\263\252.csv" @@ -1,4 +1,8 @@ -monitored_worktime_hour,annotation,699.5509044444445 +real_monitored_worktime_hour,sum,1567.3623775000003 +real_monitored_worktime_hour,annotation,699.5509044444445 +real_monitored_worktime_hour,inspection,560.3284872222223 +real_monitored_worktime_hour,acceptance,307.4829858333335 +monitored_worktime_hour,annotation,699.5509044444445 monitored_worktime_hour,inspection,560.3284872222223 monitored_worktime_hour,acceptance,307.4829858333335 monitored_worktime_hour,sum,1567.3623775000003 @@ -14,6 +18,7 @@ input_data_count,acceptance,9574.0 annotation_count,annotation,112816.0 annotation_count,inspection,112816.0 annotation_count,acceptance,102200.0 +real_actual_worktime_hour,sum,1667.1500000000005 actual_worktime_hour,sum,1667.1500000000005 actual_worktime_hour,annotation,744.0884808047882 actual_worktime_hour,inspection,596.0023354411084 diff --git a/tests/statistics/visualization/dataframe/test_user_performance.py b/tests/statistics/visualization/dataframe/test_user_performance.py index 3c2748933..8b07549a0 100644 --- a/tests/statistics/visualization/dataframe/test_user_performance.py +++ b/tests/statistics/visualization/dataframe/test_user_performance.py @@ -26,8 +26,13 @@ def test_from_df(self): df_labor = pandas.read_csv(str(data_dir / "labor-df.csv")) df_user = pandas.read_csv(str(data_dir / "user.csv")) df_worktime_ratio = pandas.read_csv(str(data_dir / "annotation-count-ratio-df.csv")) + df_worktime_per_date = pandas.read_csv(str(data_dir / "worktime-per-date.csv")) UserPerformance.from_df( - df_task_history, df_worktime_ratio=df_worktime_ratio, df_user=df_user, df_labor=df_labor + df_task_history, + df_worktime_ratio=df_worktime_ratio, + df_user=df_user, + df_worktime_per_date=df_worktime_per_date, + df_labor=df_labor, ) def test_from_df_with_empty(self): @@ -37,8 +42,13 @@ def test_from_df_with_empty(self): df_worktime_ratio = pandas.read_csv(str(data_dir / "annotation-count-ratio-df-empty.csv")) df_labor = pandas.read_csv(str(data_dir / "labor-df.csv")) df_user = pandas.read_csv(str(data_dir / "user.csv")) + df_worktime_per_date = pandas.read_csv(str(data_dir / "worktime-per-date.csv")) obj = UserPerformance.from_df( - df_task_history, df_worktime_ratio=df_worktime_ratio, df_user=df_user, df_labor=df_labor + df_task_history, + df_worktime_ratio=df_worktime_ratio, + df_user=df_user, + df_worktime_per_date=df_worktime_per_date, + df_labor=df_labor, ) obj.to_csv(Path("out/user.csv"))