# Repo Health: fedor/node-postgres

https://sourcecraft.dev/fedor/node-postgres

PostgreSQL client for node.js.

| Показатель | Значение |
|---|---|
| **Repo Health Score** | **40.3 / 100** — Слабое состояние: нужны системные улучшения |
| Охват данных | 69% (метрик с данными: 52.9%) |
| Основной язык | JavaScript |
| Последняя активность | 22.08.2025 |
| Дата анализа | 29.09.2026 16:56 UTC |
| Вид анализа | полный |
| Оценки сообщества | 2 реакции, топ-11% каталога |
| Воспроизводимость | методика v1.6, снапшот `688c8421a929` |

## Оценки по категориям

| Категория | Оценка | Вес | Ключевой факт |
|---|---|---|---|
| Безопасность | **Нет данных** | 18% | нет прав SourceCraft на просмотр AppSec этого репозитория |
| Состояние кода и техдолг | 70.0/100 | 21% | Доля TODO старше 6 месяцев: 100% |
| Активность проекта | 1.1/100 | 18% | Осмысленные коммиты за 90 дней: 0 шт. |
| Документация и практики | 75.8/100 | 17% | Правила ревью и политики веток: 0 из 2 |
| CI/CD | 0.0/100 | 13% | Отсутствие SourceCraft CI подтверждено: .sourcecraft/ci.yaml не найден в полном дереве файлов |
| Работа с issues | **Нет данных** | 13% | в репозитории нет issues |

**Как получен итог.** Score = (70.0×21 + 1.1×18 + 75.8×17 + 0.0×13) / 69 = 40.3. Охват данных 69% — доля веса категорий, по которым есть данные. Категории без данных (Безопасность, Работа с issues) исключены из расчёта, их вес перераспределён.

## Сильные стороны

- **Плотность TODO/FIXME/HACK на 1000 строк кода** — 0.87 на 1000 строк
- **Тесты: наличие и доля тестового кода** — 67% кода в тестах
- **README: наличие, объём и ключевые разделы** — 88%
- **Лицензия (распознанный SPDX)** — есть, распознана
- **Инструкция запуска и сборки** — да

## Слабые стороны

- **Доля TODO старше 6 месяцев** — 100%
- **Давность последнего осмысленного коммита** — 1.1 года назад
- **Осмысленные коммиты за 90 дней** — 0 шт.
- **Живые авторы за год (без ботов)** — 0 чел.
- **Bus factor (авторов, покрывающих 50% коммитов за год)** — 0 чел.
- **Правила ревью и политики веток** — 0 из 2
- **Есть конфигурация CI (.sourcecraft/ci.yaml)** — нет

## Рекомендации

### 1. Проект не обновлялся больше года

- **Приоритет:** Высокий, трудоёмкость высокая, категория «Активность»
- **Проблема:** Последний коммит был 403 дней назад.
- **Почему это важно:** Без изменений проект может устаревать, а пользователям сложно понять, поддерживается ли он.
- **Что сделать:** Обновите зависимости, закройте или пометьте issues, опубликуйте статус проекта в README (поддерживается / архив).
- **Ожидаемый эффект:** +7.7 к Repo Health Score

