This commit is contained in:
bakhirev 2024-10-30 20:57:35 +03:00
parent d8b49a579b
commit 77a7069dff
34 changed files with 3338 additions and 257 deletions

1
.gitignore vendored
View file

@ -3,6 +3,7 @@
/.vscode /.vscode
/.pnp /.pnp
/.idea /.idea
/src/ts/translations/src/transactions
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -10,6 +10,7 @@ import fr from 'ts/translations/fr';
import ja from 'ts/translations/ja'; import ja from 'ts/translations/ja';
import pt from 'ts/translations/pt'; import pt from 'ts/translations/pt';
import ru from 'ts/translations/ru'; import ru from 'ts/translations/ru';
import ko from 'ts/translations/ko';
import zh from 'ts/translations/zh'; import zh from 'ts/translations/zh';
import initializationI18n from './ts/helpers/i18n'; import initializationI18n from './ts/helpers/i18n';
@ -38,6 +39,7 @@ localization.parse('fr', fr);
localization.parse('ja', ja); localization.parse('ja', ja);
localization.parse('pt', pt); localization.parse('pt', pt);
localization.parse('ru', ru); localization.parse('ru', ru);
localization.parse('ko', ko);
localization.parse('zh', zh); localization.parse('zh', zh);
function renderReactApplication() { function renderReactApplication() {

View file

@ -35,7 +35,7 @@ function Answer({
> >
<img <img
className={style.quiz_answer_icon} className={style.quiz_answer_icon}
src={`./assets/games/quiz/balloon_${iconIndex}.png`} src={`./assets/games/quize/balloon_${iconIndex}.png`}
/> />
<figcaption className={textClasName.join(' ')}> <figcaption className={textClasName.join(' ')}>
{answer.title} {answer.title}

View file

@ -71,7 +71,7 @@ function Question({
<div className={stylePage.quiz_question_body}> <div className={stylePage.quiz_question_body}>
<div <div
className={style.quiz_title} className={style.quiz_title}
style={{ backgroundImage: 'url(./assets/games/quiz/cloud_big.png)' }} style={{ backgroundImage: 'url(./assets/games/quize/cloud_big.png)' }}
> >
{question.title} {question.title}
</div> </div>

View file

@ -114,15 +114,15 @@ function QuizPage({
return ( return (
<div <div
className={style.quiz_container} className={style.quiz_container}
style={{ backgroundImage: 'url(./assets/games/quiz/cloud_bg.png)' }} style={{ backgroundImage: 'url(./assets/games/quize/cloud_bg.png)' }}
> >
<div <div
className={style.quiz_cloud_bg} className={style.quiz_cloud_bg}
style={{ backgroundImage: 'url(./assets/games/quiz/cloud_bg.png)' }} style={{ backgroundImage: 'url(./assets/games/quize/cloud_bg.png)' }}
/> />
<div <div
className={style.quiz_cloud} className={style.quiz_cloud}
style={{ backgroundImage: 'url(./assets/games/quiz/cloud.png)' }} style={{ backgroundImage: 'url(./assets/games/quize/cloud.png)' }}
/> />
<div className={className}> <div className={className}>
{page} {page}

View file

@ -16,6 +16,7 @@ export function getLangPrefix() {
pt: 'pt-PT', pt: 'pt-PT',
de: 'de-DE', de: 'de-DE',
ja: 'ja-JA', ja: 'ja-JA',
ko: 'ko-KO',
}[code] || 'ru-RU'; }[code] || 'ru-RU';
} }

View file

@ -9,6 +9,7 @@ import ja from '../translations/ja';
import pt from '../translations/pt'; import pt from '../translations/pt';
import ru from '../translations/ru'; import ru from '../translations/ru';
import zh from '../translations/zh'; import zh from '../translations/zh';
import ko from '../translations/ko';
import localization from './Localization'; import localization from './Localization';
function getJsonFromString(text: string) { function getJsonFromString(text: string) {
@ -43,6 +44,7 @@ const translations = {
pt: getTranslationWrapper(pt), pt: getTranslationWrapper(pt),
ru: getTranslationWrapper(ru), ru: getTranslationWrapper(ru),
zh: getTranslationWrapper(zh), zh: getTranslationWrapper(zh),
ko: getTranslationWrapper(ko),
}; };
export const BROWSER_LANGUAGE = navigator.languages export const BROWSER_LANGUAGE = navigator.languages

View file

@ -39,6 +39,7 @@ const Header = observer((): React.ReactElement | null => {
{ id: 'pt', title: 'PT' }, { id: 'pt', title: 'PT' },
{ id: 'de', title: 'DE' }, { id: 'de', title: 'DE' },
{ id: 'ja', title: 'JA' }, { id: 'ja', title: 'JA' },
{ id: 'ko', title: 'KO' },
]} ]}
onChange={(item: any, id: string) => { onChange={(item: any, id: string) => {
localization.language = id; localization.language = id;

View file

@ -1,5 +1,6 @@
import React, { ReactNode } from 'react'; import React, { ReactNode } from 'react';
import { observer } from 'mobx-react-lite'; import { observer } from 'mobx-react-lite';
import { useParams } from 'react-router-dom';
import Recommendations from 'ts/components/Recommendations/components/ModalDescription'; import Recommendations from 'ts/components/Recommendations/components/ModalDescription';
import fullScreen from 'ts/store/FullScreen'; import fullScreen from 'ts/store/FullScreen';
@ -36,6 +37,11 @@ function MobileView({
} }
const DesktopView = observer(({ children }: IPageWrapper): React.ReactElement => { const DesktopView = observer(({ children }: IPageWrapper): React.ReactElement => {
const { type, page } = useParams<any>();
const padding = type === 'team' && page === 'building'
? { padding: 0 }
: {};
if (fullScreen.isOpen) { if (fullScreen.isOpen) {
return ( return (
<> <>
@ -51,7 +57,10 @@ const DesktopView = observer(({ children }: IPageWrapper): React.ReactElement =>
<div className={style.page_wrapper}> <div className={style.page_wrapper}>
<SideBar/> <SideBar/>
<Header/> <Header/>
<div className={style.page_wrapper_main}> <div
className={style.page_wrapper_main}
style={padding}
>
{children} {children}
</div> </div>
<Print/> <Print/>

View file

@ -46,7 +46,7 @@ const Country = observer(({
const canShowByCountries = (!fullScreen.isOpen || fullScreen.mode === 'countries'); const canShowByCountries = (!fullScreen.isOpen || fullScreen.mode === 'countries');
const canShowByTravel = (!fullScreen.isOpen || fullScreen.mode === 'travel') && travel.length; const canShowByTravel = (!fullScreen.isOpen || fullScreen.mode === 'travel') && travel.length;
if (!countries?.length) { if (!dataGripCountries?.length) {
return mode !== 'print' ? (<NothingFound/>) : null; return mode !== 'print' ? (<NothingFound/>) : null;
} }

View file

@ -0,0 +1,161 @@
export default `
§ achievements.commitsAfter1500.title: 부엉이
§ achievements.commitsAfter1500.description: 15:00 70%
§ achievements.commitsBefore1500.title: 이른
§ achievements.commitsBefore1500.description: 점심 70%
§ achievements.workEveryTime.title: 하나님의
§ achievements.workEveryTime.description: 하루 .
§ achievements.workNotWork.title: 공백이
§ achievements.workNotWork.description: 커밋하지만
§ achievements.userNotWork.title:
§ achievements.userNotWork.description: 그의
§ achievements.userIsDied.title: 죽은
§ achievements.userIsDied.description: 근무,
§ achievements.lessTasks.title: 안으로
§ achievements.lessTasks.description: 입력
§ achievements.moreTasks.title: 아빠 릿
§ achievements.moreTasks.description: 대부분의
§ achievements.everyMessageLong.title: 웅변의
§ achievements.everyMessageLong.description: 일관되게 .
§ achievements.everyMessageShort.title: 수다쟁이는
§ achievements.everyMessageShort.description: 일관되게
§ achievements.shortestName.title: 크기는
§ achievements.shortestName.description: ,
§ achievements.longestName.title: 아지미 2
§ achievements.longestName.description: 가장 .
§ achievements.moreCommits.title: 백업
§ achievements.moreCommits.description: 가장
§ achievements.lessCommits.title: 드물지만
§ achievements.lessCommits.description: 최소
§ achievements.oneCommitOneTask.title: 정확히
§ achievements.oneCommitOneTask.description: ,
§ achievements.moreLazyDays.title: 정신적으로,
§ achievements.moreLazyDays.description: 커밋
§ achievements.lessLazyDays.title: 파파
§ achievements.lessLazyDays.description: 커밋
§ achievements.zeroLazyDays.title:
§ achievements.zeroLazyDays.description: ,
§ achievements.moreWorkDays.title: 소중한
§ achievements.moreWorkDays.description: 최대
§ achievements.moreScopes.title: 시작
§ achievements.moreScopes.description: 대부분의
§ achievements.lessScopes.title: 골드핀치
§ achievements.lessScopes.description: 가장 .
§ achievements.moreDaysForTask.title: 슬로프에
§ achievements.moreDaysForTask.description: 작업
§ achievements.more2DaysForTask.title: 느린
§ achievements.more2DaysForTask.description: , 2
§ achievements.more3YearsInProject.title: 그는
§ achievements.more3YearsInProject.description: 3
§ achievements.lessDaysInProject.title: 그리고 ?
§ achievements.lessDaysInProject.description: 프로젝트의
§ achievements.lessDaysForTask.title: 빠른
§ achievements.lessDaysForTask.description: 화재
§ achievements.adam.title: 아담
§ achievements.adam.description: 프로젝트의
§ achievements.more90DaysInProject.title: 환영
§ achievements.more90DaysInProject.description: 집행유예로
§ achievements.more365DaysInProject.title: 고도바시크
§ achievements.more365DaysInProject.description: 1 .
§ achievements.more666DaysInProject.title: 젠장
§ achievements.more666DaysInProject.description: , 666
§ achievements.more777DaysInProject.title: 아지노 3
§ achievements.more777DaysInProject.description: 프로젝트에 777
§ achievements.moreDaysInProject.title: 팀의 ,
§ achievements.moreDaysInProject.description: 프로젝트에
§ achievements.moreRefactoring.title: 릴리스
§ achievements.moreRefactoring.description: 모든 "리팩토링" .
§ achievements.longestMessage.title: "혀로 말하기"
§ achievements.longestMessage.description: 모든
§ achievements.moreTasksInDay.title: 스피디
§ achievements.moreTasksInDay.description: 하루
§ achievements.hasCommitFrom0to7.title: 야간
§ achievements.hasCommitFrom0to7.description: 밤의
§ achievements.noCommitOnDay.title: 기술
§ achievements.noCommitOnDay.description: 결코
§ achievements.hasCommitEveryTime.title: 직장에서
§ achievements.hasCommitEveryTime.description: 매일 ( )
§ achievements.commitsAfter1800.title: 영업
§ achievements.commitsAfter1800.description: ,18:00
§ achievements.moreFix.title: 버그
§ achievements.moreFix.description: 가장
§ achievements.lessWorkDays.title: 그럼
§ achievements.lessWorkDays.description:
§ achievements.moreCreateCode.title: 창조주
§ achievements.moreCreateCode.description: 코드를
§ achievements.moreRemoveCode.title: 파괴자
§ achievements.moreRemoveCode.description: 코드를
§ achievements.moreChangeCode.title: 개혁자
§ achievements.moreChangeCode.description: 코드를
§ achievements.moreStyle.title: 패션
§ achievements.moreStyle.description: 다른 .
§ achievements.moreOnHoliday.title: 생명
§ achievements.moreOnHoliday.description: 시간
§ achievements.morePRMerge.title: 세관은 -
§ achievements.morePRMerge.description: 다른 "부어"
§ achievements.longWaitPR.title: 내일,
§ achievements.longWaitPR.description: ,
§ achievements.moreLongWaitPR.title: 오래 ,
§ achievements.moreLongWaitPR.description: ,
§ achievements.oneExtension.title: 전장에서
§ achievements.oneExtension.description: ,
§ achievements.fileRush.title: 저그
§ achievements.fileRush.description: 프로젝트에서 .
§ achievements.moreLintHint.title: 그라마르-
§ achievements.moreLintHint.description: 생성
§ achievements.moreReadMe.title: 연대기
§ achievements.moreReadMe.description: 가장
§ achievements.moreDevOps.title: 개발
§ achievements.moreDevOps.description: 가장 .
§ achievements.moreTests.title: 테스터
§ achievements.moreTests.description: 테스트를
§ achievements.allRelease.title:
§ achievements.allRelease.description: 그의
§ achievements.firstCommit.title: 누가 ,
§ achievements.firstCommit.description: 프로젝트의
§ achievements.lastCommit.title: 나는
§ achievements.lastCommit.description: 프로젝트의
§ achievements.firstLastCommit.title: 처음부터
§ achievements.firstLastCommit.description: ,
§ achievements.longFilePath.title: 조국의
§ achievements.longFilePath.description: 가장
§ achievements.longFileName.title: 크기
§ achievements.longFileName.description: 가장 .
§ achievements.workOnWeekends.title:
§ achievements.workOnWeekends.description: 적어도
§ achievements.removeCreateFile.title: 나는
§ achievements.removeCreateFile.description: 그리고
§ achievements.renameFile.title: 아스타나
§ achievements.renameFile.description: 파일
§ achievements.longTask.title: 이즈얀
§ achievements.longTask.description: 3 .
§ achievements.haveNotEmail.title: 우편사
§ achievements.haveNotEmail.description: 전자 .
§ achievements.moreAddedFolders.title: 이사
§ achievements.moreAddedFolders.description: 가장 .
§ achievements.horoscope1.title: 염소
§ achievements.horoscope2.title: 물병
§ achievements.horoscope3.title: 물고기의
§ achievements.horoscope4.title: 양자리의
§ achievements.horoscope5.title: 황소
§ achievements.horoscope6.title: 쌍둥이
§ achievements.horoscope7.title: 암의
§ achievements.horoscope8.title: 레오의
§ achievements.horoscope9.title: 처녀
§ achievements.horoscope10.title: 천칭
§ achievements.horoscope11.title: 전갈
§ achievements.horoscope12.title: 궁수
§ achievements.horoscope1.description:
§ achievements.horoscope2.description:
§ achievements.horoscope3.description:
§ achievements.horoscope4.description:
§ achievements.horoscope5.description:
§ achievements.horoscope6.description:
§ achievements.horoscope7.description:
§ achievements.horoscope8.description:
§ achievements.horoscope9.description:
§ achievements.horoscope10.description:
§ achievements.horoscope11.description:
§ achievements.horoscope12.description:
§ achievements.111.description: 시험
`;

View file

@ -0,0 +1,29 @@
export default `
§ uiKit.console.button: 복사
§ uiKit.console.notification: 텍스트가
§ uiKit.dataLoader.page: 페이지
§ uiKit.dataLoader.size:
§ uiKit.dataLoader.rows: 라인.
§ uiKit.dataLoader.from: 에서
§ uiKit.dataLoader.all: 모두
§ uiKit.hoursChart.work: 표준 ( 07:00~20:00)
§ uiKit.hoursChart.weekend: 근무일 /
§ uiKit.hoursChart.days: 특정
§ uiKit.page.remove: 제거
§ uiKit.nothingFound.common.title: 표시
§ uiKit.nothingFound.common.description: 커밋이 .:
§ uiKit.nothingFound.common.console: 작업 ():
§ uiKit.nothingFound.common.example: 예를 :
§ uiKit.nothingFound.staff.title:
§ uiKit.nothingFound.staff.description1
"조수" .
.
§ uiKit.nothingFound.staff.description2
.
"설정" .
§ common.title: 힘내
§ common.filters: 필터
§ common.notifications.save: 변경
§ common.notifications.setting: 설정이
§ common.fileLoader.notification: 파일 $1
`;

View file

@ -0,0 +1,15 @@
import achievements from './achievements';
import common from './common';
import navigation from './navigation';
import recommendations from './recommendations';
import settings from './settings';
import pages from './pages';
export default [
achievements,
common,
navigation,
recommendations,
settings,
pages,
].join('');

View file

@ -0,0 +1,47 @@
export default `
§ sidebar.switch.team:
§ sidebar.switch.person: 직원
§ sidebar.buttons.settings: 설정
§ sidebar.buttons.print: 인쇄
§ sidebar.buttons.share: 그것을
§ sidebar.buttons.logout: 나가
§ sidebar.filters.all: 항상
§ sidebar.filters.year:
§ sidebar.filters.halfYear: 반년
§ sidebar.filters.month:
§ sidebar.filters.week:
§ sidebar.team.total: 일반
§ sidebar.team.scope: 특징
§ sidebar.team.author: 직원
§ sidebar.team.type: 작업
§ sidebar.team.pr: 코드
§ sidebar.team.day: 낮에
§ sidebar.team.week: 주별
§ sidebar.team.month: 월별
§ sidebar.team.files: 파일
§ sidebar.team.removedFiles: 삭제
§ sidebar.team.extension: 파일
§ sidebar.team.tasks: 작업
§ sidebar.team.release: 발매
§ sidebar.team.hours: 일정
§ sidebar.team.commits: 모든
§ sidebar.team.changes: 모든
§ sidebar.team.words: 인기있는
§ sidebar.team.building: 퀴즈
§ sidebar.team.refactor: 리팩토링
§ sidebar.team.company: 회사
§ sidebar.team.country: 위치
§ sidebar.team.settings: 설정
§ sidebar.person.total: 일반
§ sidebar.person.money: 작업
§ sidebar.person.speed: 속도
§ sidebar.person.day: 낮에
§ sidebar.person.week: 주별
§ sidebar.person.month: 월별
§ sidebar.person.tasks: 작업
§ sidebar.person.hours: 일정
§ sidebar.person.commits: 모든
§ sidebar.person.changes: 모든
§ sidebar.person.words: 인기있는
§ sidebar.person.settings: 설정
`;

View file

@ -0,0 +1,297 @@
export default `
§ page.welcome.step1: 프로젝트
§ page.welcome.step3: 드래그
§ page.welcome.step4: 그리고 .
§ page.welcome.description: 힘내는 .- . . [. |<url>// ] .
§ page.welcome.warning1: 서비스* ** * . .
§ page.welcome.warning2: 서비스* * . .
§ page.common.words.title: 단어에
§ page.common.words.description: 가장 . $1 .
§ page.common.commits.title: 일별
§ page.common.commits.description: ($1) .
§ page.common.commits.title2: $1 커밋:$2
§ page.common.filter.allUsers: 그것은
§ page.print.modal.title: 우리는 ?
§ page.print.modal.page: 현재
§ page.print.modal.type: 현재
§ page.print.modal.all: 모든
§ page.print.modal.cancel: 취소
§ page.print.tableOfContents: 내용
§ page.print.title: 자식
§ page.print.sub_title: "$1"
§ page.print.description: 보고서의 .
§ page.team.author.statusChart.title: 현재
§ page.team.author.daysChart.title: 근무
§ page.team.author.daysChart.item:
§ page.team.author.days.half:
§ page.team.author.days.one: 1
§ page.team.author.days.15:
§ page.team.author.days.two: 2
§ page.team.author.days.more:
§ page.team.author.title: 세부
§ page.team.author.description1: * *( , ))* "보조"* . , .
§ page.team.author.description2: * * (,, ) .
§ page.team.author.status: 상태
§ page.team.author.company: 회사소개
§ page.team.author.firstCommit:
§ page.team.author.lastCommit: 마지막
§ page.team.author.daysAll: 그냥
§ page.team.author.types: 작업
§ page.team.author.commits: 커밋
§ page.team.author.commitsSmall: 커밋
§ page.team.author.tasks: 작업
§ page.team.author.tasksSmall: 작업
§ page.team.author.workedLosses: 커밋이
§ page.team.author.worked:
§ page.team.author.losses: 커밋
§ page.team.author.days:
§ page.team.author.daysForTask:
§ page.team.author.scopes: 기능
§ page.team.author.moneyAll: 수신
§ page.team.author.moneyWorked: 밖으로
§ page.team.author.moneyLosses: 초과
§ page.team.author.type.work: 작동
§ page.team.author.type.dismissed: § page.team.author.type.dismissed: уволен
§ page.team.author.type.staff: 조수가
§ page.team.hours.title:
§ page.team.month.title: 프로젝트
§ page.team.month.first: ( )
§ page.team.month.last: ( )
§ page.team.scope.title: 기능
§ page.team.scope.scope: 특징
§ page.team.scope.days: 노예
§ page.team.scope.authorsDays: 남자
§ page.team.scope.tasks: 작업
§ page.team.scope.commits: 커밋
§ page.team.scope.commitsSmall: 커밋
§ page.team.scope.types: 작업
§ page.team.scope.authors: 개인
§ page.team.scope.cost: 비용
§ page.team.type.title: 작업
§ page.team.type.description: * * . "파일 분석" .
§ page.team.type.type: 작업
§ page.team.type.unknown:
§ page.team.type.tasks: 작업
§ page.team.type.tasksSmall: 작업
§ page.team.type.days:
§ page.team.type.daysSmall:
§ page.team.type.authorsDays: 남자
§ page.team.type.commits: 커밋
§ page.team.type.authors: 개인
§ page.team.total.titleA: 작업
§ page.team.total.titleB: 비용
§ page.team.total.daysWorked.title: 인간의
§ page.team.total.daysWorked.description: 약속이 .
§ page.team.total.commits.title: § page.team.total.commits.title: коммитов
§ page.team.total.commits.description: 삭제된
§ page.team.total.daysLosses.title: 커밋
§ page.team.total.daysLosses.description: 모든 빼기:휴일,,,
§ page.team.total.employment.title: 작업/
§ page.team.total.employment.description: 직원이
§ page.team.total.moneyAll.title: .
§ page.team.total.moneyAll.description: 포의
§ page.team.total.moneyWorked.title: 실제
§ page.team.total.moneyWorked.description: 실제
§ page.team.total.moneyLosses.title: 가능한
§ page.team.total.moneyLosses.description: 커밋이
§ page.team.total.weekendPayment.title: 주말에
§ page.team.total.weekendPayment.description: 주말
§ page.team.total.workSpeed.title: 일일
§ page.team.total.workSpeed.description: 현재
§ page.team.total.moneySpeed.title:
§ page.team.total.moneySpeed.description: 세금
§ page.team.total.description1: * * . , ,3 3 .
§ page.team.total.description2: * * . , .
§ page.team.total.description3: 카드* * . "조수" . .
§ page.team.total.description4: * * . , . + != , .
§ page.team.total.description5: * * 2 . (1 ). . .
§ page.team.tree.title: 선택한
§ page.team.tree.filters.author: 직원
§ page.team.tree.filters.commits: 커밋
§ page.team.tree.filters.help: 직원이
§ page.team.tree.filters.all: 모든
§ page.team.tree.totalLines: 라인
§ page.team.tree.totalTasks: 작업
§ page.team.tree.totalDays:
§ page.team.tree.tasks: 작업
§ page.team.tree.days:
§ page.team.tree.add: 누가
§ page.team.tree.change: 누가
§ page.team.tree.remove: 누가
§ page.team.tree.line: 라인
§ page.team.tree.linesAdded: 추가
§ page.team.tree.linesChanged: 변경
§ page.team.tree.linesRemoved: 삭제
§ page.team.company.title: 세부
§ page.team.company.employments.title: 숫자로
§ page.team.company.employments.item: 직원의
§ page.team.company.daysChart.title: 기간에
§ page.team.company.daysChart.item: 회사의
§ page.team.company.active.yes: ,
§ page.team.company.active.no: 계약이 .
§ page.team.country.byTimezone: 마지막
§ page.team.country.filters.active: 그들은
§ page.team.country.filters.dismissed: 해고
§ page.team.country.filters.staff: 보조원
§ page.team.country.pieByDomain.title: 우편,
§ page.team.country.pieByTimezone.title:
§ page.team.country.chart.item: 직원
§ page.team.country.table.title: 직원
§ page.team.country.table.country: 위치
§ page.team.country.table.employments: 직원
§ page.team.country.travel.title: 비즈니스 ( )
§ page.team.country.travel.author: 직원
§ page.team.country.travel.fly: 항공편
§ page.team.country.travel.path: 위치
§ page.team.country.travel.date: 비행
§ page.team.country.travel.country: 위치
§ page.team.refactor.title: 리팩토링
§ page.team.refactor.lines: § page.team.refactor.lines: строк
§ page.team.refactor.tasks: 작업
§ page.team.refactor.days:
§ page.team.refactor.path: 방법
§ page.team.refactor.firstCommit:
§ page.team.refactor.totalLines: 라인
§ page.team.refactor.totalTasks: 작업
§ page.team.refactor.totalDays: 개발
§ page.team.day.commits: 커밋
§ page.team.day.activity: 활동
§ page.team.week.title: 주별
§ page.team.week.date: 날짜
§ page.team.week.numberTasks: 작업
§ page.team.week.people: 사람
§ page.team.week.line: 라인
§ page.team.week.days: 커밋이
§ page.team.week.lossesDetails: 커밋하지
§ page.team.week.add: 추가
§ page.team.week.change: 변경
§ page.team.week.remove: 삭제
§ page.team.week.hasCommits: 커밋이
§ page.team.week.hasNotCommits: ,
§ page.team.week.days:
§ page.team.week.tasks: 작업
§ page.team.pr.task: 작업
§ page.team.pr.tasks: 작업
§ page.team.pr.firstCommitTime:
§ page.team.pr.lastCommitTime: 마지막
§ page.team.pr.workDays: 작업
§ page.team.pr.delayDays: 평균
§ page.team.pr.all.workDays: 작업
§ page.team.pr.all.delayDays: 홍보
§ page.team.pr.middleTimeRelease: 검토
§ page.team.pr.chart.1day: 시간은
§ page.team.pr.chart.3day: 3
§ page.team.pr.chart.7day:
§ page.team.pr.chart.14day: 2
§ page.team.pr.chart.30day:
§ page.team.pr.chart.more:
§ page.team.pr.date: 주입
§ page.team.pr.mergeAuthor: 나는
§ page.team.pr.author: 직원
§ page.team.pr.work: 개발
§ page.team.pr.delay: 대기
§ page.team.pr.days:
§ page.team.pr.oneTaskDays:
§ page.team.pr.description1: * * . . .
§ page.team.pr.description2: * * . .
§ page.team.pr.description3: * * ? , . , , .
§ page.team.pr.statByAuthors: 직원
§ page.team.pr.longDelay: 주입에
§ page.team.pr.anonymous: 문제
§ page.team.pr.branch: 지점
§ page.team.tasks.task: 작업
§ page.team.tasks.author:
§ page.team.tasks.from:
§ page.team.tasks.to: 마지막
§ page.team.tasks.daysInWork:
§ page.team.tasks.comments: 댓글
§ page.team.extension.extension: 파일
§ page.team.extension.type: 파일
§ page.team.extension.name: 유형
§ page.team.extension.path: 경로
§ page.team.extension.current.count: 수량
§ page.team.extension.removed.count: 삭제된
§ page.team.extension.files: 파일
§ page.team.release.download: 다운로드
§ page.team.release.title: 릴리스
§ page.team.release.from: 생성
§ page.team.release.to: 완료
§ page.team.release.prLength: 작업
§ page.team.release.delay: 작업
§ page.team.release.waiting: 다음
§ page.person.print.photo.title: 사진
§ page.person.print.photo.description: 사진
§ page.person.total.title: 주요
§ page.person.total.daysWorked.title: 작업
§ page.person.total.daysWorked.description:
§ page.person.total.tasks.title: 고려되었다
§ page.person.total.tasks.description: 커밋이
§ page.person.scoring.toolbar: , . . .
§ page.person.character.title: 캐릭터
§ page.person.achievement.title: 진행
§ page.person.achievement.positive: 긍정적
§ page.person.achievement.normal: 중립
§ page.person.achievement.negative: 부정
§ page.person.achievement.description: 직원이 . , . .
§ page.person.gets.title: 작업 :
§ page.person.gets.description: 메달은 "아름다운" .
§ page.person.business.days.title: 작업
§ page.person.business.days.description:
§ page.person.business.tasks.title: 고려되었다
§ page.person.business.tasks.description: 커밋이
§ page.person.business.losses.title: ,
§ page.person.business.losses.description: 모든 빼기:휴일,,,
§ page.person.business.commits.title: 커밋
§ page.person.business.commits.description: 삭제된
§ page.person.business.time.description: ( )
§ page.person.business.time.title: 프로젝트 :
§ page.person.business.time.dismissed: ()
§ page.person.business.time.staff: ()
§ page.person.business.achievements: 업적
§ page.person.changes.title: 진행
§ page.person.changes.description:
"삭제됨""추가됨" .,
"변경". ,
,
"삭제됨""추가됨" .
§ page.person.changes.description: :
§ page.person.commits.title: 커밋 :
§ page.person.money.title.total: 모든
§ page.person.money.title.middle: 평균
§ page.person.money.moneyAll.title: 수신
§ page.person.money.moneyAll.description: 프로젝트에서 ( )
§ page.person.money.moneyWorked.title: 밖으로
§ page.person.money.moneyWorked.description: 실제
§ page.person.money.moneyLosses.title: 가능한
§ page.person.money.moneyLosses.description: 커밋이
§ page.person.money.tasks.title: 작업
§ page.person.money.tasks.description: 비용에
§ page.person.money.commits.title: 약속의
§ page.person.money.commits.description: 작업
§ page.person.speed.task: 평균적으로
§ page.person.speed.max: 하루
§ page.person.speed.days.title:
§ page.person.speed.days.description: 이는 .
§ page.person.speed.commits.title: 커밋
§ page.person.speed.commits.description: 최대 10%
§ page.person.speed.line.title: 코드
§ page.person.speed.line.description: 최대 10%
§ page.person.speed.tasks.title: 작업
§ page.person.speed.tasks.description: 작업이
§ page.person.speed.maxCommits.title: 커밋
§ page.person.speed.maxCommits.description: 작업이
§ page.person.hours.title:
§ page.person.week.date: 날짜
§ page.person.week.tasks: 작업
§ page.person.week.workDays: 커밋이
§ page.person.week.taskInDay: 일일
§ page.person.week.days:
§ page.person.week.workDay: 평일
§ page.person.week.weekends: 주말
§ page.sponsor.title: 프로젝트
§ page.sponsor.share.description: 소셜 [|<url>//] ! , , , , , , , , , , , , , , , , ,
§ page.sponsor.share.button: 링크
§ page.sponsor.money.description: 당신이 ! .
§ page.sponsor.money.qr: 1
§ page.sponsor.money.github:
`;

View file

@ -0,0 +1,521 @@
export default `
§ recommendations.modal.cancel: 닫기
§ recommendations.modal.open:
§ recommendations.title
§ recommendations.timestamp.firstCommit.description
.
요일:$1
§ recommendations.timestamp.lastCommit.description
요일:$1
§ recommendations.title$1
§ recommendations.timestamp.firstCommit.description첫 ( ).
§ recommendations.timestamp.lastCommit.description주말, .
§ recommendations.timestamp.weekendDays.description
# :
- ;
- .;
§ recommendations.timestamp.common.title: 정기적
§ recommendations.timestamp.allDays.description: 정유소가
§ recommendations.timestamp.weekendWord.description
, .
# :
- ;
- ,, ;
- ;
- ;
#:
- ;
- ;
- ;
- ( );
- .;
- ;
§ recommendations.timestamp.lossesDays.description: 보통
§ recommendations.timestamp.neverWeekendWord.description
.
# :
- ;
- .;
§ recommendations.scope.parallelism.not.title
§ recommendations.scope.parallelism.not.description
.
# :
- ;
- ;
- 1.3 , ;
# :
- ;
- ;
- ;
# :
- ;
- ;
- ;
§ recommendations.scope.parallelism.has.title
§ recommendations.scope.parallelism.has.description
.
# :
- ;
- ;
- 1.3 2.0 , ;
§ recommendations.scope.parallelism.every.title
§ recommendations.scope.parallelism.every.description
# :
- ;
- ;
- , ;
§ recommendations.scope.money
.
# :
- ;
, ,
# ?
:
- ?
- ?
"예", .
§ recommendations.scope.bus.everyHasOne.title
=1
§ recommendations.scope.bus.everyHasOne.description
.
.
# :
- ;
- ;
# :
- 80% .;
- 60% ;
§ recommendations.scope.bus.oneMaintainer
.
# :
- ;
- ;
- .;
# :
- 80% .;
§ recommendations.scope.types.process.title
§ recommendations.scope.types.process.description
.
§ recommendations.scope.types.one
.
§ recommendations.scope.types.common
.
# :
- ;
- "박스형" ;
- ;
- ;
- ;
# :
- "작업 데모" ;
# :
- ;
- ( );
- ( );
- ;
- ( );
§ recommendations.scope.plan.title
§ recommendations.scope.plan.description
.
, .
# :
- . ;
# :
- ;
# :
- .;
- ( );
- , .;
§ recommendations.scope.cost.title
§ recommendations.scope.cost.description
.
. .
§ recommendations.timestamp.weekendDays.description너무 코드:$1
§ recommendations.author.lotOfLazy.description
?
#:
- $1;
# :
- ,,?
- ?
- ?
#
.
, .
.
§ recommendations.timestamp.regularWeekendWord.title: 작은 작성:$1
§ recommendations.author.manyLazy.description
.
#:
- $1;
# :
- 80% ;
- 60% 80%%;
# :
- 1 ..2 ;
- ;
- ;
- ;
§ recommendations.author.oneTypeMans
. .
# :
- ;
- .;
- ;
# :
- ;
- 70% , ;
§ recommendations.timestamp.sometimeWeekendWord.title: $1
§ recommendations.author.workToday.description
.
#:
- $1;
# :
- 50 %;
- 30 .;
§ recommendations.timestamp.weekendWord.description$1
§ recommendations.author.dismissed.description
.
#:
- $1;
# :
- ( );
- .;
- 14 ( );
§ recommendations.timestamp.neverWeekendWord.title: $1
§ recommendations.author.staff.description
.
#:
- $1;
# :
- ;
- 15%;
- ;
§ recommendations.author.projectType.openSource.title
§ recommendations.author.projectType.openSource.description
5 .
, .
# :
- ;
- .;
- 15 ..20 %;
#
. , .
. .
§ recommendations.author.projectType.easy.title
§ recommendations.author.projectType.easy.description
.
.
# :
- ;
- .;
- 5% 20% %;
# :
- ;
- ;
- ;
- ;
# :
- ;
- ;
- ;
- ;
§ recommendations.author.manager.title
§ recommendations.author.manager.description
.
.
# :
- ;
- ( );
§ recommendations.author.shorTalk.title
§ recommendations.author.shorTalk.description
.
.
# ?:
- ;
- ;
- ;
# :
- ;
- ;
# :
. . . , .
§ recommendations.author.ipr.title
§ recommendations.author.ipr.description
.
* * .
# :
- ;
- ;
- ;
- 3 .. 1 5 ;
- ;
- ;
# ?
, . , .
# :
- ;
- , ;
§ recommendations.author.oneToOne.title
1- 1
§ recommendations.author.oneToOne.description
.
** . , , .
# :
- ;
- ;
- ;
- .;
- ;
§ recommendations.author.club.title
§ recommendations.author.club.description
.
. .
# :
- ;
- .;
- ;
§ recommendations.timestamp.neverWeekendWord.description여기서
§ recommendations.scope.parallelism.not.title아마도 .
§ recommendations.scope.parallelism.not.description주말
§ recommendations.scope.parallelism.has.title아마도 .
§ recommendations.scope.parallelism.has.description문제가
§ recommendations.scope.parallelism.every.title아마 .
§ recommendations.scope.parallelism.every.description부재자 .
§ recommendations.scope.money지난 3 .
§ recommendations.scope.bus.everyHasOne.title더
§ recommendations.scope.bus.everyHasOne.description,
§ recommendations.scope.bus.oneMaintainer그것은
§ recommendations.scope.types.process.title그것은 100%
§ recommendations.scope.types.process.description그것은
§ recommendations.scope.types.one그것은
§ recommendations.scope.types.common그리고
§ recommendations.week.task.up.description
.
. .
§ recommendations.scope.plan.title결근의 . ?
§ recommendations.scope.plan.description생산성이
§ recommendations.week.task.down.description
. . .
# :
- 3 .
# :
- ;
- ( , )
§ recommendations.scope.cost.title작업
§ recommendations.scope.cost.description대부분의 .
§ recommendations.author.lotOfLazy.title: 좁은
§ recommendations.type.oneMaintainer.description
.
# :
§ recommendations.type.common
#
.
:
- ;
- ;
- ;
#
.
:
- ;
- ;
- ;
:
- ;
- (,,);
§ recommendations.type.fewTypes.title
§ recommendations.type.fewTypes.description
.
#"글로벌" :
- ;
- ;
- ;
- ;
- ;
-
# "로컬" :
- "글로벌" ;
- "글로벌" "글로벌" ;
.
#
( , , ) .). , .
§ recommendations.type.diff.title
§ recommendations.type.diff.description
.
"오류 수정" . .
* * (:감지 ) .
:
- _데브( );
- _테스트( );
- ( );
§ recommendations.type.buddy.title
§ recommendations.type.buddy.description
.
#:
- ;
- ;
- ;
- ;
#"초보자를위한" .
, .
, .
`;

View file

@ -0,0 +1,28 @@
export default `
§ page.settings.document.title: 디스플레이
§ page.settings.document.name: 페이지
§ page.settings.document.language: 인터페이스
§ page.settings.document.depersonalize: 개인
§ page.settings.links.title: 링크
§ page.settings.links.task: 작업
§ page.settings.links.pr: 홍보
§ page.settings.user.title: 개별
§ page.settings.user.notFound: 개별 . .
§ page.settings.user.subTitle: 고용 1
§ page.settings.user.from: 작업
§ page.settings.mailmap: 설정.메일맵
§ page.settings.common.title: 일반
§ page.settings.common.type.title: 프로젝트
§ page.settings.common.type.full:
§ page.settings.common.type.part: 프로젝트
§ page.settings.common.salary: 월급( )
§ page.settings.common.currency: 표시할
§ page.settings.common.workDaysInYear:
§ page.settings.common.vacationDaysInYear: 연간
§ page.settings.common.workDaysInWeek: 작업
§ page.settings.form.save: 저장
§ page.settings.form.cancel: 취소
§ page.settings.form.remove: 제거
§ page.settings.form.addEmployee: 직원
§ page.settings.form.addContract: 고용
`;

View file

@ -13,8 +13,8 @@ export default `
§ sidebar.team.total: Informação geral § sidebar.team.total: Informação geral
§ sidebar.team.scope: módulo § sidebar.team.scope: módulo
§ sidebar.team.author: Funcionário § sidebar.team.author: Funcionário
§ sidebar.team.type: Tipos de Tarefas § sidebar.team.type: Tipos de tarefas
§ sidebar.team.pr: Introdução do Código § sidebar.team.pr: Introdução do código
§ sidebar.team.day: Por dia § sidebar.team.day: Por dia
§ sidebar.team.week: Por semana § sidebar.team.week: Por semana
§ sidebar.team.month: Por mês § sidebar.team.month: Por mês
@ -22,7 +22,7 @@ export default `
§ sidebar.team.files: Ficheiros § sidebar.team.files: Ficheiros
§ sidebar.team.removedFiles: Arquivos excluídos § sidebar.team.removedFiles: Arquivos excluídos
§ sidebar.team.extension: Extensions § sidebar.team.extension: Extensions
§ sidebar.team.tasks: Lista de Tarefas § sidebar.team.tasks: Lista de tarefas
§ sidebar.team.release: Releases § sidebar.team.release: Releases
§ sidebar.team.hours: Horário § sidebar.team.hours: Horário
§ sidebar.team.commits: All commits § sidebar.team.commits: All commits

View file

@ -1,242 +0,0 @@
export default `
§ page.welcome.step1: Выполните команду в корне вашего проекта
§ page.welcome.step3: Перетащите
§ page.welcome.step4: файл log.txt на эту страницу
§ page.welcome.description: Git создаст файл log.txt. Он содержит данные для построения отчёта. Выполните команду git shortlog -s -n -e если отчёт вам не нужен. Создайте файл [.mailmap|https://git-scm.com/docs/gitmailmap] в корне проекта, чтобы объединить статистику по сотрудникам.
§ page.welcome.warning1: Сервис НЕ ХРАНИТ и НЕ ПЕРЕДАЁТ ваши данные. Все расчёты выполняются на вашем компьютере.
§ page.welcome.warning2: Сервис НЕ СОБИРАЕТ СТАТИСТИКУ по проектам. Вы можете посмотреть [исходный код|https://github.com/bakhirev/assayo].
§ page.common.words.title: Статистика по словам
§ page.common.words.description: самое популярное слово. Встречается $1 раза.
§ page.common.commits.title: Количество коммитов по дням
§ page.common.commits.description: ($1) самый продуктивный день по числу коммитов.
§ page.common.commits.title2: $1 сделано коммитов: $2
§ page.common.filter.allUsers: Не имеет значения
§ page.print.modal.title: Что распечатываем?
§ page.print.modal.page: Текущую страницу
§ page.print.modal.type: Текущий раздел
§ page.print.modal.all: Всю статистику
§ page.print.modal.cancel: Отмена
§ page.print.tableOfContents: Оглавление
§ page.print.title: Отчёт по git-репозиторию
§ page.print.sub_title: «$1»
§ page.print.description: Данные для отчёта были получены из истории коммитов.
§ page.team.author.statusChart.title: Status
§ page.team.author.daysChart.title: Days of work
§ page.team.author.daysChart.item: days
§ page.team.author.days.half: half year
§ page.team.author.days.one: year
§ page.team.author.days.15: year and a half
§ page.team.author.days.two: two years
§ page.team.author.days.more: more
§ page.team.author.title: Details
§ page.team.author.description1: Часть статистики (скорость работы, затраченные деньги и т.п.) по сотрудникам с типом «Помощник» не считается, т.к. это не постоянная роль в проекте. Их работа незначительно и её можно не учитывать.
§ page.team.author.description2: Сортировка по умолчанию — это сортировка по количеству задач и группам (текущие, уволенные, помогающие сотрудники).
§ page.team.author.status: Status
§ page.team.author.company: Company
§ page.team.author.firstCommit: First commit
§ page.team.author.lastCommit: Last
§ page.team.author.daysAll: Total days
§ page.team.author.types: Тип работ
§ page.team.author.commits: Commits
§ page.team.author.commitsSmall: commits
§ page.team.author.tasks: Задач
§ page.team.author.tasksSmall: задач
§ page.team.author.workedLosses: Дни с коммитами и без
§ page.team.author.worked: работа
§ page.team.author.losses: дни без commits
§ page.team.author.days: дней
§ page.team.author.daysForTask: Дней на задачу
§ page.team.author.scopes: Доработка
§ page.team.author.moneyAll: Денег получил
§ page.team.author.moneyWorked: Отработал
§ page.team.author.moneyLosses: Переплата
§ page.team.author.type.work: works
§ page.team.author.type.dismissed: dismissed
§ page.team.author.type.staff: staff
§ page.team.hours.title: Распределение работы в течении каждого дня недели
§ page.team.month.title: Календарь работы по проекту
§ page.team.month.first: (first work day)
§ page.team.month.last: (last work day)
§ page.team.scope.title: Статистика по фичам
§ page.team.scope.scope: Доработка
§ page.team.scope.days: Раб. дней
§ page.team.scope.authorsDays: Человеко-дней
§ page.team.scope.tasks: Задач
§ page.team.scope.commits: Commits
§ page.team.scope.commitsSmall: commits
§ page.team.scope.types: Тип работ
§ page.team.scope.authors: Персональный вклад
§ page.team.scope.cost: Стоимость
§ page.team.type.title: Статистика по типам задач
§ page.team.type.description: *Персональный вклад* считается по количеству коммитов, а не объему измененных строк или файлов. Поэтому следует так же смотреть раздел «Анализ файлов», чтобы оценить масштаб изменений.
§ page.team.type.type: Тип работы
§ page.team.type.unknown: unknown
§ page.team.type.tasks: Задач
§ page.team.type.tasksSmall: задач
§ page.team.type.days: Дней
§ page.team.type.daysSmall: дней
§ page.team.type.authorsDays: Человеко-дней
§ page.team.type.commits: Commits
§ page.team.type.authors: Персональный вклад
§ page.team.total.titleA: Объём работ
§ page.team.total.titleB: Стоимость
§ page.team.total.daysWorked.title: человеко-дней
§ page.team.total.daysWorked.description: Учтены только дни, в которые делались коммиты
§ page.team.total.commits.title: commits
§ page.team.total.commits.description: Удалённые ветки не считаются
§ page.team.total.daysLosses.title: дней без commits
§ page.team.total.daysLosses.description: Все дни минус: праздники, выходные, отпуск, дни с коммитами
§ page.team.total.employment.title: работает / уволилось
§ page.team.total.employment.description: Если сотрудник в течении месяца не сделал ни одного коммита, он считается уволенным
§ page.team.total.moneyAll.title: общая
§ page.team.total.moneyAll.description: Суммарные затраты на зарплату
§ page.team.total.moneyWorked.title: фактическая
§ page.team.total.moneyWorked.description: Фактически отработанные дни умноженные на среднюю зарплату
§ page.team.total.moneyLosses.title: возможная переплата
§ page.team.total.moneyLosses.description: Оплаченные рабочие дни, когда коммитов не было
§ page.team.total.weekendPayment.title: работа на выходных
§ page.team.total.weekendPayment.description: Суммарная переплата за работу в выходные дни
§ page.team.total.workSpeed.title: задач в день
§ page.team.total.workSpeed.description: Средняя скорость работы команды при текущем составе сотрудников
§ page.team.total.moneySpeed.title: в месяц
§ page.team.total.moneySpeed.description: Прогнозируемая сумма выплаты на зарплату при текущем составе сотрудников без учета налогов и сопутствующих затрат
§ page.team.total.description1: *Человеко-дни* — это работа одного сотрудника в течение одного рабочего дня. Например, за один календарный день, команда из трех сотрудников выдает объем работы в три человеко-дня.
§ page.team.total.description2: *Днями прогулов* считаются только рабочие дни, когда коммиты могли бы быть сделаны. Выходные, государственные праздники и отпуска в расчёте не участвуют.
§ page.team.total.description3: Карточка *работает и уволилось* показывает фактический состав сотрудников, которые постоянно участвуют в работе. Кроме этого, есть «помощники» — это сотрудники, как правило другой специализации, которые могут иногда делать коммиты в проект.
§ page.team.total.description4: *Переплатой* считаются только рабочие дни, когда коммиты могли бы быть сделаны. Выходные, государственные праздники и отпуска в расчёте не участвуют. Именно поэтому переплата + фактическая стоимость != общей. В общей стоимости заложена оплата выходных, государственных праздников и отпусков.
§ page.team.total.description5: *Работой на выходных* считается по коэффициенту х2 от оплаты обычного дня. Выше отображена именно переплата (х1), т.к. сам факт переработки в данном контексте не интересен. Мы не смотрим скорость сжигания бюджета. Мы смотрим переплату при увеличении скорости работы.
§ page.team.tree.title: Дерево проекта с учётом выбранных фильтров
§ page.team.tree.filters.author: Сотрудник
§ page.team.tree.filters.commits: Количество коммитов
§ page.team.tree.filters.help: Минимальное количество коммитов, которое сделал сотрудник в файле
§ page.team.tree.filters.all: Все сотрудники
§ page.team.tree.totalLines: Lines
§ page.team.tree.totalTasks: Tasks
§ page.team.tree.totalDays: Days
§ page.team.tree.tasks: tasks
§ page.team.tree.days: days
§ page.team.tree.add: Кто добавлял
§ page.team.tree.change: Кто менял
§ page.team.tree.remove: Кто удалял
§ page.team.tree.line: строк
§ page.team.tree.linesAdded: добавили
§ page.team.tree.linesChanged: изменили
§ page.team.tree.linesRemoved: удалили
§ page.team.day.commits: Commits
§ page.team.day.activity: Activity
§ page.team.week.title: Статистика по неделям
§ page.team.week.date: Дата
§ page.team.week.numberTasks: Количество задач
§ page.team.week.people: Количество человек
§ page.team.week.line: Изменение строк
§ page.team.week.days: Дни с коммитами и без
§ page.team.week.lossesDetails: Кто не коммитил
§ page.team.week.add: добавили
§ page.team.week.change: изменили
§ page.team.week.remove: удалили
§ page.team.week.hasCommits: были коммиты
§ page.team.week.hasNotCommits: небыло коммитов
§ page.team.week.days: дней
§ page.team.week.tasks: задач
§ page.team.pr.task: Задача
§ page.team.pr.tasks: задач
§ page.team.pr.firstCommitTime: Первый коммит
§ page.team.pr.lastCommitTime: Последний
§ page.team.pr.workDays: Дней разработки
§ page.team.pr.delayDays: Дней ожидания влития
§ page.team.pr.all.workDays: Время работы над задачей
§ page.team.pr.all.delayDays: Время ревью PR
§ page.team.pr.date: Дата влития
§ page.team.pr.mergeAuthor: Влил
§ page.team.pr.author: Сотрудник
§ page.team.pr.middleTimeRelease: Среднее время поставки (дни)
§ page.team.pr.chart.1day: day
§ page.team.pr.chart.3day: three days
§ page.team.pr.chart.7day: week
§ page.team.pr.chart.14day: two weeks
§ page.team.pr.chart.30day: month
§ page.team.pr.chart.more: more
§ page.team.pr.work: разработка
§ page.team.pr.delay: ожидание
§ page.team.pr.days: дней
§ page.team.pr.oneTaskDays: Время потраченное на одну задачу
§ page.team.pr.description1: *Время разработки* это разница времени от первого до последнего коммита по задаче. Не важно были перерывы в несколько дней между коммитами или нет. Сам факт какого-либо коммита увеличивает время.
§ page.team.pr.description2: *Время ожидания* это время между последним коммитом и влитием кода. Оно показывает фактический простой в ожидании чего-либо.
§ page.team.pr.description3: *Зачем отображать время разработки* без разбивки на кодинг и код-ревью? Затем, чтобы показать бизнесу фактическое время поставки кода. Ожидание тестирования, замечания на ревью, проблемы DevOps и прочие несовершенства процесса, как раз уже заложены в этот срок.
§ page.team.pr.statByAuthors: Статистика по сотрудникам
§ page.team.pr.longDelay: Длительное ожидание влития
§ page.team.tasks.task: Задача
§ page.team.tasks.author: Автор первого коммита
§ page.team.tasks.from: Первый коммит
§ page.team.tasks.to: Последний коммит
§ page.team.tasks.daysInWork: Дней в работе
§ page.team.tasks.comments: Комментарии
§ page.person.print.photo.title: Фотография
§ page.person.print.photo.description: место для фотографии
§ page.person.total.title: Основные характеристики
§ page.person.total.daysWorked.title: дней работы
§ page.person.total.daysWorked.description: Учтены только дни, в которые делались коммиты
§ page.person.total.tasks.title: задач
§ page.person.total.tasks.description: Если коммиты правильно подписаны
§ page.person.character.title: Персонаж
§ page.person.achievement.title: Достижения
§ page.person.achievement.positive: Позитивные
§ page.person.achievement.normal: Нейтральные
§ page.person.achievement.negative: Негативные
§ page.person.achievement.description: Чем больше сотрудник набрал отрицательных достижений, тем больше вероятность, что ситуация нестандартная. Возможно, стоит изменить режим его работы, задачи или отчётность. Следует поговорить с ним и узнать, какие проблемы мешают его работе.
§ page.person.gets.title: Взятые геты:
§ page.person.gets.description: «Взять гет» в данном случае означает первым оставить коммит к задаче с «красивым» номером.
§ page.person.business.days.title: дней работы
§ page.person.business.days.description: Учтены только дни, в которые делались коммиты
§ page.person.business.tasks.title: задач
§ page.person.business.tasks.description: Если коммиты правильно подписаны
§ page.person.business.losses.title: дней без коммитов
§ page.person.business.losses.description: Все дни минус: праздники, выходные, отпуск, дни с коммитами
§ page.person.business.commits.title: коммитов
§ page.person.business.commits.description: Удалённые ветки не считаются
§ page.person.business.time.description: Время от первого, до последнего коммита (в том числе, нерабочие дни)
§ page.person.business.time.title: Дней на проекте:
§ page.person.business.time.dismissed: (уволен)
§ page.person.business.time.staff: (не в команде)
§ page.person.business.achievements: Достижения
§ page.person.changes.title: Достижения
§ page.person.changes.description:
При некоторых видах форматирования git отмечает строки как «удалённые» и «добавленные»,
хотя на самом деле они были «изменены». Поэтому, если вы провели большой рефакторинг,
git может показать малое количество изменений в статистике, а фактический результат
будет отмечен, как скачок «удаленных» и «добавленных» строк.
§ page.person.changes.description: Список коммитов и количество изменений в них за этот день:
§ page.person.commits.title: Список коммитов:
§ page.person.money.title.total: За всё время
§ page.person.money.title.middle: Средняя стоимость
§ page.person.money.moneyAll.title: получил
§ page.person.money.moneyAll.description: Предполагаемая сумма зп с проекта (см. настройки)
§ page.person.money.moneyWorked.title: отработал
§ page.person.money.moneyWorked.description: Фактически отработанные дни умноженные на среднюю зп
§ page.person.money.moneyLosses.title: возможная переплата
§ page.person.money.moneyLosses.description: Дни без коммитов умноженные на среднюю зп
§ page.person.money.tasks.title: задача
§ page.person.money.tasks.description: Количество закрытых задач к стоимости дня
§ page.person.money.commits.title: коммит
§ page.person.money.commits.description: Количество коммитов к стоимости рабочего дня
§ page.person.speed.task: Одна задача в среднем это
§ page.person.speed.max: Максимальная скорость в день
§ page.person.speed.days.title: дней
§ page.person.speed.days.description: Имеются ввиду рабочие дни, если коммиты правильно подписаны
§ page.person.speed.commits.title: коммитов
§ page.person.speed.commits.description: Отрезаны 10% максимальных и минимальных значений
§ page.person.speed.line.title: строк кода
§ page.person.speed.line.description: Отрезаны 10% максимальных и минимальных значений
§ page.person.speed.tasks.title: задач
§ page.person.speed.tasks.description: Задача может быть не доделана, но работа по ней должна быть
§ page.person.speed.maxCommits.title: коммитов
§ page.person.speed.maxCommits.description: Задача может быть не доделана, но работа по ней должна быть
§ page.person.hours.title: Распределение коммитов в течении каждого дня недели
§ page.person.week.date: Дата
§ page.person.week.tasks: Количество задач
§ page.person.week.workDays: Дни с коммитами
§ page.person.week.taskInDay: Задач в день
§ page.person.week.days: дней
§ page.person.week.workDay: будни
§ page.person.week.weekends: выходные
`;

View file

@ -0,0 +1,43 @@
const fs = require('node:fs');
const PAGES = [
// 'achievements',
// 'common',
// 'navigation',
// 'pages',
'recommendations',
// 'settings',
];
function createTemplate(page) {
const text = fs.readFileSync(`../ru/${page}.ts`, 'utf8');
const content = text
.replace(/(§\s[A-Z0-9._]+)(:\s){0,}/gim, '')
.replace(/(export\sdefault\s`)|(`;)/gim, '');
fs.writeFileSync(`./templates/${page}.txt`, content);
fs.writeFileSync(`./transactions/${page}.txt`, content);
}
function restoreKeys(page) {
const origin = fs.readFileSync(`../ru/${page}.ts`, 'utf8');
const keys = origin.match(/(§\s[A-Z0-9._]+)(:\s){0,}/gim);
const lines = origin.split('\n');
const transactions = fs.readFileSync(`./transactions/${page}.txt`, 'utf8');
const target = transactions.split('\n');
lines.forEach((row, index) => {
if (!target[index]) {
target[index] = lines[index];
} else if (row[0] === '§') {
target[index] = keys.shift() + target[index];
}
});
const content = target.join('\n');
fs.writeFileSync(`./output/${page}.ts`, content);
}
const STEP = 2;
if (STEP === 1) PAGES.map(createTemplate);
if (STEP === 2) PAGES.map(restoreKeys);

View file

@ -0,0 +1,161 @@
export default `
§ achievements.commitsAfter1500.title: 부엉이
§ achievements.commitsAfter1500.description: 15:00 70%
§ achievements.commitsBefore1500.title: 이른
§ achievements.commitsBefore1500.description: 점심 70%
§ achievements.workEveryTime.title: 하나님의
§ achievements.workEveryTime.description: 하루 .
§ achievements.workNotWork.title: 공백이
§ achievements.workNotWork.description: 커밋하지만
§ achievements.userNotWork.title:
§ achievements.userNotWork.description: 그의
§ achievements.userIsDied.title: 죽은
§ achievements.userIsDied.description: 근무,
§ achievements.lessTasks.title: 안으로
§ achievements.lessTasks.description: 입력
§ achievements.moreTasks.title: 아빠 릿
§ achievements.moreTasks.description: 대부분의
§ achievements.everyMessageLong.title: 웅변의
§ achievements.everyMessageLong.description: 일관되게 .
§ achievements.everyMessageShort.title: 수다쟁이는
§ achievements.everyMessageShort.description: 일관되게
§ achievements.shortestName.title: 크기는
§ achievements.shortestName.description: ,
§ achievements.longestName.title: 아지미 2
§ achievements.longestName.description: 가장 .
§ achievements.moreCommits.title: 백업
§ achievements.moreCommits.description: 가장
§ achievements.lessCommits.title: 드물지만
§ achievements.lessCommits.description: 최소
§ achievements.oneCommitOneTask.title: 정확히
§ achievements.oneCommitOneTask.description: ,
§ achievements.moreLazyDays.title: 정신적으로,
§ achievements.moreLazyDays.description: 커밋
§ achievements.lessLazyDays.title: 파파
§ achievements.lessLazyDays.description: 커밋
§ achievements.zeroLazyDays.title:
§ achievements.zeroLazyDays.description: ,
§ achievements.moreWorkDays.title: 소중한
§ achievements.moreWorkDays.description: 최대
§ achievements.moreScopes.title: 시작
§ achievements.moreScopes.description: 대부분의
§ achievements.lessScopes.title: 골드핀치
§ achievements.lessScopes.description: 가장 .
§ achievements.moreDaysForTask.title: 슬로프에
§ achievements.moreDaysForTask.description: 작업
§ achievements.more2DaysForTask.title: 느린
§ achievements.more2DaysForTask.description: , 2
§ achievements.more3YearsInProject.title: 그는
§ achievements.more3YearsInProject.description: 3
§ achievements.lessDaysInProject.title: 그리고 ?
§ achievements.lessDaysInProject.description: 프로젝트의
§ achievements.lessDaysForTask.title: 빠른
§ achievements.lessDaysForTask.description: 화재
§ achievements.adam.title: 아담
§ achievements.adam.description: 프로젝트의
§ achievements.more90DaysInProject.title: 환영
§ achievements.more90DaysInProject.description: 집행유예로
§ achievements.more365DaysInProject.title: 고도바시크
§ achievements.more365DaysInProject.description: 1 .
§ achievements.more666DaysInProject.title: 젠장
§ achievements.more666DaysInProject.description: , 666
§ achievements.more777DaysInProject.title: 아지노 3
§ achievements.more777DaysInProject.description: 프로젝트에 777
§ achievements.moreDaysInProject.title: 팀의 ,
§ achievements.moreDaysInProject.description: 프로젝트에
§ achievements.moreRefactoring.title: 릴리스
§ achievements.moreRefactoring.description: 모든 "리팩토링" .
§ achievements.longestMessage.title: "혀로 말하기"
§ achievements.longestMessage.description: 모든
§ achievements.moreTasksInDay.title: 스피디
§ achievements.moreTasksInDay.description: 하루
§ achievements.hasCommitFrom0to7.title: 야간
§ achievements.hasCommitFrom0to7.description: 밤의
§ achievements.noCommitOnDay.title: 기술
§ achievements.noCommitOnDay.description: 결코
§ achievements.hasCommitEveryTime.title: 직장에서
§ achievements.hasCommitEveryTime.description: 매일 ( )
§ achievements.commitsAfter1800.title: 영업
§ achievements.commitsAfter1800.description: ,18:00
§ achievements.moreFix.title: 버그
§ achievements.moreFix.description: 가장
§ achievements.lessWorkDays.title: 그럼
§ achievements.lessWorkDays.description:
§ achievements.moreCreateCode.title: 창조주
§ achievements.moreCreateCode.description: 코드를
§ achievements.moreRemoveCode.title: 파괴자
§ achievements.moreRemoveCode.description: 코드를
§ achievements.moreChangeCode.title: 개혁자
§ achievements.moreChangeCode.description: 코드를
§ achievements.moreStyle.title: 패션
§ achievements.moreStyle.description: 다른 .
§ achievements.moreOnHoliday.title: 생명
§ achievements.moreOnHoliday.description: 시간
§ achievements.morePRMerge.title: 세관은 -
§ achievements.morePRMerge.description: 다른 "부어"
§ achievements.longWaitPR.title: 내일,
§ achievements.longWaitPR.description: ,
§ achievements.moreLongWaitPR.title: 오래 ,
§ achievements.moreLongWaitPR.description: ,
§ achievements.oneExtension.title: 전장에서
§ achievements.oneExtension.description: ,
§ achievements.fileRush.title: 저그
§ achievements.fileRush.description: 프로젝트에서 .
§ achievements.moreLintHint.title: 그라마르-
§ achievements.moreLintHint.description: 생성
§ achievements.moreReadMe.title: 연대기
§ achievements.moreReadMe.description: 가장
§ achievements.moreDevOps.title: 개발
§ achievements.moreDevOps.description: 가장 .
§ achievements.moreTests.title: 테스터
§ achievements.moreTests.description: 테스트를
§ achievements.allRelease.title:
§ achievements.allRelease.description: 그의
§ achievements.firstCommit.title: 누가 ,
§ achievements.firstCommit.description: 프로젝트의
§ achievements.lastCommit.title: 나는
§ achievements.lastCommit.description: 프로젝트의
§ achievements.firstLastCommit.title: 처음부터
§ achievements.firstLastCommit.description: ,
§ achievements.longFilePath.title: 조국의
§ achievements.longFilePath.description: 가장
§ achievements.longFileName.title: 크기
§ achievements.longFileName.description: 가장 .
§ achievements.workOnWeekends.title:
§ achievements.workOnWeekends.description: 적어도
§ achievements.removeCreateFile.title: 나는
§ achievements.removeCreateFile.description: 그리고
§ achievements.renameFile.title: 아스타나
§ achievements.renameFile.description: 파일
§ achievements.longTask.title: 이즈얀
§ achievements.longTask.description: 3 .
§ achievements.haveNotEmail.title: 우편사
§ achievements.haveNotEmail.description: 전자 .
§ achievements.moreAddedFolders.title: 이사
§ achievements.moreAddedFolders.description: 가장 .
§ achievements.horoscope1.title: 염소
§ achievements.horoscope2.title: 물병
§ achievements.horoscope3.title: 물고기의
§ achievements.horoscope4.title: 양자리의
§ achievements.horoscope5.title: 황소
§ achievements.horoscope6.title: 쌍둥이
§ achievements.horoscope7.title: 암의
§ achievements.horoscope8.title: 레오의
§ achievements.horoscope9.title: 처녀
§ achievements.horoscope10.title: 천칭
§ achievements.horoscope11.title: 전갈
§ achievements.horoscope12.title: 궁수
§ achievements.horoscope1.description:
§ achievements.horoscope2.description:
§ achievements.horoscope3.description:
§ achievements.horoscope4.description:
§ achievements.horoscope5.description:
§ achievements.horoscope6.description:
§ achievements.horoscope7.description:
§ achievements.horoscope8.description:
§ achievements.horoscope9.description:
§ achievements.horoscope10.description:
§ achievements.horoscope11.description:
§ achievements.horoscope12.description:
§ achievements.111.description: 시험
`;

View file

@ -0,0 +1,29 @@
export default `
§ uiKit.console.button: 복사
§ uiKit.console.notification: 텍스트가
§ uiKit.dataLoader.page: 페이지
§ uiKit.dataLoader.size:
§ uiKit.dataLoader.rows: 라인.
§ uiKit.dataLoader.from: 에서
§ uiKit.dataLoader.all: 모두
§ uiKit.hoursChart.work: 표준 ( 07:00~20:00)
§ uiKit.hoursChart.weekend: 근무일 /
§ uiKit.hoursChart.days: 특정
§ uiKit.page.remove: 제거
§ uiKit.nothingFound.common.title: 표시
§ uiKit.nothingFound.common.description: 커밋이 .:
§ uiKit.nothingFound.common.console: 작업 ():
§ uiKit.nothingFound.common.example: 예를 :
§ uiKit.nothingFound.staff.title:
§ uiKit.nothingFound.staff.description1
"조수" .
.
§ uiKit.nothingFound.staff.description2
.
"설정" .
§ common.title: 힘내
§ common.filters: 필터
§ common.notifications.save: 변경
§ common.notifications.setting: 설정이
§ common.fileLoader.notification: 파일 $1
`;

View file

@ -0,0 +1,47 @@
export default `
§ sidebar.switch.team:
§ sidebar.switch.person: 직원
§ sidebar.buttons.settings: 설정
§ sidebar.buttons.print: 인쇄
§ sidebar.buttons.share: 그것을
§ sidebar.buttons.logout: 나가
§ sidebar.filters.all: 항상
§ sidebar.filters.year:
§ sidebar.filters.halfYear: 반년
§ sidebar.filters.month:
§ sidebar.filters.week:
§ sidebar.team.total: 일반
§ sidebar.team.scope: 특징
§ sidebar.team.author: 직원
§ sidebar.team.type: 작업
§ sidebar.team.pr: 코드
§ sidebar.team.day: 낮에
§ sidebar.team.week: 주별
§ sidebar.team.month: 월별
§ sidebar.team.files: 파일
§ sidebar.team.removedFiles: 삭제
§ sidebar.team.extension: 파일
§ sidebar.team.tasks: 작업
§ sidebar.team.release: 발매
§ sidebar.team.hours: 일정
§ sidebar.team.commits: 모든
§ sidebar.team.changes: 모든
§ sidebar.team.words: 인기있는
§ sidebar.team.building: 퀴즈
§ sidebar.team.refactor: 리팩토링
§ sidebar.team.company: 회사
§ sidebar.team.country: 위치
§ sidebar.team.settings: 설정
§ sidebar.person.total: 일반
§ sidebar.person.money: 작업
§ sidebar.person.speed: 속도
§ sidebar.person.day: 낮에
§ sidebar.person.week: 주별
§ sidebar.person.month: 월별
§ sidebar.person.tasks: 작업
§ sidebar.person.hours: 일정
§ sidebar.person.commits: 모든
§ sidebar.person.changes: 모든
§ sidebar.person.words: 인기있는
§ sidebar.person.settings: 설정
`;

View file

@ -0,0 +1,297 @@
export default `
§ page.welcome.step1: 프로젝트
§ page.welcome.step3: 드래그
§ page.welcome.step4: 그리고 .
§ page.welcome.description: 힘내는 .- . . [. |<url>// ] .
§ page.welcome.warning1: 서비스* ** * . .
§ page.welcome.warning2: 서비스* * . .
§ page.common.words.title: 단어에
§ page.common.words.description: 가장 . $1 .
§ page.common.commits.title: 일별
§ page.common.commits.description: ($1) .
§ page.common.commits.title2: $1 커밋:$2
§ page.common.filter.allUsers: 그것은
§ page.print.modal.title: 우리는 ?
§ page.print.modal.page: 현재
§ page.print.modal.type: 현재
§ page.print.modal.all: 모든
§ page.print.modal.cancel: 취소
§ page.print.tableOfContents: 내용
§ page.print.title: 자식
§ page.print.sub_title: "$1"
§ page.print.description: 보고서의 .
§ page.team.author.statusChart.title: 현재
§ page.team.author.daysChart.title: 근무
§ page.team.author.daysChart.item:
§ page.team.author.days.half:
§ page.team.author.days.one: 1
§ page.team.author.days.15:
§ page.team.author.days.two: 2
§ page.team.author.days.more:
§ page.team.author.title: 세부
§ page.team.author.description1: * *( , ))* "보조"* . , .
§ page.team.author.description2: * * (,, ) .
§ page.team.author.status: 상태
§ page.team.author.company: 회사소개
§ page.team.author.firstCommit:
§ page.team.author.lastCommit: 마지막
§ page.team.author.daysAll: 그냥
§ page.team.author.types: 작업
§ page.team.author.commits: 커밋
§ page.team.author.commitsSmall: 커밋
§ page.team.author.tasks: 작업
§ page.team.author.tasksSmall: 작업
§ page.team.author.workedLosses: 커밋이
§ page.team.author.worked:
§ page.team.author.losses: 커밋
§ page.team.author.days:
§ page.team.author.daysForTask:
§ page.team.author.scopes: 기능
§ page.team.author.moneyAll: 수신
§ page.team.author.moneyWorked: 밖으로
§ page.team.author.moneyLosses: 초과
§ page.team.author.type.work: 작동
§ page.team.author.type.dismissed: § page.team.author.type.dismissed: уволен
§ page.team.author.type.staff: 조수가
§ page.team.hours.title:
§ page.team.month.title: 프로젝트
§ page.team.month.first: ( )
§ page.team.month.last: ( )
§ page.team.scope.title: 기능
§ page.team.scope.scope: 특징
§ page.team.scope.days: 노예
§ page.team.scope.authorsDays: 남자
§ page.team.scope.tasks: 작업
§ page.team.scope.commits: 커밋
§ page.team.scope.commitsSmall: 커밋
§ page.team.scope.types: 작업
§ page.team.scope.authors: 개인
§ page.team.scope.cost: 비용
§ page.team.type.title: 작업
§ page.team.type.description: * * . "파일 분석" .
§ page.team.type.type: 작업
§ page.team.type.unknown:
§ page.team.type.tasks: 작업
§ page.team.type.tasksSmall: 작업
§ page.team.type.days:
§ page.team.type.daysSmall:
§ page.team.type.authorsDays: 남자
§ page.team.type.commits: 커밋
§ page.team.type.authors: 개인
§ page.team.total.titleA: 작업
§ page.team.total.titleB: 비용
§ page.team.total.daysWorked.title: 인간의
§ page.team.total.daysWorked.description: 약속이 .
§ page.team.total.commits.title: § page.team.total.commits.title: коммитов
§ page.team.total.commits.description: 삭제된
§ page.team.total.daysLosses.title: 커밋
§ page.team.total.daysLosses.description: 모든 빼기:휴일,,,
§ page.team.total.employment.title: 작업/
§ page.team.total.employment.description: 직원이
§ page.team.total.moneyAll.title: .
§ page.team.total.moneyAll.description: 포의
§ page.team.total.moneyWorked.title: 실제
§ page.team.total.moneyWorked.description: 실제
§ page.team.total.moneyLosses.title: 가능한
§ page.team.total.moneyLosses.description: 커밋이
§ page.team.total.weekendPayment.title: 주말에
§ page.team.total.weekendPayment.description: 주말
§ page.team.total.workSpeed.title: 일일
§ page.team.total.workSpeed.description: 현재
§ page.team.total.moneySpeed.title:
§ page.team.total.moneySpeed.description: 세금
§ page.team.total.description1: * * . , ,3 3 .
§ page.team.total.description2: * * . , .
§ page.team.total.description3: 카드* * . "조수" . .
§ page.team.total.description4: * * . , . + != , .
§ page.team.total.description5: * * 2 . (1 ). . .
§ page.team.tree.title: 선택한
§ page.team.tree.filters.author: 직원
§ page.team.tree.filters.commits: 커밋
§ page.team.tree.filters.help: 직원이
§ page.team.tree.filters.all: 모든
§ page.team.tree.totalLines: 라인
§ page.team.tree.totalTasks: 작업
§ page.team.tree.totalDays:
§ page.team.tree.tasks: 작업
§ page.team.tree.days:
§ page.team.tree.add: 누가
§ page.team.tree.change: 누가
§ page.team.tree.remove: 누가
§ page.team.tree.line: 라인
§ page.team.tree.linesAdded: 추가
§ page.team.tree.linesChanged: 변경
§ page.team.tree.linesRemoved: 삭제
§ page.team.company.title: 세부
§ page.team.company.employments.title: 숫자로
§ page.team.company.employments.item: 직원의
§ page.team.company.daysChart.title: 기간에
§ page.team.company.daysChart.item: 회사의
§ page.team.company.active.yes: ,
§ page.team.company.active.no: 계약이 .
§ page.team.country.byTimezone: 마지막
§ page.team.country.filters.active: 그들은
§ page.team.country.filters.dismissed: 해고
§ page.team.country.filters.staff: 보조원
§ page.team.country.pieByDomain.title: 우편,
§ page.team.country.pieByTimezone.title:
§ page.team.country.chart.item: 직원
§ page.team.country.table.title: 직원
§ page.team.country.table.country: 위치
§ page.team.country.table.employments: 직원
§ page.team.country.travel.title: 비즈니스 ( )
§ page.team.country.travel.author: 직원
§ page.team.country.travel.fly: 항공편
§ page.team.country.travel.path: 위치
§ page.team.country.travel.date: 비행
§ page.team.country.travel.country: 위치
§ page.team.refactor.title: 리팩토링
§ page.team.refactor.lines: § page.team.refactor.lines: строк
§ page.team.refactor.tasks: 작업
§ page.team.refactor.days:
§ page.team.refactor.path: 방법
§ page.team.refactor.firstCommit:
§ page.team.refactor.totalLines: 라인
§ page.team.refactor.totalTasks: 작업
§ page.team.refactor.totalDays: 개발
§ page.team.day.commits: 커밋
§ page.team.day.activity: 활동
§ page.team.week.title: 주별
§ page.team.week.date: 날짜
§ page.team.week.numberTasks: 작업
§ page.team.week.people: 사람
§ page.team.week.line: 라인
§ page.team.week.days: 커밋이
§ page.team.week.lossesDetails: 커밋하지
§ page.team.week.add: 추가
§ page.team.week.change: 변경
§ page.team.week.remove: 삭제
§ page.team.week.hasCommits: 커밋이
§ page.team.week.hasNotCommits: ,
§ page.team.week.days:
§ page.team.week.tasks: 작업
§ page.team.pr.task: 작업
§ page.team.pr.tasks: 작업
§ page.team.pr.firstCommitTime:
§ page.team.pr.lastCommitTime: 마지막
§ page.team.pr.workDays: 작업
§ page.team.pr.delayDays: 평균
§ page.team.pr.all.workDays: 작업
§ page.team.pr.all.delayDays: 홍보
§ page.team.pr.middleTimeRelease: 검토
§ page.team.pr.chart.1day: 시간은
§ page.team.pr.chart.3day: 3
§ page.team.pr.chart.7day:
§ page.team.pr.chart.14day: 2
§ page.team.pr.chart.30day:
§ page.team.pr.chart.more:
§ page.team.pr.date: 주입
§ page.team.pr.mergeAuthor: 나는
§ page.team.pr.author: 직원
§ page.team.pr.work: 개발
§ page.team.pr.delay: 대기
§ page.team.pr.days:
§ page.team.pr.oneTaskDays:
§ page.team.pr.description1: * * . . .
§ page.team.pr.description2: * * . .
§ page.team.pr.description3: * * ? , . , , .
§ page.team.pr.statByAuthors: 직원
§ page.team.pr.longDelay: 주입에
§ page.team.pr.anonymous: 문제
§ page.team.pr.branch: 지점
§ page.team.tasks.task: 작업
§ page.team.tasks.author:
§ page.team.tasks.from:
§ page.team.tasks.to: 마지막
§ page.team.tasks.daysInWork:
§ page.team.tasks.comments: 댓글
§ page.team.extension.extension: 파일
§ page.team.extension.type: 파일
§ page.team.extension.name: 유형
§ page.team.extension.path: 경로
§ page.team.extension.current.count: 수량
§ page.team.extension.removed.count: 삭제된
§ page.team.extension.files: 파일
§ page.team.release.download: 다운로드
§ page.team.release.title: 릴리스
§ page.team.release.from: 생성
§ page.team.release.to: 완료
§ page.team.release.prLength: 작업
§ page.team.release.delay: 작업
§ page.team.release.waiting: 다음
§ page.person.print.photo.title: 사진
§ page.person.print.photo.description: 사진
§ page.person.total.title: 주요
§ page.person.total.daysWorked.title: 작업
§ page.person.total.daysWorked.description:
§ page.person.total.tasks.title: 고려되었다
§ page.person.total.tasks.description: 커밋이
§ page.person.scoring.toolbar: , . . .
§ page.person.character.title: 캐릭터
§ page.person.achievement.title: 진행
§ page.person.achievement.positive: 긍정적
§ page.person.achievement.normal: 중립
§ page.person.achievement.negative: 부정
§ page.person.achievement.description: 직원이 . , . .
§ page.person.gets.title: 작업 :
§ page.person.gets.description: 메달은 "아름다운" .
§ page.person.business.days.title: 작업
§ page.person.business.days.description:
§ page.person.business.tasks.title: 고려되었다
§ page.person.business.tasks.description: 커밋이
§ page.person.business.losses.title: ,
§ page.person.business.losses.description: 모든 빼기:휴일,,,
§ page.person.business.commits.title: 커밋
§ page.person.business.commits.description: 삭제된
§ page.person.business.time.description: ( )
§ page.person.business.time.title: 프로젝트 :
§ page.person.business.time.dismissed: ()
§ page.person.business.time.staff: ()
§ page.person.business.achievements: 업적
§ page.person.changes.title: 진행
§ page.person.changes.description:
"삭제됨""추가됨" .,
"변경". ,
,
"삭제됨""추가됨" .
§ page.person.changes.description: :
§ page.person.commits.title: 커밋 :
§ page.person.money.title.total: 모든
§ page.person.money.title.middle: 평균
§ page.person.money.moneyAll.title: 수신
§ page.person.money.moneyAll.description: 프로젝트에서 ( )
§ page.person.money.moneyWorked.title: 밖으로
§ page.person.money.moneyWorked.description: 실제
§ page.person.money.moneyLosses.title: 가능한
§ page.person.money.moneyLosses.description: 커밋이
§ page.person.money.tasks.title: 작업
§ page.person.money.tasks.description: 비용에
§ page.person.money.commits.title: 약속의
§ page.person.money.commits.description: 작업
§ page.person.speed.task: 평균적으로
§ page.person.speed.max: 하루
§ page.person.speed.days.title:
§ page.person.speed.days.description: 이는 .
§ page.person.speed.commits.title: 커밋
§ page.person.speed.commits.description: 최대 10%
§ page.person.speed.line.title: 코드
§ page.person.speed.line.description: 최대 10%
§ page.person.speed.tasks.title: 작업
§ page.person.speed.tasks.description: 작업이
§ page.person.speed.maxCommits.title: 커밋
§ page.person.speed.maxCommits.description: 작업이
§ page.person.hours.title:
§ page.person.week.date: 날짜
§ page.person.week.tasks: 작업
§ page.person.week.workDays: 커밋이
§ page.person.week.taskInDay: 일일
§ page.person.week.days:
§ page.person.week.workDay: 평일
§ page.person.week.weekends: 주말
§ page.sponsor.title: 프로젝트
§ page.sponsor.share.description: 소셜 [|<url>//] ! , , , , , , , , , , , , , , , , ,
§ page.sponsor.share.button: 링크
§ page.sponsor.money.description: 당신이 ! .
§ page.sponsor.money.qr: 1
§ page.sponsor.money.github:
`;

View file

@ -0,0 +1,521 @@
export default `
§ recommendations.modal.cancel: 닫기
§ recommendations.modal.open:
§ recommendations.title
§ recommendations.timestamp.firstCommit.description
.
요일:$1
§ recommendations.timestamp.lastCommit.description
요일:$1
§ recommendations.title$1
§ recommendations.timestamp.firstCommit.description첫 ( ).
§ recommendations.timestamp.lastCommit.description주말, .
§ recommendations.timestamp.weekendDays.description
# :
- ;
- .;
§ recommendations.timestamp.common.title: 정기적
§ recommendations.timestamp.allDays.description: 정유소가
§ recommendations.timestamp.weekendWord.description
, .
# :
- ;
- ,, ;
- ;
- ;
#:
- ;
- ;
- ;
- ( );
- .;
- ;
§ recommendations.timestamp.lossesDays.description: 보통
§ recommendations.timestamp.neverWeekendWord.description
.
# :
- ;
- .;
§ recommendations.scope.parallelism.not.title
§ recommendations.scope.parallelism.not.description
.
# :
- ;
- ;
- 1.3 , ;
# :
- ;
- ;
- ;
# :
- ;
- ;
- ;
§ recommendations.scope.parallelism.has.title
§ recommendations.scope.parallelism.has.description
.
# :
- ;
- ;
- 1.3 2.0 , ;
§ recommendations.scope.parallelism.every.title
§ recommendations.scope.parallelism.every.description
# :
- ;
- ;
- , ;
§ recommendations.scope.money
.
# :
- ;
, ,
# ?
:
- ?
- ?
"예", .
§ recommendations.scope.bus.everyHasOne.title
=1
§ recommendations.scope.bus.everyHasOne.description
.
.
# :
- ;
- ;
# :
- 80% .;
- 60% ;
§ recommendations.scope.bus.oneMaintainer
.
# :
- ;
- ;
- .;
# :
- 80% .;
§ recommendations.scope.types.process.title
§ recommendations.scope.types.process.description
.
§ recommendations.scope.types.one
.
§ recommendations.scope.types.common
.
# :
- ;
- "박스형" ;
- ;
- ;
- ;
# :
- "작업 데모" ;
# :
- ;
- ( );
- ( );
- ;
- ( );
§ recommendations.scope.plan.title
§ recommendations.scope.plan.description
.
, .
# :
- . ;
# :
- ;
# :
- .;
- ( );
- , .;
§ recommendations.scope.cost.title
§ recommendations.scope.cost.description
.
. .
§ recommendations.timestamp.weekendDays.description너무 코드:$1
§ recommendations.author.lotOfLazy.description
?
#:
- $1;
# :
- ,,?
- ?
- ?
#
.
, .
.
§ recommendations.timestamp.regularWeekendWord.title: 작은 작성:$1
§ recommendations.author.manyLazy.description
.
#:
- $1;
# :
- 80% ;
- 60% 80%%;
# :
- 1 ..2 ;
- ;
- ;
- ;
§ recommendations.author.oneTypeMans
. .
# :
- ;
- .;
- ;
# :
- ;
- 70% , ;
§ recommendations.timestamp.sometimeWeekendWord.title: $1
§ recommendations.author.workToday.description
.
#:
- $1;
# :
- 50 %;
- 30 .;
§ recommendations.timestamp.weekendWord.description$1
§ recommendations.author.dismissed.description
.
#:
- $1;
# :
- ( );
- .;
- 14 ( );
§ recommendations.timestamp.neverWeekendWord.title: $1
§ recommendations.author.staff.description
.
#:
- $1;
# :
- ;
- 15%;
- ;
§ recommendations.author.projectType.openSource.title
§ recommendations.author.projectType.openSource.description
5 .
, .
# :
- ;
- .;
- 15 ..20 %;
#
. , .
. .
§ recommendations.author.projectType.easy.title
§ recommendations.author.projectType.easy.description
.
.
# :
- ;
- .;
- 5% 20% %;
# :
- ;
- ;
- ;
- ;
# :
- ;
- ;
- ;
- ;
§ recommendations.author.manager.title
§ recommendations.author.manager.description
.
.
# :
- ;
- ( );
§ recommendations.author.shorTalk.title
§ recommendations.author.shorTalk.description
.
.
# ?:
- ;
- ;
- ;
# :
- ;
- ;
# :
. . . , .
§ recommendations.author.ipr.title
§ recommendations.author.ipr.description
.
* * .
# :
- ;
- ;
- ;
- 3 .. 1 5 ;
- ;
- ;
# ?
, . , .
# :
- ;
- , ;
§ recommendations.author.oneToOne.title
1- 1
§ recommendations.author.oneToOne.description
.
** . , , .
# :
- ;
- ;
- ;
- .;
- ;
§ recommendations.author.club.title
§ recommendations.author.club.description
.
. .
# :
- ;
- .;
- ;
§ recommendations.timestamp.neverWeekendWord.description여기서
§ recommendations.scope.parallelism.not.title아마도 .
§ recommendations.scope.parallelism.not.description주말
§ recommendations.scope.parallelism.has.title아마도 .
§ recommendations.scope.parallelism.has.description문제가
§ recommendations.scope.parallelism.every.title아마 .
§ recommendations.scope.parallelism.every.description부재자 .
§ recommendations.scope.money지난 3 .
§ recommendations.scope.bus.everyHasOne.title더
§ recommendations.scope.bus.everyHasOne.description,
§ recommendations.scope.bus.oneMaintainer그것은
§ recommendations.scope.types.process.title그것은 100%
§ recommendations.scope.types.process.description그것은
§ recommendations.scope.types.one그것은
§ recommendations.scope.types.common그리고
§ recommendations.week.task.up.description
.
. .
§ recommendations.scope.plan.title결근의 . ?
§ recommendations.scope.plan.description생산성이
§ recommendations.week.task.down.description
. . .
# :
- 3 .
# :
- ;
- ( , )
§ recommendations.scope.cost.title작업
§ recommendations.scope.cost.description대부분의 .
§ recommendations.author.lotOfLazy.title: 좁은
§ recommendations.type.oneMaintainer.description
.
# :
§ recommendations.type.common
#
.
:
- ;
- ;
- ;
#
.
:
- ;
- ;
- ;
:
- ;
- (,,);
§ recommendations.type.fewTypes.title
§ recommendations.type.fewTypes.description
.
#"글로벌" :
- ;
- ;
- ;
- ;
- ;
-
# "로컬" :
- "글로벌" ;
- "글로벌" "글로벌" ;
.
#
( , , ) .). , .
§ recommendations.type.diff.title
§ recommendations.type.diff.description
.
"오류 수정" . .
* * (:감지 ) .
:
- _데브( );
- _테스트( );
- ( );
§ recommendations.type.buddy.title
§ recommendations.type.buddy.description
.
#:
- ;
- ;
- ;
- ;
#"초보자를위한" .
, .
, .
`;

View file

@ -0,0 +1,28 @@
export default `
§ page.settings.document.title: 디스플레이
§ page.settings.document.name: 페이지
§ page.settings.document.language: 인터페이스
§ page.settings.document.depersonalize: 개인
§ page.settings.links.title: 링크
§ page.settings.links.task: 작업
§ page.settings.links.pr: 홍보
§ page.settings.user.title: 개별
§ page.settings.user.notFound: 개별 . .
§ page.settings.user.subTitle: 고용 1
§ page.settings.user.from: 작업
§ page.settings.mailmap: 설정.메일맵
§ page.settings.common.title: 일반
§ page.settings.common.type.title: 프로젝트
§ page.settings.common.type.full:
§ page.settings.common.type.part: 프로젝트
§ page.settings.common.salary: 월급( )
§ page.settings.common.currency: 표시할
§ page.settings.common.workDaysInYear:
§ page.settings.common.vacationDaysInYear: 연간
§ page.settings.common.workDaysInWeek: 작업
§ page.settings.form.save: 저장
§ page.settings.form.cancel: 취소
§ page.settings.form.remove: 제거
§ page.settings.form.addEmployee: 직원
§ page.settings.form.addContract: 고용
`;

View file

@ -0,0 +1,161 @@
Сова
70% коммитов после 15:00
Ранняя пташка
70% коммитов до обеда
Раб божий
есть коммит на каждый час суток
Стрельба холостыми
коммиты есть, а закрытых задач нет
Залётный
это не его основной проект
Мёртвая душа
работал, но уволился
Зашел и вышел
меньше всего закрытых задач
Батя грит малаца
больше всего закрытых задач
Мастер красноречия
стабильно самые длинные подписи коммитов
Болтун находка для шпиона
стабильно, самые короткие подписи коммитов
Размер не главное
самое короткое имя
Азим Азиз Иль Ам Кадир Имран II
самое длинное имя
Мастер бекапов
больше всего коммитов
Редко но метко
меньше всего коммитов
Точно в цель
в среднем один коммит на задачу
Мысленно я с вами
больше всего дней без коммитов
Папа Карло
меньше всего дней без коммитов
Ни единого разрыва
ни одного дня без коммитов
Ценный работник
больше всего рабочих дней
Стартапер
сделал больше всего фичей
Щегол
сделал меньше всего фичей
Улитка на склоне
работа по задачам идёт медленнее чем у остальных
Cо слоу
больше двух дней на задачу
Старожил
больше трех лет на проекте
А это кто?
меньше всего дней на проекте
Скорострел
одна задача занимает меньше дня
Адам
первый стабильный сотрудник на проекте
Добро пожаловать
не уволили на испытательном
Годовасик
отработал год на проекте
Чёрт
отработал 666 дней на проекте
Азино 3 топора
отработал 777 дней на проекте
Часть команды, часть корабля
больше всего дней на проекте
Выпускающий редактор
сделал больше всех меток «рефакторинг»
"Языком болтать" не мешки ворочать
самая длинная подпись коммита за все время
Спиди-гонщик
рекорд по количеству закрытых задач в день
Ночной дозор
есть коммит на каждый час ночи
Технический перерыв
есть определенный час и день в рабочее время в который никогда не комитит
Умер на работе
есть коммит на час каждого дня (включая выходные)
Делу время
нет ни одного коммита после 18:00
Bug hunter
больше всего закрытых багов
Дальше без меня
меньше всего рабочих дней
Созидатель
склонен больше остальных добавлять код
Разрушитель
склонен больше остальных удалять код
Реформатор
склонен больше остальных изменять код
Полиция моды
склонен больше остальных изменять CSS
Нет жизни
относительно много коммитов в нерабочее время
Таможня даёт добро
чаще остальных нажимает кнопку «Влить» для PR
Завтра точно вольём
создал PR, который больше месяца провисел на ревью
Давным давно, в далёкой галактике
создал PR, который максимально долго провисел на ревью
Один в поле воин
только он работает с файлами определенного расширения
Зерг Раш
создал больше всех файлов в проекте
Грамар-наци
больше всех создал или изменил в правилах авто-проверки кода
Летописец
больше всех создал или изменил файлов MD
DevOps
больше всех создал или изменил файлов для CI/CD
Тестировщик
больше всех создал или изменил файлов для тестирования
Фулл хаус
есть релиз, собранный только из его задач
Кто первый, того и тапки
первый коммит на проекте
Я закончил
последний коммит на проекте
От начала и до конца
первый и последний коммит на проекте
Закрома родины
первый создал файл с самым глубоким вложением
Размер имеет значение
создал файл с самым длинным именемм
Работа не walk
хоть раз работал на выходных
Откопал стюардессу
востановил удаленный файл
Астана Нур-Султан Астана
переименовывал туда-сюда файл
Вроде изян
работал над задачей больше трех месяцев
Почтальон Печкин
не заполнил поле e-mail в git config
Директор
создал больше всех дирректорий
Ретроградный Меркурий в Козероге
Ретроградный Меркурий в Водолее
Ретроградный Меркурий в Рыбе
Ретроградный Меркурий в Овне
Ретроградный Меркурий в Тельце
Ретроградный Меркурий в Близнеце
Ретроградный Меркурий в Раке
Ретроградный Меркурий в Льве
Ретроградный Меркурий в Деве
Ретроградный Меркурий в Весах
Ретроградный Меркурий в Скорпионе
Ретроградный Меркурий в Стрельце
по месяцу первого коммита
по месяцу первого коммита
по месяцу первого коммита
по месяцу первого коммита
по месяцу первого коммита
по месяцу первого коммита
по месяцу первого коммита
по месяцу первого коммита
по месяцу первого коммита
по месяцу первого коммита
по месяцу первого коммита
по месяцу первого коммита
test

View file

@ -0,0 +1,29 @@
Копировать
Текст скопирован
Страница
Отображается по
строк.
из
Показать все
стандартное рабочее время (будни, с 07:00 до 20:00)
выходные дни или время до/после рабочего дня
суммарное количество коммитов за все время в конкретный день и час
Удалить
Нет или недостаточно данных для отображения
Система обработает больше данных, если коммиты будут подписаны в формате [Git commit message convention|https://www.conventionalcommits.org/en/v1.0.0/]. Шаблон:
Номерадачи тип(фича): пояснение
Например:
Нет данных для этого сотрудника
Он вносил правки не каждый рабочий день и получил статус «Помошник».
Работой сотрудников с таким статусом по данному проекту можно пренебречь, т.к. его влад на общем фоне незначителен.
Поэтому система не рассчитывает для него ряд показателей.
Если это ошибка и данного сотрудника нужно рассчитать как обычного, перейдите в раздел «Настройки» и измените его тип.
Git статистика
Фильтры
Изменения сохранены
Настройки сохранены
Ошибка загрузки файла $1

View file

@ -0,0 +1,47 @@
Команда
Сотрудник
Настройки
Печать
Расшарить
Выйти
всё время
год
пол года
месяц
неделя
Общая информация
Фичи
Сотрудники
Типы задач
Влитие кода
По дням
По неделям
По месяцам
Файлы
Удалённые файлы
Типы файлов
Список задач
Список релизов
Расписание
Все коммиты
Все изменения
Популярные слова
Викторина
Рефакторинг
Компании
Местоположение
Настройки
Общая информация
Стоимость работы
Скорость
По дням
По неделям
По месяцам
Список задач
Расписание
Все коммиты
Все изменения
Популярные слова
Настройки

View file

@ -0,0 +1,297 @@
Выполните команду в корне вашего проекта
Перетащите
файл log.txt на эту страницу
Git создаст файл log.txt. Он содержит данные для построения отчёта. Или git shortlog -s -n -e если отчёт вам не нужен. Создайте файл [.mailmap|https://git-scm.com/docs/gitmailmap] в корне проекта, чтобы объединить статистику по сотрудникам.
Сервис *НЕ ХРАНИТ* и *НЕ ПЕРЕДАЁТ* ваши данные. Все расчёты выполняются локально в вашем браузере прямо на вашей машине.
Сервис *НЕ СОБИРАЕТ СТАТИСТИКУ* по проектам. Вы можете отключить интернет, проверить трафик и даже собрать локальный билд из [исходников|https://github.com/bakhirev/assayo].
Статистика по словам
самое популярное слово. Встречается $1 раза.
Количество коммитов по дням
($1) самый продуктивный день по числу коммитов.
$1 сделано коммитов: $2
Не имеет значения
Что распечатываем?
Текущую страницу
Текущий раздел
Всю статистику
Отмена
Оглавление
Отчёт по git-репозиторию
«$1»
Данные для отчёта были получены из истории коммитов.
Текущий статус
Время работы
дней
пол года
год
полтора
два года
больше
Детализация
*Часть статистики* (скорость работы, затраченные деньги и т.п.) *по сотрудникам с типом «Помощник» не считается*, т.к. это эпизодическая роль в проекте. Предполагаем, что они не влияют на проект, а их правками можно пренебречь на фоне общего объема работы.
*Сортировка по умолчанию* — это сортировка по количеству задач и группам (текущие, уволенные, помогающие сотрудники).
Статус
Компания
Первый коммит
Последний
Всего дней
Тип работ
Коммитов
коммитов
Задач
задач
Дни с коммитами и без
работа
дни без коммитов
дней
Дней на задачу
Фич
Получил
Отработал
Переплата
работает
уволен
помощник
Распределение коммитов в течении каждого дня недели
Календарь работы по проекту
(первый рабочий день)
(последний рабочий день)
Статистика по фичам
Фича
Раб. дней
Человеко-дней
Задач
Коммитов
коммитов
Тип работ
Персональный вклад
Стоимость
Статистика по типам задач
*Персональный вклад* считается по количеству коммитов, а не объему измененных строк или файлов. Поэтому следует так же смотреть раздел «Анализ файлов», чтобы оценить масштаб изменений.
Тип работы
неизвестный
Задач
задач
Дней
дней
Человеко-дней
Коммитов
Персональный вклад
Объём работ
Стоимость
человеко-дней
Учтены только дни, в которые делались коммиты
коммитов
Удалённые ветки не считаются
дней без коммитов
Все дни минус: праздники, выходные, отпуск, дни с коммитами
работает / уволилось
Если сотрудник в течении месяца не сделал ни одного коммита, он считается уволенным
общая
Суммарные затраты на зп
фактическая
Фактически отработанные дни умноженные на среднюю зп
возможная переплата
Оплаченные рабочие дни, когда коммитов не было
работа на выходных
Суммарная переплата за работу в выходные дни
задач в день
Средняя скорость работы команды при текущем составе сотрудников
в месяц
Прогнозируемая сумма выплаты на зп при текущем составе сотрудников без учета налогов и сопутствующих затрат
*Человеко-дни* — это работа одного сотрудника в течение одного рабочего дня. Например, за один календарный день, команда из трех сотрудников выдает объем работы в три человеко-дня.
*Днями прогулов* считаются только рабочие дни, когда коммиты могли бы быть сделаны. Выходные, государственные праздники и отпуска в расчёте не участвуют.
Карточка *работает и уволилось* показывает фактический состав сотрудников, которые постоянно участвуют в работе. Кроме этого, есть «помощники» — это сотрудники, как правило другой специализации, которые могут иногда делать коммиты в проект.
*Переплатой* считаются только рабочие дни, когда коммиты могли бы быть сделаны. Выходные, государственные праздники и отпуска в расчёте не участвуют. Именно поэтому переплата + фактическая стоимость != общей. В общей стоимости заложена оплата выходных, государственных праздников и отпусков.
*Работой на выходных* считается по коэффициенту х2 от оплаты обычного дня. Выше отображена именно переплата (х1), т.к. сам факт переработки в данном контексте не интересен. Мы не смотрим скорость сжигания бюджета. Мы смотрим переплату при увеличении скорости работы.
Дерево проекта с учётом выбранных фильтров
Сотрудник
Количество коммитов
Минимальное количество коммитов, которое сделал сотрудник в файле
Все сотрудники
Строк
Задач
Дней
задач
дней
Кто добавлял
Кто менял
Кто удалял
строк
добавили
изменили
удалили
Детализация
По количеству сотрудников
сотрудников
По длительности контракта
компаний
активна
контракт истёк
По времени последнего коммита
Работают
Уволенные
Помощники
По почте, времени и языку
По времени
сотрудников
Список сотрудников
Локация
Сотрудники
Командировки (или VPN, или rebase)
Сотрудник
Количество перелётов
Список локаций
Дата перлёта
Локация
Кандидаты на рефакторинг
строк
задач
дней
Путь
Первый коммит
Строк
Задач
Дней в разработке
Коммиты
Активность
Статистика по неделям
Дата
Количество задач
Количество человек
Изменение строк
Дни с коммитами и без
Кто не коммитил
добавили
изменили
удалили
были коммиты
небыло коммитов
дней
задач
Задача
задач
Первый коммит
Последний
Среднее время работы над задачей
Среднее время ревью PR
Время работы над задачей
Время ревью PR
Отношение времени разработки к времени ревью
день
три дня
неделя
две недели
месяц
более
Дата влития
Влил
Сотрудник
разработка
ожидание
дней
Время потраченное на одну задачу
*Время разработки* это разница времени от первого до последнего коммита по задаче. Не важно были перерывы в несколько дней между коммитами или нет. Сам факт какого-либо коммита увеличивает время.
*Время ожидания* это время между последним коммитом и влитием кода. Оно показывает фактический простой в ожидании чего-либо.
*Зачем отображать время разработки* без разбивки на кодинг и код-ревью? Затем, чтобы показать бизнесу фактическое время поставки кода. Ожидание тестирования, замечания на ревью, проблемы DevOps и прочие несовершенства процесса, как раз уже заложены в этот срок.
Статистика по сотрудникам
Длительное ожидание влития
PR без номера задачи
Ветка
Задача
Автор первого коммита
Первый коммит
Последний коммит
Дней в работе
Комментарии
Расширения файлов
Подтип файлов
Тип
Путь
Количество
Количество удалённых
файлов
Скачать
Релиз
Дата создания
Дата завершения
Задач
Дней работы
Дней до следующего релиза
Фотография
место для фотографии
Основные характеристики
дней работы
Учтены только дни, в которые делались коммиты
задач
Если коммиты правильно подписаны
Позиция по этой метрике, относительно других. Два сотрудника могут занять одно место, если значение совпало. Поэтому, общее число мест может быть меньше, чем количество сотрудников.
Персонаж
Достижения
Позитивные
Нейтральные
Негативные
Чем больше сотрудник набрал отрицательных достижений, тем больше вероятность, что ситуация нестандартная. Возможно, стоит изменить режим его работы, задачи или отчётность. Следует поговорить с ним и узнать, какие проблемы мешают его работе.
Медали за номера задач:
Медаль выдается, если пользователь первым оставляет коммит к задаче с «красивым» номером.
дней работы
Учтены только дни, в которые делались коммиты
задач
Если коммиты правильно подписаны
дней без коммитов
Все дни минус: праздники, выходные, отпуск, дни с коммитами
коммитов
Удалённые ветки не считаются
Время от первого, до последнего коммита (в том числе, нерабочие дни)
Дней на проекте:
(уволен)
(помощник)
Достижения
Достижения
При некоторых видах форматирования git отмечает строки как «удалённые» и «добавленные»,
хотя на самом деле они были «изменены». Поэтому, если вы провели большой рефакторинг,
git может показать малое количество изменений в статистике, а фактический результат
будет отмечен, как скачок «удаленных» и «добавленных» строк.
Список коммитов и количество изменений в них за этот день:
Список коммитов:
За всё время
Средняя стоимость
получил
Предполагаемая сумма зп с проекта (см. настройки)
отработал
Фактически отработанные дни умноженные на среднюю зп
возможная переплата
Дни без коммитов умноженные на среднюю зп
задача
Количество закрытых задач к стоимости дня
коммит
Количество коммитов к стоимости рабочего дня
Одна задача в среднем это
Максимальная скорость в день
дней
Имеются ввиду рабочие дни, если коммиты правильно подписаны
коммитов
Отрезаны 10% максимальных и минимальных значений
строк кода
Отрезаны 10% максимальных и минимальных значений
задач
Задача может быть не доделана, но работа по ней должна быть
коммитов
Задача может быть не доделана, но работа по ней должна быть
Распределение коммитов в течении каждого дня недели
Дата
Количество задач
Дни с коммитами
Задач в день
дней
будни
выходные
Поддержите проект
Расскажите о нашем [проекте|https://github.com/bakhirev/assayo] в соцсетях! Можно поделиться [статьей|https://habr.com/ru/articles/763342/], [постом|https://www.reddit.com/r/ITManagers/comments/1e5k291/the_visualization_and_analysis_of_git_commit/] или [видео|https://www.youtube.com/watch?v=jwCp_-bhrCQ].
Копировать ссылку
Мы будем рады, если вы поддержите нас любой суммой! Все средства пойдут на дальнейшее развитие проекта.
Разовый платёж (СБП)
Подписка GitHub Sponsor

View file

@ -0,0 +1,521 @@
Закрыть
Подробнее
Рекомендации и факты
сделал первый коммит
День недели: $1
сделал последний коммит
День недели: $1
$1 дней
от первого до последнего коммита (включая выходные и праздники).
без коммитов, даже с учётом выходных, отпуска и государственных праздников.
работы на выходных
# Почему это плохо:
- заказчик платит двойную цену за работу в выходной день;
- сотрудники быстрее выгорают;
Регулярные переработки
Бывают переработки
Вероятно, стоит сменить менеджера проекта, аналитика и архитектора.
# Почему это плохо:
- заказчик платит двойную цену за работу в выходной день;
- качество продукта, как правило, получается низкое;
- часть сотрудников увольняется;
- из-за спешки появляются новые ошибки;
# Скорее всего:
- неверно оценили сроки в самом начале;
- техническое задание отсутствует;
- слабая аналитика;
- слабая архитектура (архитектора не нанимали, а команда состоит из мидл разработчиков);
- сначала начали писать код, потом проектировать;
- нет нормальных процессов, чтобы понять ошибки;
Обычно без переработок
Но иногда бывают.
# Почему это плохо:
- заказчик платит двойную цену за работу в выходной день;
- сотрудники быстрее выгорают;
Нет параллельных работ
любую фичу в один момент времени делает один человек.
# Метод расчёта:
- человеко-дни делятся на фактические дни для каждой фичи;
- находим среднее арифметическое;
- если результат меньше 1.3 считаем, что параллельных работ в рамках большинства фичей обычно нет;
# Почему это плохо:
- повышается bus factor;
- сотрудники медленнее развиваются;
- трудно качественно проверить работу сотрудника;
# Почему это хорошо:
- появляются эксперты, которые очень глубоко погружены в предметную область и могут предложить более качественные решения;
- скорее всего не бывает merge конфликтов;
- проект может очень быстро параллельно развиваться в разные стороны;
Часть работ параллельно
Иногда фичу делают одновременно несколько человек.
# Метод расчёта:
- человеко-дни делятся на фактические дни для каждой фичи;
- находим среднее арифметическое;
- если результат от 1.3 до 2.0 считаем, что часть работ в рамках разных фичей иногда делается параллельно;
Параллельные работы
любую фичу в один момент времени делают несколько человек
# Метод расчёта:
- человеко-дни делятся на фактические дни для каждой фичи;
- находим среднее арифметическое;
- если результат больше двух считаем, что большая часть работ в рамках разных фичей обычно делается параллельно;
в такую сумму можно оценить работу по данному проекту.
# Метод расчёта:
- человеко-дни затраченные на разработку умножаются на индивидуальную зарплату разработчиков;
Изменить зарплату каждого разработчика, для более точной суммы, можно в разделе «Настройки»
# Это много или мало?
Для ответа на этот вопрос, нужно ответить на следующие:
- за эти деньги можно купить готовое решение?
- за эти деньги можно сделать более хороший продукт?
Если ответ на оба вопроса «да», то возможно, разработка с нуля не стоила потраченных на неё денег.
Bus factor = 1
В большинство фич погружен один человек.
Надо переключать людей.
# Почему это плохо:
- если сотрудники будут увольняться, будет трудно продолжить их работу;
- невозможно контролировать качество его кода;
# Как делается выборка:
- более 80% коммитов в фичу делает один человек;
- проект имеет более 60% таких фичей;
в фичи погружен один человек.
# Почему это плохо:
- если он уволится, будет трудно продолжить разработку;
- снижается качество code-review;
- трудно запараллелить разработку при необходимости;
# Как делается выборка:
- более 80% коммитов в фичу сделал один человек;
Плохие процессы
Большинство фич содержат один тип задач.
фичи содержат один тип задач.
Возможно, разработчики неправильно подписывают коммиты или менеджер заводит один и тот же тип задач.
# Почему это важно:
- невозможно передать поддержку другой команде;
- невозможно выпустить "коробочную" версию;
- сильная зависимость от конкретных разработчиков;
- большое количество ошибок и низкое качество кода;
- вероятное замедление разработки в будущем;
# В чём ошибка менеджера:
- взгляд на продукт, только с позиции «работающей демки»;
# Что должно быть:
- тесты;
- ошибки (выявленные по результатам тестов);
- рефакторинг (т.к. архитектура может измениться);
- документация;
- правки стиля (как результат опроса фокус-группы);
Постройте долгосрочный план
с учетом архитектуры.
При том опираться этот план должен сразу на самые трудные задачи.
# Почему отсутствие плана плохо:
- сотрудники делают минимально работающую версию, не закладывая точки расширения. После этого пишется не масштабируемый код, который тормозит следующие фичи;
# В чём ошибка менеджера:
- он не показал, как продукт будет развиваться далее и в каких точках будет рост;
# Как должно быть:
- составляется глобальный план развития продукта;
- составляется глобальный план развития архитектуры (с разработчиками и DBA);
- на уровне схем сразу проговариваются моменты, которые могут сильно измениться;
Оцените инвестиции в фичу
с количеством потенциальной прибыли.
Фичи которые дорого стоят в разработке, но приносят мало прибыли, возможно, стоит отложить или вообще отменить. Это сделает проект более коммерчески успешным.
Слишком мало кода: $1
Может уволить?
# Состав:
- $1;
# Ответьте себе на вопросы:
- он тимлид, архитектор, аналитик?
- это его основной проект?
- есть какие-то зависимости от него?
# Почему нет смысла исправлять
Суммарные затраты на разработчика уже больше чем прибыль от его работы.
Если мы считаем, что объективных помех его работе не было, то человек либо не хочет работать вообще, либо работает на двух проектах одновременно.
Увольнение и замена новым сотрудником выглядит оправданным с точки зрения общей статистики.
Пишут мало кода: $1
Нужно взять на контроль.
# Состав:
- $1;
# Как делается выборка:
- на тестовых выборках хороший программист пишет код больше 80% времени;
- в данном случае показатель от 60% до 80%;
# Как контролировать:
- дробить задачи на 1..2 дня;
- каждый день спрашивать статус;
- убедиться, что задачи хорошо расписаны и готовы к началу разработки;
- устроить парное программирование, чтобы проверить фактическую скорость;
получает слишком однообразные задачи по типу. Может выгореть.
# Почему это важно:
- если сотрудник выгорит, его скорость работы снизится;
- замедляется профессиональный рост;
- повышается вероятность увольнения;
# Как делается выборка:
- для каждого коммита определятся тип задачи;
- если больше 70% задач одного типа, значит человек делает одно и тоже;
Работает $1
над проектом в данный момент.
# Состав:
- $1;
# Почему именно они:
- рабочих дней более 50%;
- работали в течении последних 30 дней;
Уволилось $1
или работало короткий промежуток времени.
# Состав:
- $1;
# Почему именно они:
- работали в нормальном ритме (видимо, это их основной репозиторий);
- за последний месяц не было ни одного коммита;
- отпуск обычно 14 дней (их отсутствие не похоже на отпуск);
Помогают $1
Люди другой специализации, которые что-либо коммитили.
# Состав:
- $1;
# Почему именно они:
- это не open-source проект;
- рабочих дней менее 15% от общего числа;
- изменяют примерно одни и те же файлы;
Открытый проект
пять дней в неделю тут не работают.
Проект может быть и закрытым, просто такой темп работы обычно у открытых библиотек на GitHub.
# Метод оценки:
- берется статистика по всем активным разработчикам;
- подсчитывается среднее число дней работы и без коммитов;
- у open-source библиотек рабочих дней обычно максимум 15..20%;
# Последствия
Для проектов, где работа не постоянна, нет смысла во многих показателях. Поэтому показатели без коммитов, скорости и т.п. будут скрыты.
Как правило, оценку таких проектов делают перед началом разработки своей закрытой версии. Самые интересные показатели в этом случае вероятная стоимость и суммарное время на разработку.
Слабая загрузка
слишком много дней без коммитов.
Нужно понять почему команда не пишет код.
# Метод оценки:
- берется статистика по всем активным разработчикам;
- подсчитывается среднее число дней работы и без коммитов;
- загрузка считается слабой, если процент без коммитов от 5% до 20%;
# Возможные причины:
- фактически нет задач;
- задачи есть, но хорошо ложатся на текущую архитектуру;
- разработчиков отвлекают совещаниями;
- команда не работает;
# Варианты решения:
- обсудить проблему с командой;
- уменьшить гранулярность задач, чтобы за день можно было успеть сделать одну или две задачи;
- ввести ежедневные совещания, чтобы проверять движение задач по статусу;
- устроить сеансы парного программирования, чтобы убедиться, что разработчик может работать быстрее;
Обозначьте дедлайны
У любой задачи должен быть чёткий дедлайн.
Это позволит не затягивать её выполнение на несколько дней или недель.
# Какие показатели стоит проверить:
- количество дней на одну задачу, которое тратит работник;
- количество дней ожидания влития PR (страница статистики по PR);
Проводите ежедневные совещания
они помогают быть в курсе проекта.
Не растягивайте их отвлекаясь на посторонние темы.
# На какие вопросы должен ответить сотрудник:
- что было сделано;
- что будет сделано;
- есть ли какие-либо проблемы;
# Следует обрывать монолог, если:
- начинают подробно описывать мелкие детали, которые не важны;
- уводят диалог в сторону, от первоначального плана;
# Почему это важно:
Часто сотрудник, который ничего не делает, старается уйти от ответа. Для этого он рассказывает кучу ненужных подробностей свой работы. Это позволяет усыпить внимание участников и растянуть время ответа. Создается ощущение что он чем-то занят, хотя по факту работы не было.
Составьте план обучения
на каждого сотрудника.
*Индивидуальный план обучения* — это список целей и задач, которые помогают человеку развиваться в определенной области.
# Как составить план:
- составить матрицу компетенций;
- определить по каким компетенциям меньше всего знаний и опыта;
- узнать какие из этих компетенций интересны сотруднику;
- придумать 3..5 целей в рамках каждой такой компетенции на полпостороние года или год;
- каждый месяц пытаться сделать что-либо для достижения одной цели;
- каждый месяц напоминать об общем плане достижения этих целей;
# Нужен ли план руководителю?
Да, руководитель так же должен составить план на себя. Если нет вышестоящего руководителя, то он должен проверять сам себя.
# Почему это важно:
- сотрудники становятся более лояльны к компании;
- за теже деньги вы получаете более квалифицированные кадры;
Проводите 1-1 каждый месяц
это поможет выявить проблемы на ранней стадии.
*One-to-one* — это регулярные личные встречи руководителя с подчиненным. На таких встречах обычно обсуждают всё, что важно для сотрудника, что его волнует, и то, чем он может поделиться с руководителем только наедине.
# Почему это важно:
- легко выяснить, кто из сотрудников перегружен, а у кого есть свободное время;
- можно предотвратить выгорание сотрудника;
- можно получить быструю обратную связь о процессах, которые вы можете не замечать;
- формируется доверительное отношение, сотрудники становятся более лояльны к компании;
- повышается мотивация и вовлеченность сотрудников;
Ходите в бар
один раз в месяц или два.
Это поможет выстроить неформальную коммуникацию в коллективе и сплотить команду, даже если общение будет сжатым.
# Почему это важно:
- можно получить быструю обратную связь о процессах, которые вы можете не замечать;
- формируется доверительное отношение, сотрудники становятся более лояльны к компании;
- повышается вовлеченность сотрудников;
Выходных тут нет
Вероятно, стоит уволить менеджера проекта.
Работа на выходных
Вероятно, стоит проверить менеджера проекта.
Бывают проблемы
Вероятно, бывают завалы и приходится работать на выходных.
Стало меньше прогулов
за последние три недели этот показатель упал
Стало больше прогулов
нет задач или нужен более жесткий контроль
Стабильно не дорабатывает
т.к. каждую неделю пишет код не 100% времени
Стабильно перерабатывает
т.к. каждую неделю пишет код в выходные дни
Растёт производительность
или задачи стали слишком мелкие.
Нужно проверить. Если гранулярность та же - закрепить результат.
стабильный лидер по прогулам. Уволить?
Падает производительность
или задачи хуже разбивают. Нужно проверить. Если гранулярность та же - взять на контроль.
# Метод оценки:
- количество задач в день, над которыми работают, на протяжении последних трех недель стабильно падает.
# Возможные ошибки:
- задачи могли быть сложнее, чем казались;
- задачи могли иметь большой объём работы (нужно проверить количество изменений, падают они или нет за этот же период)
Не подписывают тип задачи
большинство типов задач делает один человек.
Узкая специализация
большинство задач одного типа делают одни и те же люди.
# Типы задач:
# Возможно, это не так
Нужно убедиться, что остальные сотрудники верно подписывают коммиты.
Шаги, которые помогут это сделать:
- настроить пре-коммит проверку для commit message;
- объяснить команде, что нужно указывать тип;
- проверить в новых ветках, что сотрудники следуют правилу;
# Если это действительно так
Вы настроили проверки и убедились что один и тот же сотрудник, делает задачи одного и того же типа.
Почему это плохо:
- его увольнение остановит целую пачку процессов;
- уменьшается компетенция остальных членов команды;
- трудно верхнеуровнево понять его правки;
Как это исправить:
- распределять разные типы задач равномерно;
- менять область работы (тесты, документация, ошибки) между сотрудниками через спринт;
Это локальный продукт
для конкретного заказчика или проблемы.
# Какие признаки есть у «глобального» продукта:
- локализация;
- документация;
- большой объём тестов;
- визуальная кастомизация;
- рефакторинг узких мест;
- и т.п.
# Почему этот продукт выглядит как «локальный»:
- у каждого «глобального» признака будет перевес по своему типу задач;
- чем больше «глобальных» признаков, тем больше вероятность «глобального» продукта;
В данном случае мы видим небольшое число типов, а следовательно, скорее всего есть недоработки, мешающие легко масштабировать продукт на мировой рынок и продавать его в других странах.
# Возможно, это не так
По типам файлов мы можем предположить тип программы (сайт, серверное приложение, DevOps скрипты и т.д.). Для frontend приложения наша гипотеза будет более верной, чем для DevOps-скриптов, которые могут быть лишь микро-модулем инициализации.
Разбейте лидирующий тип на подтипы
для детализации ошибок.
Как правило, тип задач с меткой «исправление ошибок» является лидирующим. Это делает статистику слабо-детализированной.
*Если у вас произошла такая ситуация*, вы можете разбить этот тип на подтипы (например, по месту обнаружения).
Рассмотрим несколько вариантов подтипов:
- fix_dev (ошибка выявленная в процессе разработки);
- fix_test (ошибка выявленная в процессе тестирования);
- fix (ошибка выявленная в проде);
Копите мелкие задачи
для новых сотрудников.
# Если задача:
- не важная;
- не большая;
- не требует сильного погружения в контекст;
- больше про рефакторинг, чем про новый код;
# Положите её в backlog с меткой «для новичков».
Когда придёт новый сотрудник, вы сможете моментально достать ему пачку небольших и разнообразных по типу задач, для ознакомления с проектом.
Также, если у вас будет застой в работе, вы сможете доставать по одной такой мелкой задаче из backlog-а.

View file

@ -0,0 +1,28 @@
Настройки отображения
Заголовок страницы
Язык интерфейса
Скрыть персональные данные
Префиксы ссылок
Для номеров задач
Для PR
Индивидуальные настройки
Индивидуальных настроек нет. Данные по всем сотрудникам вычисляются по общим параметрам.
Дополнение к трудовому договору №$1
Дата начала действия
Настройки .mailmap
Общие данные по зарплате
Тип работы над проектом
Полная занятость
Проектная работа
Зарплата в месяц в долларах США
Валюта для отображения
Количество рабочих дней в году
Количество дней отпуска в год
Рабочие дни
Сохранить
Отмена
Удалить
Добавить сотрудника
Добавить трудовой договор