ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAG
1
Чек-лист по проекту русское /англ. наименование проекта
2
3
Заказчик: Добавьте нужную информацию
4
Устав: Добавьте нужную информацию
5
Тестовая среда: Добавьте нужную информацию
6
Репозиторий: Добавьте нужную информацию
7
Релиз:Добавьте нужную информацию
8
Менеджер проекта:ФИО
9
Наименование задачи в github:
Ссылка на задачуИсполнитель ФИО
10
Чек-лист ПО Наименование проекта на англ.яз. 1 этап Добавьте нужную информацию Добавьте нужную информацию
11
Чек-лист ПО Наименование проекта на англ.яз. 2 этап Добавьте нужную информацию Добавьте нужную информацию
12
Чек-лист ПО Наименование проекта на англ.яз. 3 этапДобавьте нужную информацию Добавьте нужную информацию
13
14
15
N п/пНаименованиеЭтапыСтатусРешениеОписаниеМетодика проверки/приёмкиКомментарий БыстроБанкКомментарий ЯКОМПАНИЯ
16
Ядро
17
IIIIII
18
1Архитектура
19
1.1Карта взаимосвязей приложений+ToDoОтражаем все связи приложения с другими приложениями, сервисами (внешними и внутренними)1. Файл схемы (с исходником) в репозитории проекта
2. Проект, подгружаемый через iframe, отражаем
3. Полные имена до доменных имен сайтов (например: avito.ru)
20
1.2Карта серверовToDoПри распределенной архитектуре, когда проекты запускаются на разных технологических стеках.
21
1.3Используемые технологии (версии)+ToDoПример:
Используемая версия NodeJS: v14.15.1 (ведутся работы по переходу на v16.17.1)
22
23
2База данных
24
2.1Сервер базы данных и версия+ToDoPostgreSQLMySQL/PostgreSQL/None1. Вопрос-ответ: какую СУБД использует проект и какой версии
25
2.2Реестр баз данныхToDo
Стандарт: 1 приложение = 1 база.
Расширенная: основная база и историческая база (при необходимости).
1. Вопрос-опрос: на который в большинстве будет ответ - проект использует только 1 базу
26
2.3Описание структуры+ToDoДолжно быть: в схеме модели, в исходном коде, в метаданных базы данных.I этап - наполнение файла schema.prisma
II этап - наполнение описанием в бд

Правила:
1. "// Комментарий" над таблицей/полем, с заглавной буквы
2. Правильные типы полей
3. Правильные имена полей
4. Форматирование схемы: " createdAt DateTime @default(now())"
На данный момент Prisma не поддерживает автоматическую генерацию комменариев в БД из schema.prisma есть issue на оф ресурсе, но пока тишина https://github.com/prisma/prisma/issues/8703, на данный момент можно добавлять комментарии только через миграции. Решено пока использовать комментарии только в shema.prisma. (Есть вариант написать пакет который анализировал бы схему находил там изменения комментариев и формировал sql код для миграции)
пример обновления sql:
// Обновление комментария к таблице
ALTER TABLE Body COMMENT='Таблица кузовов авто';

// Обновление комментария у поля
ALTER TABLE Body
CHANGE COLUMN id id INT NOT NULL AUTO_INCREMENT COMMENT 'Идентификатор';

Задачи по исправлению именования и типов полей реализуем по согласованию с заказчиком
27
28
3Сторонние ресурсы
29
3.1Карта (шлюзы)ToDo(пока все делаем согласно пункта 1.1)
30
3.2Описание api внешних сервисовToDoС примерами входных/выходных данных (схемы валидации).1. Ссылки на документацию сторонних сервисов
2. Схемы сторонних сервисов
31
32
4Стандарт разработки
33
4.1Структура приложения
НЕ СОГЛАСОВНО
+ToDoПридерживаемая принципа единой платформы приложений (проекты создаются на базе шаблона проекта github.com/ilb )1. Актуальный шаблон тестового проекта
2. Расположение файла crontab
3. Расположение файла web.xml
4. Расположение каталога /stubs/
5. Расположение каталога с документацией
6. Команды для сборки и запуска проекта
7. Команды для запуска тестов
34
4.2Наименование переменных (ресурсов, групп ldap)+В работеЧерез web.xml v3.1 (env-entry, resource-env-ref)
Ссылка на web.xml