- **Основание:** [git.last_commit_at](https://sourcecraft.dev/fedor/node-postgres/-/commits/master)

### 2. Закрыть устаревшие TODO

- **Приоритет:** Низкий, трудоёмкость средняя, категория «Состояние кода»
- **Проблема:** Больше половины TODO старше 6 месяцев.
- **Почему это важно:** Старые TODO почти никогда не выполняются и вводят в заблуждение.
- **Что сделать:** Проверьте старые пометки: выполните, удалите или превратите в issues.
- **Ожидаемый эффект:** +5.5 к Repo Health Score

- **Основание:** [code.todo_old_180d](https://sourcecraft.dev/fedor/node-postgres)

### 3. Зафиксировать версии зависимостей

- **Приоритет:** Низкий, трудоёмкость низкая, категория «Состояние кода»
- **Проблема:** Есть манифест зависимостей без lockfile в том же подпроекте.
- **Почему это важно:** Без фиксации версий сборка невоспроизводима, обновления ломают проект незаметно.
- **Что сделать:** Добавьте lockfile (package-lock.json, poetry.lock, go.sum и т.п.) и коммитьте его.
- **Ожидаемый эффект:** +2.7 к Repo Health Score

- **Основание:** [files.dependencies](https://sourcecraft.dev/fedor/node-postgres)

### 4. Настроить CI: добавить .sourcecraft/ci.yaml

- **Приоритет:** Высокий, трудоёмкость средняя, категория «CI/CD»
- **Проблема:** В репозитории нет конфигурации CI.
- **Почему это важно:** Без автоматических проверок изменения не проверяются, качество зависит от дисциплины каждого автора.
- **Что сделать:** Добавьте `.sourcecraft/ci.yaml` с workflow на push и pull_request: установка зависимостей, линтер, тесты.
- **Уточнение:** Эффект пока нельзя оценить: после изменения нужны новые данные для сопоставимого расчёта.

- **Основание:** [files.ci_config](https://sourcecraft.dev/fedor/node-postgres)

## Нет данных

Эти показатели не участвовали в расчёте и не подменялись нулями. Подтверждённое отсутствие компонента, например файла конфигурации CI, оценивается отдельно.

| Показатель | Почему нет данных |
|---|---|
| Открытые уязвимости, взвешенные по критичности | нет прав SourceCraft на просмотр AppSec этого репозитория |
| Доля исправленных findings за 90 дней | нет прав SourceCraft на просмотр AppSec этого репозитория |
| Открытые секреты в коде | нет прав SourceCraft на просмотр AppSec этого репозитория |
| Свежий скан безопасности (≤ 30 дней) | нет прав SourceCraft на просмотр AppSec этого репозитория |
| Влитые PR за 90 дней | в репозитории нет pull requests |
| Разных авторов влитых PR за год | в репозитории нет pull requests |
| Успешные прогоны среди последних 30 (с весом по свежести) | Отсутствие SourceCraft CI подтверждено: .sourcecraft/ci.yaml не найден в полном дереве файлов |
| Последний прогон успешен | Отсутствие SourceCraft CI подтверждено: .sourcecraft/ci.yaml не найден в полном дереве файлов |
| Нестабильность: чередование успех/провал | Отсутствие SourceCraft CI подтверждено: .sourcecraft/ci.yaml не найден в полном дереве файлов |
| Медианная длительность прогона | Отсутствие SourceCraft CI подтверждено: .sourcecraft/ci.yaml не найден в полном дереве файлов |
| CI запускается на pull request | Отсутствие SourceCraft CI подтверждено: .sourcecraft/ci.yaml не найден в полном дереве файлов |
| Зависшие открытые issues (без обновления > 60 дней) | в репозитории нет issues |
| Медиана первого ответа или текущего ожидания | в репозитории нет issues |
| Медианное время закрытия (за 180 дней) | в репозитории нет issues |
| Закрытые / созданные за 90 дней | в репозитории нет issues |
| Использование меток, приоритетов, исполнителей | в репозитории нет issues |

## Как посчитана каждая категория

### Безопасность — нет данных (вес 18%)

нет прав SourceCraft на просмотр AppSec этого репозитория

| Метрика | Значение | Норм. | Вес | Вклад |
|---|---|---|---|---|
| Открытые уязвимости, взвешенные по критичности | нет данных | — | 5 | — |
| Доля исправленных findings за 90 дней | нет данных | — | 2 | — |
| Открытые секреты в коде | нет данных | — | 3 | — |
| Свежий скан безопасности (≤ 30 дней) | нет данных | — | 1 | — |

### Состояние кода и техдолг — 70.0/100 (вес 21%)

| Метрика | Значение | Норм. | Вес | Вклад |
|---|---|---|---|---|
| Плотность TODO/FIXME/HACK на 1000 строк кода | 0.87 на 1000 строк | 100% | 3 | 27.27 |
| Доля TODO старше 6 месяцев | 100% | 0% | 2 | 0.0 |
| Тесты: наличие и доля тестового кода | 67% кода в тестах | 100% | 3 | 27.27 |
| Зафиксированные зависимости (lockfile) при наличии манифеста | нет | 0% | 1 | 0.0 |
| Доля крупных и бинарных файлов | 0% | 100% | 1 | 9.09 |
| Линтеры, форматтеры, editorconfig | 1 инструментов | 70% | 1 | 6.36 |

### Активность проекта — 1.1/100 (вес 18%)

| Метрика | Значение | Норм. | Вес | Вклад |
|---|---|---|---|---|
| Давность последнего осмысленного коммита | 1.1 года назад | 1% | 3 | 0.34 |
| Осмысленные коммиты за 90 дней | 0 шт. | 0% | 2 | 0.0 |
| Живые авторы за год (без ботов) | 0 чел. | 0% | 2 | 0.0 |
| Bus factor (авторов, покрывающих 50% коммитов за год) | 0 чел. | 0% | 2 | 0.0 |
| Влитые PR за 90 дней | нет данных | — | 1 | — |
| Разных авторов влитых PR за год | нет данных | — | 1 | — |
| Давность последнего релиза или тега | 1.3 года назад | 8% | 1 | 0.78 |

Ограничения категории: Нет коммитов больше года → не выше 20 (не повлияло)
### Документация и практики — 75.8/100 (вес 17%)

| Метрика | Значение | Норм. | Вес | Вклад |
|---|---|---|---|---|
| README: наличие, объём и ключевые разделы | 88% | 88% | 4 | 27.08 |
| Лицензия (распознанный SPDX) | есть, распознана | 100% | 2 | 15.38 |
| CONTRIBUTING, CODEOWNERS, CHANGELOG, SECURITY.md | 2 из 4 | 67% | 2 | 10.26 |
| Описание репозитория заполнено в SourceCraft | да | 100% | 1 | 7.69 |
| Правила ревью и политики веток | 0 из 2 | 0% | 2 | 0.0 |
| Инструкция запуска и сборки | да | 100% | 2 | 15.38 |

### CI/CD — 0.0/100 (вес 13%)

| Метрика | Значение | Норм. | Вес | Вклад |
|---|---|---|---|---|
| Есть конфигурация CI (.sourcecraft/ci.yaml) | нет | 0% | 3 | 0.0 |
| Успешные прогоны среди последних 30 (с весом по свежести) | нет данных | — | 4 | — |
| Последний прогон успешен | нет данных | — | 2 | — |
| Нестабильность: чередование успех/провал | нет данных | — | 2 | — |
| Медианная длительность прогона | нет данных | — | 1 | — |
| CI запускается на pull request | нет данных | — | 1 | — |

### Работа с issues — нет данных (вес 13%)

в репозитории нет issues

| Метрика | Значение | Норм. | Вес | Вклад |
|---|---|---|---|---|
| Зависшие открытые issues (без обновления > 60 дней) | нет данных | — | 3 | — |
| Медиана первого ответа или текущего ожидания | нет данных | — | 3 | — |
| Медианное время закрытия (за 180 дней) | нет данных | — | 2 | — |
| Закрытые / созданные за 90 дней | нет данных | — | 2 | — |
| Использование меток, приоритетов, исполнителей | нет данных | — | 1 | — |

## Подтверждающие факты

| Факт | Значение | Источник |
|---|---|---|
| `meta.description` | PostgreSQL client for node.js. | [meta](https://sourcecraft.dev/fedor/node-postgres) |
| `releases.count` | 0 | [releases](https://sourcecraft.dev/fedor/node-postgres/releases) |
| `tags.count` | 300 | [releases](https://sourcecraft.dev/fedor/node-postgres/tags) |
| `tree.files` | 355 | [tree](https://sourcecraft.dev/fedor/node-postgres) |
| `tree.sourcecraft_files` | [] | [tree](https://sourcecraft.dev/fedor/node-postgres/.sourcecraft) |
| `files.readme` | {"length": 5836, "present": true, "sections": ["install", "license", "contributing", "des… | [files](https://sourcecraft.dev/fedor/node-postgres/-/blob/master/README.md) |
| `files.license` | {"spdx": "MIT", "present": true} | [files](https://sourcecraft.dev/fedor/node-postgres) |
| `files.ci_config` | нет | [files](https://sourcecraft.dev/fedor/node-postgres) |
| `files.practices` | {"changelog": true, "codeowners": true, "security_md": false, "contributing": false, "bra… | [files](https://sourcecraft.dev/fedor/node-postgres) |
| `files.dependencies` | {"unlocked": ["packages/pg-bundler-test/package.json", "packages/pg-cloudflare/package.js… | [files](https://sourcecraft.dev/fedor/node-postgres) |
| `files.tooling` | {"linters": ["eslint"], "editorconfig": false} | [files](https://sourcecraft.dev/fedor/node-postgres) |
| `git.last_commit_at` | 2025-08-21T18:42:17-07:00 | [git](https://sourcecraft.dev/fedor/node-postgres/-/commits/master) |
| `git.meaningful_commits_90d` | 0 | [git](https://sourcecraft.dev/fedor/node-postgres/-/commits/master) |
| `git.human_authors_365d` | 0 | [git](https://sourcecraft.dev/fedor/node-postgres) |
| `git.activity_authenticity` | 1.0 | [git](https://sourcecraft.dev/fedor/node-postgres) |
| `code.todo_total` | 17 | [code](https://sourcecraft.dev/fedor/node-postgres) |
| `code.todo_old_180d` | 17 | [code](https://sourcecraft.dev/fedor/node-postgres) |
| `code.test_files` | 188 | [code](https://sourcecraft.dev/fedor/node-postgres) |
| `code.lines` | 19600 | [code](https://sourcecraft.dev/fedor/node-postgres) |
| `metric.docs.description` | {"result": true, "saved_inputs": {"description": "PostgreSQL client for node.js."}} | [Данные на дату анализа · Описание проекта](https://sourcecraft.dev/fedor/node-postgres) |
| `metric.docs.run_instructions` | {"result": true, "saved_inputs": {"run_instructions": true, "inventory_complete": true}} | [Данные на дату анализа · Файлы](https://sourcecraft.dev/fedor/node-postgres/-/tree/master) |
| `metric.activity.release_recency_days` | {"result": 459.0864442557176, "saved_inputs": {"items": {"count": 0, "sample": []}, "late… | [Данные на дату анализа · Релизы](https://sourcecraft.dev/fedor/node-postgres/releases) |
| `metric.code.lockfile` | {"result": false, "saved_inputs": {"dependency_manifests": {"count": 12, "sample": ["docs… | [Данные на дату анализа · Файлы](https://sourcecraft.dev/fedor/node-postgres/-/tree/master) |
| `metric.code.heavy_files_share` | {"result": 0.0028169014084507044, "saved_inputs": {"large_files": 0, "binary_files": 1, "… | [Данные на дату анализа · Код](https://sourcecraft.dev/fedor/node-postgres/-/tree/master) |
| `metric.code.quality_tooling` | {"result": 1, "saved_inputs": {"linters": {"count": 1, "sample": ["eslint"]}, "editorconf… | [Данные на дату анализа · Файлы](https://sourcecraft.dev/fedor/node-postgres/-/tree/master) |

## Сбор данных

| Источник | Статус | Комментарий |
|---|---|---|
| Issues | нет таких данных | в репозитории нет issues |
| Pull requests | нет таких данных | в репозитории нет pull requests |
| CI/CD | нет доступа | запуски CI видны только участникам репозитория; учтены конфиг и merge-checks PR |
| Релизы и теги | собрано |  |
| Дерево файлов | собрано |  |
| Ключевые файлы | собрано | git |
| История git | собрано |  |
| Содержимое кода | собрано | просканировано 355 файлов |
| AppSec SourceCraft | нет доступа | нет прав SourceCraft на просмотр AppSec этого репозитория |

## Динамика

| Дата | Score | Место в рейтинге |
|---|---|---|
| 29.09.2026 | 40.3 | — |
| 30.09.2026 | 40.3 | 872 |
| 01.10.2026 | 40.3 | 2225 |

---

Отчёт сформирован сервисом SourceCraft Repo Health 01.10.2026 02:37 UTC.
Описание методики: `docs/methodology.md`.
