feat: автосинхронизация компонентов для новых пользователей и Support Bundle
- Воркер теперь запускает SyncComponents при пустой local_components, чтобы новый пользователь получил каталог компонентов без ручного действия - Результат синхронизации компонентов персистируется в app_settings (last_component_sync_status/error/attempt_at) по аналогии с прайслистами - Добавлен эндпоинт GET /api/support-bundle: скачивает ZIP с диагностикой (app_info, local_db_stats, db_connection с TCP-пингом, sync_readiness, system_metrics с памятью и диском, schema_migrations, app.log) - Кнопка-иконка в шапке рядом с юзернеймом для скачивания бандла Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
20
internal/handlers/support_bundle_disk_unix.go
Normal file
20
internal/handlers/support_bundle_disk_unix.go
Normal file
@@ -0,0 +1,20 @@
|
||||
//go:build linux || darwin
|
||||
|
||||
package handlers
|
||||
|
||||
import "syscall"
|
||||
|
||||
func diskUsage(path string) map[string]any {
|
||||
var stat syscall.Statfs_t
|
||||
if err := syscall.Statfs(path, &stat); err != nil {
|
||||
return nil
|
||||
}
|
||||
total := stat.Blocks * uint64(stat.Bsize)
|
||||
free := stat.Bfree * uint64(stat.Bsize)
|
||||
return map[string]any{
|
||||
"total_bytes": total,
|
||||
"free_bytes": free,
|
||||
"used_bytes": total - free,
|
||||
"path": path,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user