см документацию
1. Файл web.xml оформленный по правилам Банка
2. Формирование файла
35
4.3Коды ответов ошибок+ToDo45* - ошибки клиента (4** + 50 к стандартным HTTP-кодам)
450 - пользовательские (на которые пользователь может повлиять)
453 - доступ запрещен
454 - данных не существует
550 - ошибки сервера (внутренняя ошибка приложения)

см документацию
1. Проверка apache файла access.log
36
4.4Форматирование исходного кода+ToDoВключая пустую строку в конце файлов1. xml - 4 пробела
2. js - 2 пробела
3. отсуствие таб
4. пробел в конце файла
37
38
5Разработка
39
5.1Инструменты разработки (IDE)+ToDo
40
5.3Расположение исходников+ToDoСсылки на репозитории: https://github.com/ilb/, https://git.ilb.ru/
41
5.4Расположение сборщика проектов+ToDoВ Банке используется jenkins (CI/CD)1. Проверка наличия сборки проекта
2. Проверка правильности этипов сборки
3. Проверка сборки составных компонентов проекта
42
5.6Корректность версий проекта/компонентов+ToDoВерсии начинаем с 1.*.*1. Контроль package.json
2. Контроль package-lock.json
43
5.7Карта точек входа (swagger, openapi)+ToDoНа проде данный ресурс должен быть заблокирован1. Наличие swagger.json/openapi.json
44
5.8Наличие главной страницы+ToDoАдрес: /Адрес: /
Response code: 200
45
5.9Наличие heartbeat+ToDoАдрес: /heartbeatАдрес: /heartbeat
Response code: 200
Response text: OK
Content Type: text/plain
46
5.10Используемые Банковские/единые компонентыToDoСписок компонентов @ilb/
47
5.11Поддержка X-FORWARD-SECRET+ToDocurl -vvv http://localhost:3000/
curl -vv http://localhost:3000/bailverificationv2
curl -vvv http://localhost:3000/bailverificationv2/heartbeat
curl -vvv http://localhost:3000/bailverificationv2/* (любой путь)

