- number-поля теперь рендерятся как text + inputMode=numeric, чтобы браузер не округлял значения через input type=number - пробелы при вставке в number-поля удаляются - бэкенд нормализует значения number-полей в строку перед сохранением - добавлен хелпер normalizeFieldValueForStorage Closes: искажение расчётного счёта и других длинных числовых полей
71 lines
3.8 KiB
Markdown
71 lines
3.8 KiB
Markdown
# Заметки по сессии — 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
|