Update migration_reporter.py
This commit is contained in:
@@ -293,8 +293,20 @@ class MigrationAnalyzer:
|
|||||||
self.git_info_cache[cache_key] = info
|
self.git_info_cache[cache_key] = info
|
||||||
return info
|
return info
|
||||||
|
|
||||||
def _get_file_dates(self, file_path: Path) -> Dict[str, str]:
|
def _get_file_dates(self, file_path: Path, git_info: Optional[Dict[str, str]] = None) -> Dict[str, str]:
|
||||||
"""Получает даты файла"""
|
"""Даты файла по данным git (источник правды):
|
||||||
|
created_date — когда файл добавлен в репозиторий (commit add),
|
||||||
|
modified_date — дата последнего commit'а файла.
|
||||||
|
Даты файловой системы (mtime/ctime) — только fallback (--no-git, git недоступен)."""
|
||||||
|
git_info = git_info or {}
|
||||||
|
fs_dates = self._get_fs_file_dates(file_path)
|
||||||
|
return {
|
||||||
|
'created_date': git_info.get('created_date') or fs_dates['created_date'],
|
||||||
|
'modified_date': git_info.get('last_commit_date') or fs_dates['modified_date'],
|
||||||
|
}
|
||||||
|
|
||||||
|
def _get_fs_file_dates(self, file_path: Path) -> Dict[str, str]:
|
||||||
|
"""Fallback: даты файлов из файловой системы"""
|
||||||
try:
|
try:
|
||||||
stat = file_path.stat()
|
stat = file_path.stat()
|
||||||
return {
|
return {
|
||||||
@@ -303,8 +315,8 @@ class MigrationAnalyzer:
|
|||||||
}
|
}
|
||||||
except:
|
except:
|
||||||
return {
|
return {
|
||||||
'created_date': 'неизвестно',
|
'created_date': '',
|
||||||
'modified_date': 'неизвестно',
|
'modified_date': '',
|
||||||
}
|
}
|
||||||
|
|
||||||
def _extract_programmer_comments(self, content: str) -> Dict[str, Any]:
|
def _extract_programmer_comments(self, content: str) -> Dict[str, Any]:
|
||||||
@@ -547,8 +559,8 @@ class MigrationAnalyzer:
|
|||||||
return
|
return
|
||||||
|
|
||||||
file_name = file_path.name
|
file_name = file_path.name
|
||||||
file_dates = self._get_file_dates(file_path)
|
|
||||||
git_info = self._get_git_info(file_path)
|
git_info = self._get_git_info(file_path)
|
||||||
|
file_dates = self._get_file_dates(file_path, git_info)
|
||||||
|
|
||||||
migration_date = git_info.get('created_date') or file_dates['created_date']
|
migration_date = git_info.get('created_date') or file_dates['created_date']
|
||||||
author = git_info.get('last_author') or self._extract_author(content) or 'неизвестен'
|
author = git_info.get('last_author') or self._extract_author(content) or 'неизвестен'
|
||||||
@@ -2361,6 +2373,7 @@ class HTMLReportGenerator:
|
|||||||
for batch in self._sorted_batches():
|
for batch in self._sorted_batches():
|
||||||
batch_changes = self.batches[batch]
|
batch_changes = self.batches[batch]
|
||||||
files = sorted(set(ch.get("file", "") for ch in batch_changes if ch.get("file")))
|
files = sorted(set(ch.get("file", "") for ch in batch_changes if ch.get("file")))
|
||||||
|
commits = sorted({ch.get("git_commit") for ch in batch_changes if ch.get("git_commit")})
|
||||||
entries = "\n".join(self._change_entry_html(ch)
|
entries = "\n".join(self._change_entry_html(ch)
|
||||||
for ch in sorted(batch_changes, key=lambda c: c["sequence"]))
|
for ch in sorted(batch_changes, key=lambda c: c["sequence"]))
|
||||||
files_html = "".join(f'<span class="batch-file">📄 {fname}</span>' for fname in files)
|
files_html = "".join(f'<span class="batch-file">📄 {fname}</span>' for fname in files)
|
||||||
@@ -2368,7 +2381,7 @@ class HTMLReportGenerator:
|
|||||||
<div class="batch-section" data-batch="{batch}">
|
<div class="batch-section" data-batch="{batch}">
|
||||||
<div class="batch-header">
|
<div class="batch-header">
|
||||||
<span>🗂 {batch}</span>
|
<span>🗂 {batch}</span>
|
||||||
<span class="batch-meta">{len(files)} файлов • {len(batch_changes)} изменений</span>
|
<span class="batch-meta">{len(commits)} коммитов • {len(files)} файлов • {len(batch_changes)} изменений</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="batch-files">{files_html}</div>
|
<div class="batch-files">{files_html}</div>
|
||||||
<div class="changes-history">{entries}</div>
|
<div class="changes-history">{entries}</div>
|
||||||
|
|||||||
+19
-6
@@ -293,8 +293,20 @@ class MigrationAnalyzer:
|
|||||||
self.git_info_cache[cache_key] = info
|
self.git_info_cache[cache_key] = info
|
||||||
return info
|
return info
|
||||||
|
|
||||||
def _get_file_dates(self, file_path: Path) -> Dict[str, str]:
|
def _get_file_dates(self, file_path: Path, git_info: Optional[Dict[str, str]] = None) -> Dict[str, str]:
|
||||||
"""Получает даты файла"""
|
"""Даты файла по данным git (источник правды):
|
||||||
|
created_date — когда файл добавлен в репозиторий (commit add),
|
||||||
|
modified_date — дата последнего commit'а файла.
|
||||||
|
Даты файловой системы (mtime/ctime) — только fallback (--no-git, git недоступен)."""
|
||||||
|
git_info = git_info or {}
|
||||||
|
fs_dates = self._get_fs_file_dates(file_path)
|
||||||
|
return {
|
||||||
|
'created_date': git_info.get('created_date') or fs_dates['created_date'],
|
||||||
|
'modified_date': git_info.get('last_commit_date') or fs_dates['modified_date'],
|
||||||
|
}
|
||||||
|
|
||||||
|
def _get_fs_file_dates(self, file_path: Path) -> Dict[str, str]:
|
||||||
|
"""Fallback: даты файлов из файловой системы"""
|
||||||
try:
|
try:
|
||||||
stat = file_path.stat()
|
stat = file_path.stat()
|
||||||
return {
|
return {
|
||||||
@@ -303,8 +315,8 @@ class MigrationAnalyzer:
|
|||||||
}
|
}
|
||||||
except:
|
except:
|
||||||
return {
|
return {
|
||||||
'created_date': 'неизвестно',
|
'created_date': '',
|
||||||
'modified_date': 'неизвестно',
|
'modified_date': '',
|
||||||
}
|
}
|
||||||
|
|
||||||
def _extract_programmer_comments(self, content: str) -> Dict[str, Any]:
|
def _extract_programmer_comments(self, content: str) -> Dict[str, Any]:
|
||||||
@@ -547,8 +559,8 @@ class MigrationAnalyzer:
|
|||||||
return
|
return
|
||||||
|
|
||||||
file_name = file_path.name
|
file_name = file_path.name
|
||||||
file_dates = self._get_file_dates(file_path)
|
|
||||||
git_info = self._get_git_info(file_path)
|
git_info = self._get_git_info(file_path)
|
||||||
|
file_dates = self._get_file_dates(file_path, git_info)
|
||||||
|
|
||||||
migration_date = git_info.get('created_date') or file_dates['created_date']
|
migration_date = git_info.get('created_date') or file_dates['created_date']
|
||||||
author = git_info.get('last_author') or self._extract_author(content) or 'неизвестен'
|
author = git_info.get('last_author') or self._extract_author(content) or 'неизвестен'
|
||||||
@@ -2361,6 +2373,7 @@ class HTMLReportGenerator:
|
|||||||
for batch in self._sorted_batches():
|
for batch in self._sorted_batches():
|
||||||
batch_changes = self.batches[batch]
|
batch_changes = self.batches[batch]
|
||||||
files = sorted(set(ch.get("file", "") for ch in batch_changes if ch.get("file")))
|
files = sorted(set(ch.get("file", "") for ch in batch_changes if ch.get("file")))
|
||||||
|
commits = sorted({ch.get("git_commit") for ch in batch_changes if ch.get("git_commit")})
|
||||||
entries = "\n".join(self._change_entry_html(ch)
|
entries = "\n".join(self._change_entry_html(ch)
|
||||||
for ch in sorted(batch_changes, key=lambda c: c["sequence"]))
|
for ch in sorted(batch_changes, key=lambda c: c["sequence"]))
|
||||||
files_html = "".join(f'<span class="batch-file">📄 {fname}</span>' for fname in files)
|
files_html = "".join(f'<span class="batch-file">📄 {fname}</span>' for fname in files)
|
||||||
@@ -2368,7 +2381,7 @@ class HTMLReportGenerator:
|
|||||||
<div class="batch-section" data-batch="{batch}">
|
<div class="batch-section" data-batch="{batch}">
|
||||||
<div class="batch-header">
|
<div class="batch-header">
|
||||||
<span>🗂 {batch}</span>
|
<span>🗂 {batch}</span>
|
||||||
<span class="batch-meta">{len(files)} файлов • {len(batch_changes)} изменений</span>
|
<span class="batch-meta">{len(commits)} коммитов • {len(files)} файлов • {len(batch_changes)} изменений</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="batch-files">{files_html}</div>
|
<div class="batch-files">{files_html}</div>
|
||||||
<div class="changes-history">{entries}</div>
|
<div class="changes-history">{entries}</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user