— Очистка тестового мусора: дубликаты полей, пайплайнов, причин проигрыша — Порядковые номера сделок (#N) per-club с @@unique([clubId, number]) — DELETE endpoints для стадий (с переносом сделок) и пайплайнов — onDelete: Cascade→Restrict для стадий, SetNull для истории — PipelineManager: полный CRUD воронок и стадий с палитрой цветов — FieldManager: CRUD кастомных полей с типами и опциями — EditDealDialog: редактирование сделки (контакт, сумма, компания, ответственный) — Кастомные поля в форме создания и карточке сделки — Soft-delete сделок, выбор ответственного, расширенные фильтры — Поиск по номеру сделки (#42 / 42) — Исправлены pre-existing тесты: module.guard, themes, auth, reports Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
module.exports = {
|
|
root: true,
|
|
parser: '@typescript-eslint/parser',
|
|
plugins: ['@typescript-eslint'],
|
|
extends: [
|
|
'eslint:recommended',
|
|
'plugin:@typescript-eslint/recommended',
|
|
'plugin:@typescript-eslint/recommended-requiring-type-checking',
|
|
],
|
|
parserOptions: {
|
|
ecmaVersion: 2022,
|
|
sourceType: 'module',
|
|
project: true,
|
|
},
|
|
env: {
|
|
node: true,
|
|
es2022: true,
|
|
},
|
|
rules: {
|
|
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
|
'@typescript-eslint/explicit-function-return-type': 'off',
|
|
'@typescript-eslint/no-explicit-any': 'warn',
|
|
'@typescript-eslint/consistent-type-imports': 'error',
|
|
},
|
|
ignorePatterns: ['node_modules/', 'dist/', '.next/', '.turbo/', 'coverage/'],
|
|
overrides: [
|
|
{
|
|
files: [
|
|
'apps/api/src/modules/crm/**/*.ts',
|
|
'apps/web-platform-admin/src/**/*.tsx',
|
|
'apps/web-club-admin/src/**/*.tsx',
|
|
'apps/lp/src/**/*.tsx',
|
|
'e2e/**/*.ts',
|
|
'**/*.spec.ts',
|
|
'**/*.test.ts',
|
|
],
|
|
rules: {
|
|
'@typescript-eslint/no-unsafe-argument': 'off',
|
|
'@typescript-eslint/no-unsafe-assignment': 'off',
|
|
'@typescript-eslint/no-unsafe-member-access': 'off',
|
|
'@typescript-eslint/no-unsafe-return': 'off',
|
|
'@typescript-eslint/no-unsafe-call': 'off',
|
|
'@typescript-eslint/unbound-method': 'off',
|
|
'@typescript-eslint/no-misused-promises': 'off',
|
|
'@typescript-eslint/no-floating-promises': 'off',
|
|
'@typescript-eslint/require-await': 'off',
|
|
},
|
|
},
|
|
],
|
|
};
|