Response code: 453 || 403
Response text: Forbidden (обсуждаемо)
48
5.12Наличие заглушек+ToDoсм документацию1. Файлы в /var/apps/<apps>/stub/
2. Включение заглушек через context.xml
49
5.13Подключен линтер исходного кода (ESLint, ...)+ToDo
50
5.14Передача времени с часовым поясом+ToDoПример: 2023-12-31T23:59:59[.999]+04001. Проверка json файлов api проекта
51
5.15Отсутствие недопустимых вещей (гвоздей) в исходном коде+ToDoВключая: url адреса, логины, секреты, ...1. Поиск по регулярному выражению - [a-z][а-я]|[а-я][a-z]
2. Поиск http: или https:
3. Поиск секретов в исходниках
4. Поиск условий на "'production" и "devel"
52
5.16Поддержка браузера SeaMonkeyToDoТекущая версия SeaMonkey в Банке 2.53.14
(в каких-то проектах допустимо не обеспечивать)
53
5.17Поддержка прокси-сервера+ToDoАктуально для проектов шлюзов, которые получают данные из внешних проектов (например: avito.ru)1. Наличие и поддержка ресурса ".internet.proxy.https_apps" в web.xml
54
55
6Безопасность
56
6.1LDAP авторизация+ToDo1. Получение данных о текущем пользователе через ldap/posix
57
6.2LDAP ресурсы+ToDoРесурсы до проектов прописываются в web.xml1. Получение путей до ресурсов проектов (своих) из ldap/posix
58
6.3LDAP группы/роли+ToDoПроверка прав доступа к страницам проекта1. Проверка прав доступа к страницам проекта с помощью ldap/posix
59
6.4Переменные секреты заканчиваются на _PASSWORD+ToDo1. Проверка web.xml
2. Проверка логов на логирование паролей
3. Проверка context.xml
60
6.5Отсутствие уязвимостейToDo
61
6.6Отсутствие утечек персональных данных+ToDoРасположение: репозиторий, логи, письма, сообщения1. Поиск персональных данных в исходниках
2. Поиск персональных данных в базе данных
62
6.7Способ авторизации+ToDoБез авторизации, ldap-авторизация, двух-факторная авторизация, и т.д.
63
6.8Закрываемые пути приложения+ToDoНапример закрываются пути группами ldap, либо доступны только в devel среде:
/admin/
/heartbeat
/swagger.json (/openapi.yaml, ...)
/api (?)
64
6.9Корректность проверки групп по url'ам приложенияToDo1. Проверка, что адреса закрыты группами согласно ТЗ (включая пути внутри /api/*)
65
6.10Обязательная авторизация между фронтом и бекомToDo
66
67
7Документация
68
7.1Наличие описания проекта+ToDoКраткое описание проекта в About в репозитории
69
7.2Наличие технического задания+ToDo
70
7.3Документация (Javadoc, PHPDoc, JSDoc и т.д.)ToDo
71
7.4Клиентская документация (+ скриншоты)ToDo
72
7.5Административная документация+ToDoТребования к железу, установка, настройка, обновление, поддержка (команды).1. Файл README.md (пример bail..v2) [черновик, в будушем будет дополнен]
73
7.6Реестр печатных форм (+ примеры)ToDo
74
7.7ТерминыToDo
75
76
8Поддержка
77
8.1Время проведение технических работ (приложения, базы данных)ToDo
78
8.2Каналы получения ошибок по работе проектов (email, sms, боты и т.д.)ToDo
79
8.4Расписание обновления ключей, сертификатов, секретов, паролей, токенов и т.д.ToDo
80
8.5Расписание и описания роботов в проектеToDo
81
8.6Отправка ошибок на почту (обработчик ошибок)+ToDoАдреса электронных ящиков задаются в processes.json, через SERVER_ADMIN
82
83
9Тестирование
84
9.1Инструменты тестирования (скрипты, приложения)ToDo
85
9.2Тестовый контур (url, права)ToDoАдрес тестового контура (сервера ЯКОМПАНИЯ не учитываются)
86
9.3Наличие unit-тестов (количество всего/успешных/провальных)ToDo
87
9.4Проведение ручного тестированияToDo
88
9.5Интеграция тестов с jenkins+ToDoСогласование. Ждем от Максима xml для Виталия. И пример от Виталия
89
90
10Логирование
91
10.1Хранение логов+ToDoЛоги хранятся (один из вариантов, взависимости от стека):
/var/log/pm2.*/ - путь задается в processes.json
/var/log/webapp/<app>.log - путь задается в web.xml
Согласование. ЖДем Настройки Максима
92
10.2Формат логированияToDoКаждая строка (блок) лога должна быть в правильном формате для дальнейшего корректного разбора и анализа
93
10.3Отсутствие секретов в логах+ToDoДолжны быть скрыты
94
10.4Отсутствие персональных данных в логах+ToDoДолжны быть замаскированы
95
10.5Отсутствие любого удаленного логирования+ToDoТайная отправка логов на сторонние ресурсы (e-mail, и т.д.)
96
97
11АудитДаёт оценку Банк
98
11.1Контроль качества исходного кода+ToDo
99
11.2Контроль проектирования базы данных+ToDo
100
11.3Контроль хранения файлового хранилища+ToDo/var/apps/<app>/