fix(number-fields): избегаем потери точности длинных чисел
- number-поля теперь рендерятся как text + inputMode=numeric, чтобы браузер не округлял значения через input type=number - пробелы при вставке в number-поля удаляются - бэкенд нормализует значения number-полей в строку перед сохранением - добавлен хелпер normalizeFieldValueForStorage Closes: искажение расчётного счёта и других длинных числовых полей
This commit is contained in:
70
SESSION_NOTES.md
Normal file
70
SESSION_NOTES.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Заметки по сессии — 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
|
||||
Reference in New Issue
Block a user