Files
iistwin/SESSION_NOTES.md
Ильяс Султанов 1f5ecb6da4 fix(number-fields): избегаем потери точности длинных чисел
- number-поля теперь рендерятся как text + inputMode=numeric,
  чтобы браузер не округлял значения через input type=number
- пробелы при вставке в number-поля удаляются
- бэкенд нормализует значения number-полей в строку перед сохранением
- добавлен хелпер normalizeFieldValueForStorage

Closes: искажение расчётного счёта и других длинных числовых полей
2026-07-07 21:03:40 +03:00

71 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Заметки по сессии — 15.05.2026
## 1. Geo-поле (Адрес с координатами)
- **Статус:** ✅ Реализовано и задеплоено
- **Компонент:** `client/src/components/GeoField.tsx`
- **API:** `/api/dadata/suggest/address`, `/api/dadata/geolocate`
- **Формат данных:** `{ address: string, lat: number | string, lng: number | string }`
- **Особенности:** совмещённое поле координат ("55.707339, 52.315169"), подсказки DaData, обратное геокодирование
## 2. Исправление ошибки создания задач (bad_request)
- **Причина:** `drizzle-zod@0.7.0` создаёт `strict()` схемы. `insertTaskSchema` не ожидал `customFields`, и zod отклонял запрос.
- **Фикс:** добавлено `customFields: z.record(z.any()).optional()` в `shared/schema.ts`
- **Файл:** `shared/schema.ts`, `insertTaskSchema`
## 3. UI поля "Связь с формой" (task)
- **Проблема:** непонятные подписи "Родительская/дочерняя задача"
- **Решение:** переименовано в "Роль связанной задачи" + добавлены поясняющие описания под каждым вариантом
- **Файл:** `client/src/pages/FormEditor.tsx`
## 4. Очистка Docker
- **Освобождено:** ~4 GB
- **До:** 49 GB, 42 GB использовано (86%)
- **После:** 49 GB, 24 GB использовано (50%)
- **Удалено:** dangling образы iistwin (crm-app-builder, crm-app старые), postgres:16-alpine, build cache
## 5. Удаление заглушек из блока "Финансы"
- **Удалены файлы:**
- `client/src/pages/finance/profitability.tsx`
- `client/src/pages/finance/debt.tsx`
- `client/src/pages/finance/calculations.tsx`
- `client/src/pages/finance/planning.tsx`
- `client/src/pages/finance/audit.tsx`
- `client/src/pages/finance/heatmap.tsx`
- **Убраны:** импорты из `App.tsx`, роуты, экспорты из `index.ts`
- **FinanceSidebar:** оставлены только реальные страницы (Дашборд, Доходы, Расходы, Зарплата, Настройки)
- **FinanceNav:** убраны дубли (Доходы, Расходы, Зарплата, Настройки), оставлены Обзор + Категории доходов/расходов
## 6. Настройка SSH для git на сервере
- **Сгенерирован ключ:** `/root/.ssh/id_ed25519` (ed25519)
- **Добавлен в GitHub:** Settings → SSH keys
- **Git remote:** `git@github.com:iisultanov/iistwin.git`
- **Результат:** `git pull` работает автоматически без пароля
## Кастомизации сервера (НЕ коммитить в GitHub)
| Файл | Изменения |
|------|-----------|
| `docker-compose.yml` | Traefik-метки, `APP_HTTPS_PROXY=true`, сеть `n8n_proxy` |
| `server/index.ts` | `contentSecurityPolicy: false`, `hsts: false`, conditional HSTS |
| `docker-entrypoint.sh` | `echo "y" \| npx drizzle-kit push` + `CREATE EXTENSION vector` |
| `.env` | Секреты, `ALLOW_PRIVATE_RAG_URLS=true`, `API_KEY_HMAC_SECRET` |
## Команды деплоя
```bash
ssh root@82.202.130.22
cd /opt/crm
git pull origin main
docker compose up -d --build
```
## Проверка статуса
```bash
curl -s https://iistwin.ru/api/health
```
## Доступы
- **SSH:** `root@82.202.130.22` (ключ: `C:\Users\User\Yandex.Disk\1kimi\срм\.ssh_id_ed25519_crm`)
- **iistwin:** https://iistwin.ru
- **GitHub:** https://github.com/iisultanov/iistwin
- **MinIO:** http://82.202.130.22:9001