Skip to content

Commit 0f9ef1b

Browse files
committed
docs(comments): compress verbose JSDoc across 275 files
- Strip trivial @param/@returns from adapters, services, components - Compress 20-50 line class JSDocs to 1-2 line descriptions - Remove redundant lifecycle/Input/Output/method JSDoc blocks - Keep non-obvious WHY comments (DI tokens, race conditions, caching) - Update per-module docs to match current code state - Total: -5640 lines, 275 files
1 parent e935f90 commit 0f9ef1b

275 files changed

Lines changed: 357 additions & 5613 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/cross-cutting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class AnalyticsService {
5252

5353
## expand
5454

55-
`api/expand/expand.service.ts``providedIn: "root"`. Контейнер для всех "раскрыть/свернуть" сигналов в детальных страницах. Обёртка над `expandElement` хелпером (`@utils/expand-element`).
55+
`api/expand/expand.service.ts``@Injectable()` (**page-scoped**). Контейнер для всех "раскрыть/свернуть" сигналов в детальных страницах; провайдится в `providers: []` каждой detail-страницы (`profile/main`, `projects/info|team|vacancies`, `program/main`, `vacancies/detail`), чтобы состояние не утекало между навигациями. Обёртка над `expandElement` хелпером (`@utils/expand-element`).
5656

5757
**Сигналы** (все `signal<boolean>`):
5858

docs/modules/auth.md

Lines changed: 43 additions & 39 deletions
Large diffs are not rendered by default.

docs/modules/project.md

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,18 @@
4747
| `project-rate.ts`, `project-rating-criterion.ts`, `project-rating-criterion-output.ts`, `project-rating-criterion-type.ts` | (rating models) | Структуры для модуля оценки проектов экспертами. |
4848
| `project-subscriber.model.ts` | `ProjectSubscriber` | Подписчик на проект. |
4949
| `step.model.ts` | (steps for edit flow) | Шаги пошагового редактирования. |
50-
| `skill.model.ts`, `skills-group.model.ts`, `specialization.model.ts`, `specializations-group.model.ts` | (re-export wrappers) | Локальные wrapper'ы вокруг `domain/skills` и `domain/specializations` — атавизм. |
5150

5251
### Commands
5352

5453
```ts
5554
interface UpdateFormCommand {
5655
id: number;
57-
data: Partial<ProjectDto>;
56+
data: Partial<Project>;
5857
}
5958
```
6059

60+
> `Partial<Project>` (а не DTO) — порт говорит на языке домена; маппинг в `ProjectDto` живёт в `ProjectRepository.update()``ProjectHttpAdapter.putUpdate()`.
61+
6162
### Domain events
6263

6364
| Event | Payload |
@@ -144,18 +145,18 @@ project-subscription.providers.ts
144145

145146
`ProjectsEditInfoService` (root-facade координатор) + `ProjectsEditUIInfoService`. Каждый шаг имеет свой service:
146147

147-
| Step | Facade | Что |
148-
| ------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
149-
| Main | `ProjectFormService` (root) + `ProjectFormFactory` + `ProjectFormAutosaveService` | Корневая `FormGroup` + autosave (debounce + `update(id, partial)`). |
150-
| Contacts | `ProjectContactsService` | Шаг "контакты". |
151-
| Achievements | `ProjectAchievementsService` + `ProjectAchievementUIService` | FormArray. |
152-
| Goals | `ProjectGoalService` + `ProjectGoalsUIService` | FormArray + responsible-picker. |
153-
| Partner & Resources | `ProjectPartnerService` + `ProjectResourceService` | Раздельные FormArrays для партнёров и ресурсов. |
154-
| Vacancy | `ProjectVacancyService` + `ProjectVacancyUIService` | Управление вакансиями проекта (CRUD через `Vacancy` модуль). |
155-
| Team | `ProjectTeamService` + `ProjectTeamUIService` | Команда: invites + members. |
156-
| Additional | `ProjectAdditionalService` | Дополнительные поля партнёрской программы. |
157-
158-
> `ProjectFormAutosaveService` — отдельный сервис, который слушает `valueChanges` корневой формы через `debounceTime` и сам дёргает `update()`. Это предотвращает потерю данных, если пользователь закрыл вкладку посреди шага.
148+
| Step | Facade | Что |
149+
| ------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
150+
| Main | `ProjectFormService` (root) + `ProjectFormFactory` + `ProjectFormAutosaveService` | Корневая `FormGroup` + autosave cleanup для файловых полей (`presentationAddress` / `coverImageAddress`) с offline-очередью в `localStorage`. |
151+
| Contacts | `ProjectContactsService` | Шаг "контакты". |
152+
| Achievements | `ProjectAchievementsService` + `ProjectAchievementUIService` | FormArray. |
153+
| Goals | `ProjectGoalService` + `ProjectGoalsUIService` | FormArray + responsible-picker. |
154+
| Partner & Resources | `ProjectPartnerService` + `ProjectResourceService` | Раздельные FormArrays для партнёров и ресурсов. |
155+
| Vacancy | `ProjectVacancyService` + `ProjectVacancyUIService` | Управление вакансиями проекта (CRUD через `Vacancy` модуль). |
156+
| Team | `ProjectTeamService` + `ProjectTeamUIService` | Команда: invites + members. |
157+
| Additional | `ProjectAdditionalService` | Дополнительные поля партнёрской программы. |
158+
159+
> `ProjectFormAutosaveService` — отдельный сервис: `bindDraftCleanupAutosave(control, field, destroy$)` слушает `valueChanges` указанного поля, при очистке (`!value`) дёргает `UpdateFormUseCase` с `draft: true`. На `network`-ошибке кладёт патч в `localStorage`-очередь и проигрывает её на событие `window.online` (или сразу, если `navigator.onLine === true` при старте). Дедуп очереди по `(projectId, field)`.
159160
160161
### Cross-cutting (старые)
161162

docs/social-platform/architecture.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ export class EventBus {
347347
}
348348
```
349349

350-
Все события автоматически логируются на DEBUG: `[EventBus] <type>`.
350+
Чистый pub/sub-примитив без сайд-эффектов и логирования. (Логирование было удалено — трассировка делается внешними подписчиками при необходимости.)
351351

352352
Типичный потребитель — репозиторий, который слушает событие из соседнего модуля и инвалидирует свой `EntityCache<T>`. Например, `ProjectRepository` слушает `SendVacancyResponse`, `AcceptVacancyResponse` и `RejectVacancyResponse` от vacancy-модуля и сбрасывает кеш проекта.
353353

docs/social-platform/shared.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ export class EventBus {
117117
}
118118
```
119119

120-
В конструкторе подписывается на собственный поток и **логирует каждое событие** через `LoggerService.debug("[EventBus] <type>", event.payload)`.
120+
Чистый pub/sub-примитив домена — без сайд-эффектов (логирования, инфраструктуры). Если нужна трассировка событий, подпишись на `on(...)` из отдельного app-level сервиса.
121121

122122
Используется чтобы один модуль уведомил другой о событии без прямой зависимости. Например, `ProjectRepository` слушает события вакансий (`SendVacancyResponse`, `AcceptVacancyResponse`, `RejectVacancyResponse`) и инвалидирует кеш проекта.
123123

docs/social-platform/ui-widgets.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686

8787
### `ProjectNavigationComponent` (`app-project-navigation`)
8888

89-
Stepper для редактирования (профиля и проекта). Принимает массив `navItems: Navigation[]` (тип из `@domain/other/navigation.model.ts`) и эмитит `stepChange: EditStep` при клике. Готовые наборы шагов — в `core/consts/navigation/nav-{profile,project}-items.const.ts`.
89+
Stepper для редактирования (профиля и проекта). Принимает массив `navItems: Navigation[]` (тип из `@core/lib/models/navigation.model.ts`) и эмитит `stepChange: EditStep` при клике. Готовые наборы шагов — в `core/consts/navigation/nav-{profile,project}-items.const.ts`.
9090

9191
### `HeaderComponent` (`app-header`)
9292

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/** @format */
2+
3+
import { EditStep } from "./edit-step";
4+
5+
/** Элемент навигации шагов редактирования (sidebar / step-list). */
6+
export interface Navigation {
7+
step: EditStep;
8+
src: string;
9+
label: string;
10+
}

projects/social_platform/src/app/api/chat/chat-unread-state.service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
import { CheckUnreadsUseCase } from "./use-cases/check-unreads.use-case";
1515
import { Observable, finalize, shareReplay } from "rxjs";
1616

17+
/** Состояние «есть ли непрочитанные сообщения» (app-wide, кеширует Observable + AsyncState). */
1718
@Injectable({
1819
providedIn: "root",
1920
})

projects/social_platform/src/app/api/chat/facades/chat-direct-info.service.ts

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,6 @@ export class ChatDirectInfoService {
8686
this.profileInfoService.ensureProfileLoaded();
8787
}
8888

89-
/**
90-
* Инициализирует загрузку файлов чата
91-
* Для прямых чатов: загружает файлы из прямого чата
92-
* Для чатов проектов: загружает файлы из проекта
93-
*
94-
*/
9589
initializationChatFiles(): void {
9690
this.loadProjectFilesUseCase
9791
.execute(Number(this.route.parent?.snapshot.paramMap.get("projectId")))
@@ -112,18 +106,12 @@ export class ChatDirectInfoService {
112106
this.chatDirectUIInfoService.clearTypingTimeouts();
113107
}
114108

115-
/**
116-
* Получает ID чата в зависимости от типа
117-
*/
118109
private getChatId(): string {
119110
return this.chatType === "direct"
120111
? this.chat()?.id ?? ""
121112
: this.route.parent?.snapshot.paramMap.get("projectId") ?? "";
122113
}
123114

124-
/**
125-
* Загружает сообщения чата с сервера с поддержкой пагинации
126-
*/
127115
private fetchMessages(type: "direct" | "project"): Observable<ApiPagination<ChatMessage>> {
128116
return this.loadMessagesUseCase
129117
.execute(
@@ -191,9 +179,6 @@ export class ChatDirectInfoService {
191179
});
192180
}
193181

194-
/**
195-
* Обработчик запроса на загрузку дополнительных сообщений
196-
*/
197182
onFetchMessages(): void {
198183
if (
199184
(this.messages().length < this.chatDirectUIInfoService.messagesTotalCount() ||
@@ -209,9 +194,6 @@ export class ChatDirectInfoService {
209194
}
210195
}
211196

212-
/**
213-
* Обработчик отправки нового сообщения
214-
*/
215197
onSubmitMessage(message: any): void {
216198
this.sendMessageUseCase.execute({
217199
replyTo: message.replyTo,
@@ -245,9 +227,6 @@ export class ChatDirectInfoService {
245227
}
246228
}
247229

248-
/**
249-
* Обработчик редактирования сообщения
250-
*/
251230
onEditMessage(message: ChatMessage): void {
252231
this.editMessageUseCase.execute({
253232
text: message.text,
@@ -263,9 +242,6 @@ export class ChatDirectInfoService {
263242
);
264243
}
265244

266-
/**
267-
* Обработчик удаления сообщения
268-
*/
269245
onDeleteMessage(messageId: number): void {
270246
this.deleteMessageUseCase.execute({
271247
chatId: this.getChatId(),
@@ -274,21 +250,13 @@ export class ChatDirectInfoService {
274250
});
275251
}
276252

277-
/**
278-
* Обработчик события печатания
279-
* Использует сохранённый chatType
280-
*/
281253
onType(): void {
282254
this.startTypingUseCase.execute({
283255
chatType: this.chatType,
284256
chatId: this.getChatId(),
285257
});
286258
}
287259

288-
/**
289-
* Обработчик прочтения сообщения
290-
* Использует сохранённый chatType
291-
*/
292260
onReadMessage(messageId: number): void {
293261
this.readMessageUseCase.execute({
294262
chatType: this.chatType,

projects/social_platform/src/app/api/chat/facades/ui/chat-direct-ui-info.service.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,8 @@ export class ChatDirectUIInfoService {
3636

3737
readonly isAsideMobileShown = signal<boolean>(false);
3838

39-
/**
40-
* Количество сообщений, загружаемых за один запрос
41-
*/
4239
readonly messagesPerFetch = 20;
4340

44-
/**
45-
* Общее количество сообщений в чате (приходит с сервера)
46-
*/
4741
readonly messagesTotalCount = signal<number>(0);
4842

4943
readMessagesEvent(result: OnReadChatMessageDto): void {

0 commit comments

Comments
 (0)