docs: expand lint scope batch46 (2 files)
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
## 2. Архітектура проєкту
|
## 2. Архітектура проєкту
|
||||||
|
|
||||||
```
|
```text
|
||||||
src/
|
src/
|
||||||
api/ // Typed API clients
|
api/ // Typed API clients
|
||||||
components/ // UI components (buttons, inputs, modals)
|
components/ // UI components (buttons, inputs, modals)
|
||||||
@@ -34,7 +34,7 @@ routes/ // Route definitions
|
|||||||
store/ // Zustand stores (optional)
|
store/ // Zustand stores (optional)
|
||||||
styles/ // Global CSS/tokens
|
styles/ // Global CSS/tokens
|
||||||
utils/ // Formatting, validation
|
utils/ // Formatting, validation
|
||||||
```
|
```text
|
||||||
|
|
||||||
- `features/*` містять логіку конкретних модулів.
|
- `features/*` містять логіку конкретних модулів.
|
||||||
- `components/*` — лише dumb UI-компоненти (без бізнес-логіки).
|
- `components/*` — лише dumb UI-компоненти (без бізнес-логіки).
|
||||||
@@ -51,18 +51,18 @@ utils/ // Formatting, validation
|
|||||||
"strict": true
|
"strict": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```text
|
||||||
|
|
||||||
### 3.2. Заборонено
|
### 3.2. Заборонено
|
||||||
|
|
||||||
* `any`
|
- `any`
|
||||||
* `!` non-null assertion (за винятком рідкісних випадків)
|
- `!` non-null assertion (за винятком рідкісних випадків)
|
||||||
* глобальний mutable state
|
- глобальний mutable state
|
||||||
|
|
||||||
### 3.3. API-типи
|
### 3.3. API-типи
|
||||||
|
|
||||||
* Генеруємо типи з API Snapshot / OpenAPI.
|
- Генеруємо типи з API Snapshot / OpenAPI.
|
||||||
* Типи для відповідей зберігаються в `src/api/types.ts`.
|
- Типи для відповідей зберігаються в `src/api/types.ts`.
|
||||||
|
|
||||||
## 4. React Query (network layer)
|
## 4. React Query (network layer)
|
||||||
|
|
||||||
@@ -87,31 +87,31 @@ export async function api<T>(path: string, options?: RequestInit): Promise<T> {
|
|||||||
|
|
||||||
return res.json();
|
return res.json();
|
||||||
}
|
}
|
||||||
```
|
```text
|
||||||
|
|
||||||
### 4.2. Query Keys
|
### 4.2. Query Keys
|
||||||
|
|
||||||
```
|
```text
|
||||||
["teams"]
|
["teams"]
|
||||||
["teams", teamId]
|
["teams", teamId]
|
||||||
["channels", teamId]
|
["channels", teamId]
|
||||||
["messages", channelId]
|
["messages", channelId]
|
||||||
["followups", teamId]
|
["followups", teamId]
|
||||||
["projects", teamId]
|
["projects", teamId]
|
||||||
```
|
```text
|
||||||
|
|
||||||
## 5. Стандарти компонентів
|
## 5. Стандарти компонентів
|
||||||
|
|
||||||
### 5.1. Іменування
|
### 5.1. Іменування
|
||||||
|
|
||||||
* Компоненти: `PascalCase`
|
- Компоненти: `PascalCase`
|
||||||
* Хуки: `useCamelCase`
|
- Хуки: `useCamelCase`
|
||||||
* Файли: `camel-case.tsx`
|
- Файли: `camel-case.tsx`
|
||||||
* Папки: `kebab-case`
|
- Папки: `kebab-case`
|
||||||
|
|
||||||
### 5.2. Компонент повинен мати:
|
### 5.2. Компонент повинен мати
|
||||||
|
|
||||||
* Чіткий props-інтерфейс:
|
- Чіткий props-інтерфейс:
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
interface MyCompProps {
|
interface MyCompProps {
|
||||||
@@ -119,8 +119,8 @@ export async function api<T>(path: string, options?: RequestInit): Promise<T> {
|
|||||||
onClick: () => void;
|
onClick: () => void;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
* Внутрішній стан не змішується з зовнішнім API-станом.
|
- Внутрішній стан не змішується з зовнішнім API-станом.
|
||||||
* Міжкомпонентна логіка виноситься в хуки (наприклад: `useMessages(channelId)`).
|
- Міжкомпонентна логіка виноситься в хуки (наприклад: `useMessages(channelId)`).
|
||||||
|
|
||||||
## 6. Обробка помилок
|
## 6. Обробка помилок
|
||||||
|
|
||||||
@@ -143,20 +143,20 @@ POST — без retry.
|
|||||||
|
|
||||||
Всі тексти повинні бути в словнику:
|
Всі тексти повинні бути в словнику:
|
||||||
|
|
||||||
```
|
```text
|
||||||
src/i18n/uk.json
|
src/i18n/uk.json
|
||||||
src/i18n/en.json
|
src/i18n/en.json
|
||||||
```
|
```text
|
||||||
|
|
||||||
Формат ключів:
|
Формат ключів:
|
||||||
|
|
||||||
```
|
```text
|
||||||
onboarding.welcome_title
|
onboarding.welcome_title
|
||||||
onboarding.next
|
onboarding.next
|
||||||
chat.send
|
chat.send
|
||||||
chat.input_placeholder
|
chat.input_placeholder
|
||||||
followup.create
|
followup.create
|
||||||
```
|
```text
|
||||||
|
|
||||||
Форсувати одразу правильну структуру.
|
Форсувати одразу правильну структуру.
|
||||||
|
|
||||||
@@ -164,18 +164,18 @@ followup.create
|
|||||||
|
|
||||||
### 8.1. Кольори
|
### 8.1. Кольори
|
||||||
|
|
||||||
```
|
```text
|
||||||
--primary: #3F51F5;
|
--primary: #3F51F5;
|
||||||
--success: #43A047;
|
--success: #43A047;
|
||||||
--error: #E53935;
|
--error: #E53935;
|
||||||
--gray-100: #F8F9FA;
|
--gray-100: #F8F9FA;
|
||||||
--gray-200: #ECEFF1;
|
--gray-200: #ECEFF1;
|
||||||
--gray-800: #263238;
|
--gray-800: #263238;
|
||||||
```
|
```text
|
||||||
|
|
||||||
### 8.2. Типографіка
|
### 8.2. Типографіка
|
||||||
|
|
||||||
* System font stack:
|
- System font stack:
|
||||||
`"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto`
|
`"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto`
|
||||||
|
|
||||||
### 8.3. Контрасти
|
### 8.3. Контрасти
|
||||||
@@ -184,12 +184,12 @@ followup.create
|
|||||||
|
|
||||||
## 9. Робота з WebSockets
|
## 9. Робота з WebSockets
|
||||||
|
|
||||||
* Використовуємо один хук: `useChannelStream(channelId)`.
|
- Використовуємо один хук: `useChannelStream(channelId)`.
|
||||||
* WS підключається коли відкрито чат.
|
- WS підключається коли відкрито чат.
|
||||||
* Події:
|
- Події:
|
||||||
|
|
||||||
* `message.created`
|
- `message.created`
|
||||||
* `message.updated`
|
- `message.updated`
|
||||||
|
|
||||||
Не зберігати WS-стан у глобальному store.
|
Не зберігати WS-стан у глобальному store.
|
||||||
|
|
||||||
@@ -197,11 +197,11 @@ followup.create
|
|||||||
|
|
||||||
Що треба **вимкнути** у коді, щоб не перевантажити ранніх користувачів:
|
Що треба **вимкнути** у коді, щоб не перевантажити ранніх користувачів:
|
||||||
|
|
||||||
* Без drag'n'drop для файлів.
|
- Без drag'n'drop для файлів.
|
||||||
* Без реакцій (emoji).
|
- Без реакцій (emoji).
|
||||||
* Без WYSIWYG редактора.
|
- Без WYSIWYG редактора.
|
||||||
* Без Co-Memory (файли/документи), лише stub.
|
- Без Co-Memory (файли/документи), лише stub.
|
||||||
* Без granular RBAC.
|
- Без granular RBAC.
|
||||||
|
|
||||||
## 11. Патерни, які Cursor повинен дотримуватися
|
## 11. Патерни, які Cursor повинен дотримуватися
|
||||||
|
|
||||||
@@ -213,7 +213,7 @@ followup.create
|
|||||||
|
|
||||||
## 12. Приклад робочого промта для Cursor
|
## 12. Приклад робочого промта для Cursor
|
||||||
|
|
||||||
```
|
```text
|
||||||
You are a senior React/TS engineer.
|
You are a senior React/TS engineer.
|
||||||
|
|
||||||
Implement Step 2 of the onboarding flow (/onboarding).
|
Implement Step 2 of the onboarding flow (/onboarding).
|
||||||
@@ -226,7 +226,7 @@ Specs:
|
|||||||
Please output:
|
Please output:
|
||||||
- list of files to modify
|
- list of files to modify
|
||||||
- code diff
|
- code diff
|
||||||
```
|
```text
|
||||||
|
|
||||||
## 13. Мета документа
|
## 13. Мета документа
|
||||||
|
|
||||||
@@ -234,8 +234,8 @@ Please output:
|
|||||||
|
|
||||||
Він гарантує:
|
Він гарантує:
|
||||||
|
|
||||||
* узгоджений стиль,
|
- узгоджений стиль,
|
||||||
* передбачуваний код,
|
- передбачуваний код,
|
||||||
* мінімум помилок,
|
- мінімум помилок,
|
||||||
* легку підтримку,
|
- легку підтримку,
|
||||||
* зрозумілість структури для нових девелоперів.
|
- зрозумілість структури для нових девелоперів.
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Notifications & Attention Agent (далі — Attention Agent) відповід
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 1. Призначення
|
## 1. Призначення
|
||||||
|
|
||||||
Attention Agent:
|
Attention Agent:
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ Attention Agent:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 2. Проблеми, які він вирішує
|
## 2. Проблеми, які він вирішує
|
||||||
|
|
||||||
- надлишок сповіщень,
|
- надлишок сповіщень,
|
||||||
- інформаційне перевантаження,
|
- інформаційне перевантаження,
|
||||||
@@ -37,7 +37,7 @@ Attention Agent:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 3. Види уваги
|
## 3. Види уваги
|
||||||
|
|
||||||
Attention Agent працює з трьома видами уваги:
|
Attention Agent працює з трьома видами уваги:
|
||||||
|
|
||||||
@@ -55,11 +55,11 @@ Attention Agent працює з трьома видами уваги:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 4. Модель даних (log of events)
|
## 4. Модель даних (log of events)
|
||||||
|
|
||||||
Attention Agent працює поверх подій (`events`):
|
Attention Agent працює поверх подій (`events`):
|
||||||
|
|
||||||
```
|
```text
|
||||||
event: {
|
event: {
|
||||||
id,
|
id,
|
||||||
team_id,
|
team_id,
|
||||||
@@ -68,13 +68,13 @@ source, // messenger, tasks, governance, agents...
|
|||||||
payload, // JSON
|
payload, // JSON
|
||||||
ts
|
ts
|
||||||
}
|
}
|
||||||
```
|
```text
|
||||||
|
|
||||||
Він визначає важливість і формує *streams of attention*.
|
Він визначає важливість і формує *streams of attention*.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 5. Потоки уваги (Attention Streams)
|
## 5. Потоки уваги (Attention Streams)
|
||||||
|
|
||||||
### 5.1. High-Attention Stream
|
### 5.1. High-Attention Stream
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ ts
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 6. Attention Agent — спроможності
|
## 6. Attention Agent — спроможності
|
||||||
|
|
||||||
## 6.1. Фільтрація шуму
|
## 6.1. Фільтрація шуму
|
||||||
|
|
||||||
@@ -151,7 +151,7 @@ ts
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 7. Інтеграція з агентами інших модулів
|
## 7. Інтеграція з агентами інших модулів
|
||||||
|
|
||||||
### Messenger Agent
|
### Messenger Agent
|
||||||
|
|
||||||
@@ -176,7 +176,7 @@ ts
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 8. Tools (для Runtime Core)
|
## 8. Tools (для Runtime Core)
|
||||||
|
|
||||||
### 8.1. classify_event
|
### 8.1. classify_event
|
||||||
|
|
||||||
@@ -204,7 +204,7 @@ ts
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 9. Інтеграція з Runtime Core (12)
|
## 9. Інтеграція з Runtime Core (12)
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
const attentionAgentConfig: AgentConfig = {
|
const attentionAgentConfig: AgentConfig = {
|
||||||
@@ -223,48 +223,48 @@ const attentionAgentConfig: AgentConfig = {
|
|||||||
"highlight_critical"
|
"highlight_critical"
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
```
|
```text
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 10. UI — візуалізація уваги
|
## 10. UI — візуалізація уваги
|
||||||
|
|
||||||
## 10.1. Панель уваги (Attention Panel)
|
## 10.1. Панель уваги (Attention Panel)
|
||||||
|
|
||||||
Правий сайдбар у будь-якому контексті:
|
Правий сайдбар у будь-якому контексті:
|
||||||
|
|
||||||
* топ важливих подій,
|
- топ важливих подій,
|
||||||
* пропущені сигнали,
|
- пропущені сигнали,
|
||||||
* критичні оновлення.
|
- критичні оновлення.
|
||||||
|
|
||||||
## 10.2. Центр уваги (Attention Hub)
|
## 10.2. Центр уваги (Attention Hub)
|
||||||
|
|
||||||
Окремий екран:
|
Окремий екран:
|
||||||
|
|
||||||
* `/t/:teamId/attention`
|
- `/t/:teamId/attention`
|
||||||
|
|
||||||
Тут користувач бачить:
|
Тут користувач бачить:
|
||||||
|
|
||||||
* "Важливе за сьогодні",
|
- "Важливе за сьогодні",
|
||||||
* "Критичне зараз",
|
- "Критичне зараз",
|
||||||
* "Рекомендоване до перегляду".
|
- "Рекомендоване до перегляду".
|
||||||
|
|
||||||
## 10.3. Дайджести
|
## 10.3. Дайджести
|
||||||
|
|
||||||
* кнопка "Огляд дня",
|
- кнопка "Огляд дня",
|
||||||
* кнопка "Огляд тижня".
|
- кнопка "Огляд тижня".
|
||||||
|
|
||||||
## 10.4. Налаштування уваги
|
## 10.4. Налаштування уваги
|
||||||
|
|
||||||
Користувач може обрати:
|
Користувач може обрати:
|
||||||
|
|
||||||
* рівень чутливості,
|
- рівень чутливості,
|
||||||
* типи подій,
|
- типи подій,
|
||||||
* тихі години.
|
- тихі години.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 11. API
|
## 11. API
|
||||||
|
|
||||||
### Події
|
### Події
|
||||||
|
|
||||||
@@ -279,9 +279,9 @@ const attentionAgentConfig: AgentConfig = {
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 12. Інструкції для Cursor
|
## 12. Інструкції для Cursor
|
||||||
|
|
||||||
```
|
```text
|
||||||
Implement the Notifications & Attention Agent using:
|
Implement the Notifications & Attention Agent using:
|
||||||
|
|
||||||
- 19_notifications_attention_agent.md
|
- 19_notifications_attention_agent.md
|
||||||
@@ -318,18 +318,17 @@ Output:
|
|||||||
- file list
|
- file list
|
||||||
- diff
|
- diff
|
||||||
- summary
|
- summary
|
||||||
```
|
```text
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 13. Результат
|
## 13. Результат
|
||||||
|
|
||||||
Після впровадження цього модуля:
|
Після впровадження цього модуля:
|
||||||
|
|
||||||
* спільнота перестає тонути в шумі,
|
- спільнота перестає тонути в шумі,
|
||||||
* виникає природна структура уваги,
|
- виникає природна структура уваги,
|
||||||
* критичні події не губляться,
|
- критичні події не губляться,
|
||||||
* люди й агенти діють у правильному ритмі,
|
- люди й агенти діють у правильному ритмі,
|
||||||
* інформаційне навантаження стає здоровим і екологічним.
|
- інформаційне навантаження стає здоровим і екологічним.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -121,3 +121,5 @@ docs/cursor/09_evolutionary_agent.md
|
|||||||
docs/cursor/03_api_core_snapshot.md
|
docs/cursor/03_api_core_snapshot.md
|
||||||
docs/cursor/10_agent_ui_system.md
|
docs/cursor/10_agent_ui_system.md
|
||||||
docs/cursor/16_followups_reminders_agent.md
|
docs/cursor/16_followups_reminders_agent.md
|
||||||
|
docs/cursor/05_coding_standards.md
|
||||||
|
docs/cursor/19_notifications_attention_agent.md
|
||||||
|
|||||||
Reference in New Issue
Block a user