diff --git a/.gitignore b/.gitignore index ee39a10..400c996 100644 --- a/.gitignore +++ b/.gitignore @@ -219,3 +219,6 @@ blog-content/ # Public docs (загружены в БД) public-docs/ + +# Техническая документация (внутренняя) +docs/back-docs/ diff --git a/README.en.md b/README.en.md deleted file mode 100644 index ada66c6..0000000 --- a/README.en.md +++ /dev/null @@ -1,56 +0,0 @@ -# 🚀 Digital Legal Entity (DLE) - Application Template - -**🌐 Language / Язык:** [🇷🇺 Русский](README.md) | [🇬🇧 English](README.en.md) - -## 📖 Description - -**Digital Legal Entity (DLE)** is a microservices IT infrastructure with a web application for on-premises deployment on company servers. It includes AI agent configuration tools and a smart contract system supporting legal entity credentials and regulatory identifiers for financial operations. Provides business process management and automation, replaces fragmented SaaS services with monthly subscriptions, and complies with regulatory requirements for data storage and processing. - -Complete Digital Legal Entity application template for deployment on your own infrastructure. - -## 📋 Requirements -- Docker and Docker Compose - -## 📚 Documentation -- [General materials and instructions](docs-en/README.md) | [Русский](docs/README.md) -- [Legal documents](legal-en/README.md) | [Русский](legal/README.md) -- [Commercial proposal for entrepreneurs](docs-en/commercial-proposal-entrepreneurs.md) | [Русский](docs/commercial-proposal-entrepreneurs.md) - -## 🚀 Quick Start - -### Automatic installation (recommended) - -**For Linux/macOS/WSL:** -```bash -curl -fsSL https://raw.githubusercontent.com/VC-HB3-Accelerator/DLE/main/setup.sh | bash -``` - -The script automatically downloads the latest artifacts from the release and deploys `docker-data`. - -### 📦 Releases and artifacts -- [Release v1.0.3](https://github.com/VC-HB3-Accelerator/DLE/releases/tag/v1.0.3) (Latest) — contains the complete application template with Docker images, volumes, and encryption key. Archive is split into parts (`dle-template.tar.gz.part-*`) for easy download. -- [Release v1.0.2](https://github.com/VC-HB3-Accelerator/DLE/releases/tag/v1.0.2) — previous version. -- [Release v1.0.1](https://github.com/VC-HB3-Accelerator/DLE/releases/tag/v1.0.1) — previous version. -- [Release v1.0.0](https://github.com/VC-HB3-Accelerator/DLE/releases/tag/v1.0.0) — previous version. - -### Running the application -```bash -docker-compose up -d -``` - -### Access to the application - -#### Production -- **Frontend**: http://localhost:9000 (HTTP) - -### Stopping -```bash -docker-compose down -``` - -### 📞 **Contacts:** -- **Email:** info@hb3-accelerator.com -- **Website:** https://hb3-accelerator.com -- **GitHub:** https://github.com/VC-HB3-Accelerator -- **Support:** https://hb3-accelerator.com/ - diff --git a/README.md b/README.md index 4ae3312..4230742 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## 📖 Описание -**Digital Legal Entity (DLE)** — микросервисная IT-инфраструктура с веб-приложением для локального развёртывания на серверах компании. Включает инструменты настройки ИИ-агентов и систему смарт-контрактов с поддержкой реквизитов юридических лиц и идентификаторов для финансовых операций, установленных регулятором. Обеспечивает управление и автоматизацию бизнес-процессов, позволяет отказаться от разрозненных SaaS-сервисов с ежемесячными подписками и соответствует требованиям регуляторов к хранению и обработке данных. +**Digital Legal Entity (DLE)** — микросервисная платформа с веб-приложением для локальной установки на серверах компании. Включает инструменты настройки ИИ-агентов и систему смарт-контрактов с поддержкой налоговых, бухгалтерских, банковских и иных идентификаторов, установленных регулятором. Обеспечивает управление и автоматизацию бизнес-процессов, позволяет отказаться от разрозненных SaaS-сервисов с ежемесячными подписками и соответствует требованиям регуляторов к хранению и обработке данных. Полный шаблон приложения Digital Legal Entity для развертывания на собственной инфраструктуре. diff --git a/docs-en/FAQ.md b/docs-en/FAQ.md deleted file mode 100644 index e47f866..0000000 --- a/docs-en/FAQ.md +++ /dev/null @@ -1,1214 +0,0 @@ -# FAQ - Frequently Asked Questions about Digital Legal Entity (DLE) - -## 📋 Table of Contents - -1. [General Questions](#general-questions) -2. [Licensing and Payment](#licensing-and-payment) -3. [Installation and Deployment](#installation-and-deployment) -4. [Blockchain and Smart Contracts](#blockchain-and-smart-contracts) -5. [Asset Tokenization](#asset-tokenization) -6. [Voting System](#voting-system) -7. [AI Assistant](#ai-assistant) -8. [Technical Support](#technical-support) -9. [Functionality](#functionality) -10. [Security](#security) -11. [Updates](#updates) -12. [Economic Impact](#economic-impact) - ---- - -## General Questions - -### What is Digital Legal Entity (DLE)? - -**Digital Legal Entity (DLE)** is a microservices IT infrastructure with a web application for on-premises deployment on company servers. - -**Includes:** -- AI agent configuration tools -- Smart contract system supporting: - - Legal entity credentials - - Regulatory identifiers for financial operations - -**Benefits:** -- Business process management and automation -- Replacement of fragmented SaaS services with monthly subscriptions -- Compliance with regulatory requirements for data storage and processing - -**Main components:** - -- **CRM and contact management** - centralized customer database with interaction history -- **AI assistant with vector search** - local AI for business process automation -- **Omnichannel communication system** - Telegram, Email, Web chat, SMS in a single interface -- **Blockchain integration** - multi-chain support (Ethereum, Polygon, BSC, Arbitrum, Optimism, Avalanche, Base) -- **Blockchain governance** - through smart contracts and token holder voting -- **Asset tokenization** - converting any assets into digital tokens -- **Groups and team spaces** - customizable spaces for projects with permission system - -### Who is DLE for? - -DLE is designed for **all types of organizations** that need transparent collective governance: - -- **Commercial organizations** (LLC, JSC, Sole Proprietorship, holdings) -- **Non-profit organizations** (NPOs, foundations, associations) -- **Government structures** (municipalities, agencies) -- **International organizations** (intergovernmental, global) -- **Investment funds** and **venture companies** -- **Startups** and **small businesses** -- **Cooperatives** and **associations** -- **Any other organizations** with collective governance needs - -### How is it different from SaaS solutions? - -| Parameter | DLE | Regular SaaS | -|-----------|-----|--------------| -| **Data ownership** | Full (on your infrastructure) | Data with provider | -| **Control** | 100% control | Limited | -| **Payment** | One-time (perpetual license) | Monthly subscription | -| **Customization** | Full | Limited | -| **Legal compliance** | For your region | Depends on provider | -| **AI without limits** | Free | $200+/month | -| **Blockchain** | Built-in | None or additional fee | -| **Updates** | Free for 5 years (for token holders) | Depends on plan | - -### What technologies are used? - -- **Frontend**: Vue.js 3 + Vite + Element Plus -- **Backend**: Node.js + Express -- **Database**: PostgreSQL + pgvector -- **AI**: Ollama (local LLM models) + FAISS Vector Search (RAG) -- **Blockchain**: Ethers.js v6, Hardhat, OpenZeppelin -- **Containerization**: Docker Compose -- **Package manager**: Yarn - ---- - -## Licensing and Payment - -### How much does DLE cost? - -**Price overview:** - -| License Type | Price | Management Tokens | Votes | -|--------------|-------|-------------------|-------| -| **Standard** | $1,000 USDT | 1 token | 1 vote | -| **Priority** | $10,000 USDT | 10 tokens | 10 votes | - -**⚠️ Important**: -- All prices are WITHOUT TAXES -- Payment and conversion fees are paid by the buyer -- Service terms are the same for both licenses - -### What is included in the license? - -✅ **All licenses include:** -- Lifetime access to the application -- All future updates free for 5 years (for token holders) -- **Free setup by contractors within 5 years** (personalization for your business type, integration with business processes, AI assistant configuration, blockchain accounting setup, feature customization if needed) -- Technical support through portal -- AI assistant 24/7 without limits -- Participation in voting for new features -- Online training sessions (group and individual) -- Full source code with documentation - -**The only difference** - the number of votes in the governance system. - -### Are there subscriptions or monthly payments? - -**No!** DLE uses a **perpetual license** model: -- Pay once -- Access forever -- All updates free for 5 years for license token holders (see [legal/service-terms.md](../legal-en/service-terms.md)) -- **Free setup by contractors within 5 years** after license purchase -- No hidden fees -- AI works without request limits - -### What license types are available? - -**Two license types** (difference only in number of votes): - -| License Type | Price | Tokens | Votes | Influence | -|--------------|-------|--------|-------|-----------| -| **Standard** | $1,000 USDT | 1 token | 1 vote | Basic | -| **Priority** | $10,000 USDT | 10 tokens | 10 votes | Enhanced | - -**Service terms are the same** for both licenses. - -### What are governance tokens? - -**Governance tokens** are ERC20 tokens on the blockchain that provide: -- **Voting rights** for product development (1 token = 1 vote) -- **Participation in voting** for new features -- **Influence on development priorities** -- **Access to governance**: https://hb3-accelerator.com/ - -### Can I use multiple types of activities? - -**No, one license = one type of activity**: -- Each license is tied to one type of business -- Different types of activities require separate licenses -- You can redefine the type of activity, but only one at a time - -### What is included in technical support? - -**All license holders receive**: -- 🌐 **Support portal**: https://hb3-accelerator.com/ -- 💬 **Support chat** 24/7 -- 🤖 **AI assistant** for consultations -- 🎓 **Online training sessions** (group and individual) -- 📚 **Library of recordings** of all sessions -- 📧 **Email support** -- ✅ **Free setup by contractors within 5 years** (personalization, integration, AI configuration, feature customization) - -### How does the voting system work? - -**Democratic product governance**: -1. **Proposals** - community proposes new features -2. **Voting** - token holders vote (1 token = 1 vote) -3. **Quorum** - decisions are made with 51%+ votes -4. **Implementation** - approved features go into development - -**Web application for voting**: https://hb3-accelerator.com/ - -### Is there a money-back guarantee? - -**Yes, 70% refund program** within 5 years, if: -- More than 51% negative votes accumulated -- Complaints concern lack of updates -- Voting conducted through blockchain -- Request submitted within 5 years of purchase - -### Are taxes included in the price? - -**NO! All prices are WITHOUT TAXES**: -- Buyer independently pays all taxes -- VAT - 15-25% depending on country -- Sales Tax - in USA and other countries -- Income Tax - depends on tax status -- Customs duties - when importing to certain countries - -### Who pays payment fees? - -**ALL FEES ARE PAID BY THE BUYER**: -- **Currency conversion**: 1-5% of amount -- **Bank transfers**: $10-50+ per transaction -- **Blockchain gas fees**: $1-50+ depending on network -- **Payment system fees**: 2-5% of amount - -**Example total costs**: -- USDT directly: $1,000 + $15-80 = $1,015-1,080 -- SWIFT transfer: $1,000 + $25-80 = $1,025-1,080 -- Card in EUR: €899 + €30-45 = €929-944 - -### How can I pay for the license? - -**Available payment methods**: -- 💵 **USDT** - directly to addresses of authorized partners -- 💳 **Local currency** - equivalent in buyer's country currency -- 🏦 **Bank transfer** - through authorized dealers -- 💳 **Credit cards** - through partner payment systems - -### Where can I buy a license? - -**Official channels**: -- 📧 **Directly from author**: info@hb3-accelerator.com -- 🌐 **Web application**: https://hb3-accelerator.com/ -- 🤝 **Authorized dealers** - companies with official permission - -## Installation and Deployment - -### What are the system requirements? - -**Minimum requirements**: -- **CPU**: 4 cores -- **RAM**: 12 GB (4 GB application + 6 GB AI + 2 GB Vector Search) -- **Storage**: 100 GB SSD -- **OS**: Ubuntu 20.04+, Debian 11+, CentOS 8+, any Linux with Docker - -**Recommended**: -- **CPU**: 8+ cores -- **RAM**: 32 GB+ -- **Storage**: 500 GB+ NVMe SSD -- **GPU**: NVIDIA (accelerates AI 5-10x) - -### How to deploy DLE? - -**Simple installation via Docker**: -1. Clone repository -2. Run `docker-compose up -d` -3. Open http://localhost:9000 -4. Connect wallet -5. Configure RPC providers -6. Deploy smart contracts - -### Can I deploy in the cloud? - -**Yes, all options are supported**: -- **Own server** - full control -- **Cloud platforms** - AWS, Google Cloud, Azure -- **Local infrastructure** - for regulatory compliance -- **Docker Compose** - deployment with one command - -### How to connect a crypto wallet? - -**Step-by-step instructions**: -1. Install browser wallet (MetaMask, WalletConnect or similar) -2. Create or import account with governance token -3. In web application click **"Connect Wallet"** -4. Select wallet type and confirm connection -5. After successful connection, you'll see account address in top corner - -### How to configure RPC providers? - -**Blockchain network configuration**: -1. Go to **Settings** → **Security** tab -2. Find **"RPC Providers"** section and click **"Add"** -3. Fill form for each network: - - **Network name** (Ethereum, Polygon, BSC) - - **RPC URL** (e.g.: `https://eth-mainnet.g.alchemy.com/v2/YOUR-API-KEY`) - - **Network ID** (Chain ID) -4. Click **"Save"** for each provider -5. System automatically checks connection correctness - -### How to deploy smart contracts? - -**Multi-chain deployment**: -1. Go to **Settings** → **Blockchain** tab -2. Fill form -3. Click **"Start Deployment"** -4. Wait for completion (30-120 seconds) -5. Copy deployed contract address -6. Configure authentication via smart contract - -### How to configure authentication via smart contract? - -**Access configuration**: -1. Go to **Settings** → **Authentication** tab -2. Paste smart contract address -3. Set thresholds: - - **Minimum tokens for editing** (e.g.: 100 tokens) - - **Minimum tokens for viewing** (e.g.: 1 token) - -### How to configure AI and database? - -**AI configuration**: -1. Go to **Settings** → **AI** tab -2. Open **"Database"** subsection -3. Replace default passwords -4. Click **"Generate new encryption key"** -5. **Save key in secure place** (needed for data recovery) - -### How to configure internet access? - -**Application publishing**: -1. Go to **Settings** → **Server** tab -2. Select **WEB SSH** or suitable service -3. Fill form for migration to VDS with: - - **Public IP address** - - **Domain name connection** -4. Click **"Publish"** -5. Wait for migration completion - -**ℹ️ Required**: Registered domain name and access to DNS settings - -### How to configure legal documents? - -**Filling legal information**: -1. Go to **CRM** → **Content** section -2. Open **"Company Legal Information"** form -3. Fill fields. Click **"Save"** - -**Working with templates**: -1. In **Content** section → **"Templates"** -2. Select necessary documents: - - Privacy Policy - - Terms of Service - - Personal Data Processing Consent - - Cookie Usage Policy -3. Click **"Preview"** to check -4. Select action: - - **"Publish for public use"** - - **"Publish for internal use"** - - **"Print"** (export to PDF) - -**⚠️ Recommendation**: Consult with lawyer before publishing documents - ---- - -## Functionality - -### What is the AI assistant in DLE? - -**AI Assistant** is a built-in intelligent assistant that uses: -- 🧠 **Ollama** - local open-source AI models (qwen2.5:7b) -- 🔍 **Vector search** - FAISS for semantic search -- 📚 **RAG** (Retrieval-Augmented Generation) - knowledge base search -- 💾 **Caching** - instant answers to frequent questions - -**Key advantages**: -1. **🏠 100% local** - all data on your server -2. **🔒 Full privacy** - nothing goes to cloud -3. **⚡ Lightning-fast responses** - caching and vector search -4. **💰 Zero API costs** - no payment for tokens -5. **📈 Learns from your data** - personalized answers -6. **🌍 Multilingual** - supports Russian, English and more -7. **🔄 24/7 availability** - works around the clock - -### What are the AI assistant capabilities? - -**15 key application areas**: - -1. **📞 Customer service and support** - automatic responses 24/7, sentiment analysis, escalation of complex questions -2. **📊 Analytics and business intelligence** - big data analysis, sales forecasting, customer segmentation -3. **💰 Financial planning and accounting** - automatic bookkeeping, cash flow forecasting, profitability analysis -4. **🎯 Marketing and sales** - content generation, message personalization, A/B testing, sales funnel management -5. **👥 HR and personnel management** - resume screening, chatbot interviews, training planning, performance analysis -6. **📋 Project and task management** - automatic project planning, progress tracking, process optimization -7. **🔍 Research and development** - market analysis, technology research, new product idea generation -8. **🛡️ Security and compliance** - security monitoring, threat detection, compliance analysis -9. **📈 Operational efficiency** - supply chain optimization, production planning, process automation -10. **🎓 Training and development** - personalized training programs, interactive course creation, knowledge assessment -11. **🌐 International operations** - automatic translation, cultural analysis, content adaptation -12. **🔮 Strategic planning** - macroeconomic trend analysis, scenario planning, investment evaluation -13. **📱 Mobile and digital solutions** - mobile app development, chatbot creation, voice assistants -14. **🏭 Industry solutions** - specialized solutions for healthcare, finance, retail, manufacturing -15. **🔄 Integration and automation** - API integrations, workflow automation, unified ecosystem creation - -**Economic impact**: $507,600-519,600/year with ROI 50,760-51,960% - -### How does the AI assistant work? - -**Philosophy**: AI doesn't replace people, but becomes their co-pilot, freeing 85% of time for strategy and creativity. - -**Work architecture**: -1. **User asks question** → "How to return product?" -2. **Question vectorization** → Ollama mxbai-embed-large:latest (Text → Vector [768 numbers]) -3. **Vector search (FAISS)** → Search similar questions in database (Top-3 results by semantics) -4. **Contextual search (RAG)** → Extract answers from knowledge base, filter by tags/products -5. **Answer generation (LLM)** → Ollama qwen2.5:7b (Context + Question → Answer) -6. **Caching** → Save to cache for 1 hour (next same question < 50ms) -7. **Answer to user** → "Product can be returned within..." - -**Technology stack**: -- **LLM model**: Ollama qwen2.5:7b (text generation, dialogue) -- **Embedding model**: mxbai-embed-large (text vectorization) -- **Vector DB**: FAISS (fast semantic search) -- **Main DB**: PostgreSQL (knowledge base storage) -- **Cache**: Node.js Map + TTL (accelerate repeated requests) -- **Queue**: AI Queue (priority task processing) - -### What are omnichannel communications? - -**Unified interface for all channels**: -- 💬 **Telegram bot** - integration via Bot API -- 📧 **Email** - SMTP/IMAP, Gmail, Outlook -- 🌐 **Web chat** - website widget -- 📱 **SMS** - integration via providers -- 📋 **Web forms** - form builder - -**Advantages**: -- One context for customer across all channels -- Automatic message routing -- AI auto-responses trained on your data -- Analytics by channel and response time - -### What is the electronic tables system? - -**Full-featured database** with graphical interface: -- ✅ **6 field types** (text, number, relation, lookup, etc.) -- ✅ **Relations between tables** (1:1, 1:N, N:N) -- ✅ **Lookup and data substitution** -- ✅ **Filtering and sorting** -- ✅ **Real-time updates** (WebSocket) -- ✅ **AI integration** (RAG for search) -- ✅ **Encryption** of all data (AES-256) - -### What are groups and spaces? - -**Team organization**: -- Create spaces for projects -- Invite participants -- Distribute roles and permissions (20+ types) -- Isolated data between groups -- Roles: Editor, ReadOnly, User - ---- - -## AI Assistant - -### What AI models are installed by default? - -**LLM models**: -- **qwen2.5:7b** (recommended) — for Russian language, 4.7 GB - -**Embedding models**: -- **mxbai-embed-large:latest** (recommended) — 670 MB - -### How to create a knowledge base for AI? - -**Creating FAQ table**: -1. Go to **Tables** → **"+ Create Table"** -2. Fill: - - **Name**: `FAQ - Frequently Asked Questions` - - **Description**: `Knowledge base for AI assistant on customer service` - -**Column setup** (required): -- **Question** (Text, purpose: "Question for AI") ⭐ -- **Answer** (Text, purpose: "AI Answer") ⭐ -- **Product** (Multiselect, product filter) -- **Tags** (Multiselect, user tags) -- **Priority** (Number, priority) - -**Activation for AI**: -1. In table settings enable **"Use as source for AI"** ✅ -2. Click **"Save"** - -### How to configure system prompt? - -**Basic prompt**: -``` -You are a professional customer support assistant. - -Rules: -1. Answer politely and professionally -2. Use information from knowledge base -3. If information is not available — suggest contacting operator -4. Answer briefly and to the point -5. Always end with question "How else can I help?" -``` - -**Advanced prompt** (with personalization): -``` -You are a professional customer support assistant for "Your Company Name". - -About company: -- We are engaged in [brief business description] -- Our values: quality, reliability, customer focus - -Communication style: -- Friendly but professional -- Address customer as "You" -- Use emojis moderately (1-2 per message) - -Response rules: -1. First search answer in knowledge base (RAG) -2. If found — answer based on found information -3. If not found — honestly say and offer operator help -4. Don't make up information about prices, terms, conditions -5. For complex questions offer to contact manager - -Always end with: "How else can I help? 😊" -``` - -### How to configure AI rules? - -**Creating rule set**: -1. Click **"Create"** next to "Rule Set" field -2. Fill: - - **Name**: `Hybrid mode (RAG + generation)` - - **Description**: `AI first searches knowledge base, if not found — generates answer` - -**Rules (JSON)**: -```json -{ - "checkUserTags": true, - "searchRagFirst": true, - "generateIfNoRag": true, - "temperature": 0.7, - "maxTokens": 500 -} -``` - -**Parameters**: -- `checkUserTags: true` — consider user tags in search -- `searchRagFirst: true` — first search knowledge base -- `generateIfNoRag: true` — generate answer if nothing found -- `temperature: 0.7` — balance between accuracy and creativity (0.0-1.0) -- `maxTokens: 500` — maximum answer length - -### How to configure RAG search? - -**Basic settings**: -- **Search method**: `Hybrid search` (recommended) -- **Maximum results**: `5` -- **Relevance threshold**: `0.1` (from 0.01 to 1.0) - -**Keyword extraction**: -- ✅ **Enable keyword extraction** -- **Minimum word length**: `3` -- **Maximum keywords**: `10` -- ✅ **Remove stop words** - -**Search weights (for hybrid)**: -- **Semantic search**: `70%` (accuracy) -- **Keyword search**: `30%` (speed) - -**Additional settings**: -- ✅ **Fuzzy search** (for typos) -- ✅ **Word stemming** (finds different word forms) -- ☐ **Synonym search** (currently disabled) - -### How to test AI assistant? - -**Built-in tester**: -1. In AI assistant settings find **"🧠 Test RAG functionality"** -2. Select table `FAQ - Frequently Asked Questions` -3. Enter test question: `How to pay for order?` -4. Click **"Test RAG"** -5. Check result: - - **Score -300 to 0** ✅ — excellent match - - **Score 0 to 300** ⚠️ — average match - - **Score >300** ❌ — match not found - -**Testing via Web Chat**: -1. Find **"💬 Chat with AI"** widget on main page -2. Enter question: `How much is delivery?` -3. Check AI response - -### How to integrate with Telegram and Email? - -**Telegram bot setup**: -1. Create bot via [@BotFather](https://t.me/botfather) in Telegram -2. Copy **Bot Token** -3. In DLE settings enter token and bot username -4. In AI assistant settings select this Telegram bot - -**Email integration setup**: -1. Go to **Settings** → **Integrations** → **Email** -2. Fill IMAP settings (for receiving emails) -3. Fill SMTP settings (for sending emails) -4. Click **"Test IMAP"** and **"Test SMTP"** to verify -5. In AI assistant settings select this Email - -## Economic Impact - -### How much can I save with DLE? - -**Comparison with SaaS over 5 years**: - -**Typical SaaS stack**: -- CRM (HubSpot): $200/month × 60 months = $12,000 -- Chatbot (Intercom): $150/month × 60 months = $9,000 -- Email (SendGrid): $100/month × 60 months = $6,000 -- AI (ChatGPT API): $200/month × 60 months = $12,000 -- **TOTAL**: $39,000 - -**DLE**: -- License (one-time): $1,000 -- Updates (5 years): $0 -- AI without limits: $0 -- **TOTAL**: $1,000 -- **SAVINGS**: $38,000 - -### What is the ROI from AI assistant? - -**Comparison with cloud solutions**: - -| Characteristic | DLE AI (Local) | ChatGPT API | Claude API | -|----------------|----------------|-------------|------------| -| **Cost** | $0 | ~$0.02/request | ~$0.03/request | -| **Privacy** | ✅ 100% | ❌ Data in OpenAI | ❌ Data in Anthropic | -| **Speed (cache)** | 50ms | 500-2000ms | 500-2000ms | -| **Offline work** | ✅ Yes | ❌ No | ❌ No | -| **Business customization** | ✅ Full | ⚠️ Limited | ⚠️ Limited | -| **API limits** | ❌ No | ✅ Yes | ✅ Yes | - -**Savings when using cloud APIs**: -- At 10,000 requests/month: ChatGPT $2,400/year, Claude $3,600/year, DLE $0/year -- At 50,000 requests/month: ChatGPT $12,000/year, Claude $18,000/year, DLE $0/year -- At 100,000 requests/month: ChatGPT $24,000/year, Claude $36,000/year, DLE $0/year - -**Total savings across all areas**: -- Customer service: $57,600 -- Supplier work + AI buyer: $64,800 -- Partner work: $43,200 -- Staff training: $30,000 -- Personnel management: $57,600 -- Reporting and analysis: $144,000 -- Content marketing: $86,400 -- API token savings: $24,000-36,000 -- **TOTAL**: $507,600-519,600/year - -**ROI**: 50,760-51,960% or 507-519x return - -### What are additional benefits from AI assistant? - -**Immeasurable advantages**: -- 📈 **Improved work quality** - AI works without fatigue and errors -- 😊 **Customer satisfaction +19%** - fast and accurate answers -- 👥 **Employee retention +15%** - less routine, more interesting tasks -- 🚀 **Decision speed +300%** - instant access to information -- 💡 **More time for strategy** - AI frees 85% of time from routine -- 🎯 **Less routine, more creativity** - focus on business development - -### How much savings on asset tokenization? - -**Traditional real estate transaction ($1M)**: -- Realtor commission: 3-5% = $30,000-50,000 -- Legal services: $5,000-10,000 -- Property registration: $2,000-5,000 -- Time: 2-6 months -- **TOTAL**: $37,000-65,000 - -**Tokenized transaction via DLE**: -- Gas fees: $50-200 -- Smart contract (one-time): $500 -- Time: 5-10 minutes -- **TOTAL**: $550-700 - -**Savings**: 99% of costs and 99% of time - ---- - -## Web Application Questions - -### How to access DLE web application? - -**Access requirements**: -- Having DLE governance tokens in your wallet -- Wallet connection (MetaMask, WalletConnect, etc.) -- Stable internet connection - -**Login process**: -1. Open web application: https://hb3-accelerator.com/ -2. Click "Connect Wallet" -3. Select your wallet (MetaMask, WalletConnect) -4. Confirm connection -5. System checks token balance in smart contract -6. If tokens present - access granted - -**Access levels**: -- **0 tokens**: No access (only "No access" page) -- **1+ tokens**: ReadOnly (view data) -- **100+ tokens**: Editor (editing, creation) -- **Any amount**: Voting (1 token = 1 vote) - -### What browsers does the web application support? - -**Recommended browsers**: -- ✅ Chrome 90+ (best compatibility) -- ✅ Firefox 88+ -- ✅ Safari 14+ -- ✅ Edge 90+ -- ✅ Brave (with Web3 support) - -**Requirements**: -- JavaScript enabled -- Web3 compatibility (for wallet connection) -- Modern web standards support - -### How does authentication work in the web application? - -**Sign-In with Ethereum (SIWE)**: -- Private key **never** leaves your wallet -- Each nonce is used **once** and expires in 5 minutes -- Signature cannot be forged without private key -- Full authentication security - -**Process**: -1. Generate one-time nonce -2. Save to DB with encryption -3. Sign message with your wallet -4. Verify signature on server -5. Create session on successful verification - -### What to do if the web application is unavailable? - -**Alternative management methods**: - -1. **Via blockchain explorers**: - - Etherscan (Ethereum): https://etherscan.io - - Polygonscan (Polygon): https://polygonscan.com - - BscScan (BSC): https://bscscan.com - - Arbiscan (Arbitrum): https://arbiscan.io - -2. **Functions via Etherscan**: - - Check token balance - - Create proposals - - Vote on proposals - - Execute approved proposals - -3. **Advantages**: - - Complete independence from web application - - Impossible to forge data - - Access 24/7 from anywhere in the world - -## Usage Terms Questions - -### What license types are available? - -**Only license type - Perpetual License**: -- ⏳ **Validity period**: Lifetime (no time limit) -- 🔄 **Updates**: FREE for all license holders -- 🚫 **Cancellation**: License cannot be cancelled by company -- ⚖️ **Service terms**: Same for all licenses - -**Options by number of tokens**: -- **Standard Support**: $1,000 USDT (1 token = 1 vote) -- **Priority Support**: $10,000 USDT (10 tokens = 10 votes) - -### What is included in the license? - -**All license holders receive**: -- ✅ All web application updates (free for 5 years for token holders) -- ✅ **Free setup by contractors within 5 years** (personalization, integration, AI configuration, feature customization) -- ✅ Access to documentation and knowledge base -- ✅ Technical support through application -- ✅ AI assistant 24/7 -- ✅ All integrations and deployment capabilities -- ✅ Participation in voting for new features -- ✅ Early access to beta features -- ✅ SLA 99% uptime guarantee -- ✅ Online training and implementation sessions - -### How does the voting system work? - -**Voting process**: -1. **Proposal creation**: Any token holder can create proposal -2. **Blockchain registration**: Voting created in smart contract -3. **Token holder voting**: Each token = 1 vote -4. **Implementation**: If 51%+ tokens vote - feature goes into development - -**Web application for voting**: https://hb3-accelerator.com/ -- Create proposals -- Vote for or against proposals -- View voting results -- Track development status - -### What usage restrictions are there? - -**✅ Allowed**: -- Use for managing own business -- Deploy on own infrastructure -- Use selected type of activity (1 type per license) -- Data backup -- Local configuration modification -- Vote for new feature development -- Transfer license to heirs - -**❌ Prohibited**: -- Resale or sublicensing -- Use more than one type of activity with one license -- Reverse engineering and source code modification -- Remove copyright and license notices -- Share between independent organizations -- Use for educational purposes without permission -- Deploy SaaS based on application - -### How does the 70% refund program work? - -**Refund conditions**: -You can request refund of **70% of license cost** within **5 years** from purchase, if: - -1. ✋ **Complaint threshold**: More than **51% negative votes** accumulated -2. 📋 **Reason**: Complaints concern **lack of update releases** -3. 🗳️ **Voting**: Complaints were **accepted through token holder voting mechanism on blockchain** -4. ⏱️ **Timeframe**: Request submitted within **5 years** from licensing - -**Refund process**: -1. Request submitted to hb3-accelerator.com with blockchain proof -2. Confirm conditions on smart contract (51%+ votes for refund) -3. Refund **70% of purchase amount** within 30 days - -### How to get technical support? - -**Unified support portal**: https://hb3-accelerator.com/ - -**Available channels**: -- 🌐 Support portal (all licenses) -- 💬 Chat with support team (all licenses) -- 🤖 AI assistant 24/7 (all licenses) -- 🎓 Online training sessions (all licenses) -- 📚 Library of recordings (all licenses) -- 📧 Email support (all licenses) -- ✅ Free setup by contractors within 5 years (all licenses) - -**SLA (first response time)**: -- 🔴 Critical: 4 hours -- 🟠 High: 8 hours -- 🟡 Medium: 24 hours -- 🟢 Low: 48 hours - -### How do application updates work? - -**Free updates for all license holders**: -- Bug fixes -- Performance improvements -- New features (approved by voting) -- Security updates - -**Frequency**: -- Security Patches: Immediately (when discovered) -- Regular Updates: Weekly (on Wednesdays) -- Major Features: Based on voting results - -**Download platform**: https://hb3-accelerator.com/ -- Download all released versions -- Detailed release notes -- Calendar of scheduled updates -- Automatic notifications about new versions - -### How does the web application security system work? - -**Multi-layer protection**: -- 🔐 **TLS 1.3** for all connections -- 🔐 **AES-256** for critical data in storage -- 🔐 **Rate limiting** and DDoS protection -- 🔐 **CSRF tokens** for all forms -- 🔐 **XSS protection** (DOMPurify) -- 🔐 **Helmet.js** for header protection - -**SIWE authentication**: -- Private key never leaves wallet -- Each nonce used once and expires in 5 minutes -- Signature cannot be forged without private key - -## Installation and Configuration Questions - -### What are the system requirements for installing DLE? - -**Minimum requirements**: -- **OS**: Linux, Windows, macOS -- **RAM**: 8 GB (16 GB recommended) -- **Disk**: 50 GB free space -- **Docker**: version 20.10+ -- **Docker Compose**: version 2.0+ - -**Recommended requirements**: -- **RAM**: 32 GB -- **Disk**: 100 GB SSD -- **CPU**: 8+ cores -- **Internet**: stable connection - -### How to install DLE? - -**Automatic installation (recommended)**: -```bash -curl -fsSL https://raw.githubusercontent.com/VC-HB3-Accelerator/DLE/main/setup-template.sh | bash -``` - -**Manual installation**: -1. Clone repository -2. Import Docker images -3. Create and import volumes -4. Start application - -**Application access**: -- Frontend: http://localhost:9000 (HTTP) or https://localhost:9443 (HTTPS) -- Backend API: http://localhost:9000/api - -### How to configure blockchain integration? - -**Requirements**: -- Cryptocurrency wallet (MetaMask, WalletConnect) -- RPC provider (Infura, Alchemy, or own node) -- USDT for smart contract deployment - -**Configuration process**: -1. Connect wallet -2. Configure RPC provider -3. Deploy DLE smart contract - -## Functionality Questions - -### What main features are available in DLE? - -**Blockchain features**: -- Create and manage smart contracts -- Token holder voting system -- Asset tokenization -- Multi-currency treasury -- Automatic payments - -**AI assistant**: -- Local AI without limits -- Knowledge base based on electronic tables -- Data analysis and forecasting -- Business process automation -- Omnichannel communications - -**Electronic tables**: -- Full-featured database -- Relations between tables (Relation) -- Automatic substitutions (Lookup) -- Real-time updates -- AI integration - -### How does the electronic tables system work? - -**Field types**: -- **Text** - text data -- **Number** - numeric values -- **Date** - dates and time -- **Boolean** - yes/no -- **Relation** - relations with other tables -- **Lookup** - automatic substitutions -- **File** - files and images - -**Functionality**: -- CRUD operations (create, read, update, delete) -- Filtering and sorting -- Search across all fields -- Export to various formats -- AI integration for analysis - -## Security Questions - -### How is data protected in DLE? - -**Encryption**: -- **TLS 1.3** for all connections -- **AES-256** for data in storage -- **Key management** under user control - -**Blockchain protection**: -- Tokens cannot be stolen (transfers blocked) -- All operations recorded on blockchain -- Impossible to forge history -- Independence from web application - -**Web application protection**: -- Rate limiting against DDoS -- CSRF and XSS protection -- Clean logs (sensitive data cleanup) -- Helmet.js for headers - -### What to do if hack is suspected? - -**Token protection**: -- DLE tokens blocked from transfers -- Only way to transfer - through voting -- Even if wallet hacked, tokens protected - -### How does the audit system work? - -**Blockchain transparency**: -- All actions recorded forever -- Impossible to hide or delete -- Public verification via Etherscan - -**Real-time monitoring**: -- Track all smart contract events -- Automatic alerts on suspicious activity -- Token holder notifications - ---- - -## Economics and ROI Questions - -### How much money will DLE save my business? - -**For business with $1M/year turnover**: -- **Bank fees**: savings $25,750/year (96%) -- **Corporate governance**: savings $42,000/year (78%) -- **Investment attraction**: savings $49,400 per deal (99%) -- **AI without limits**: savings $36,000/year (local vs cloud) -- **TOTAL**: $117,150/year + additional profit ~$1,000,000 - -**ROI**: 1,117% on DLE investment -**Payback**: < 1 month - -### What hidden costs does DLE have? - -**One-time costs**: -- License: $1,000-10,000 USDT -- Smart contract deployment: $100-500 (gas fees) -- Setup: $0 (free setup by contractors within 5 years included in license) - -**Monthly costs**: -- Hosting: $50-200/month -- RPC provider: $0-100/month (can be free) -- Gas fees: $10-100/month (depends on activity) - -**Comparison with traditional solutions**: -- Traditional business: $54,000+/year -- SaaS solutions: $12,000-60,000/year -- DLE: $1,200-3,000/year - -### How to calculate savings for my business? - -**Calculation formula**: -``` -Savings = (Turnover × 0.03) + (Employees × 2000) + (Investments × 0.1) - -Where: -- 0.03 = 3% bank fees -- 2000 = $2,000/year per employee (management) -- 0.1 = 10% of attracted investment amount -``` - -**Example for small business** (turnover $100,000, 3 employees): -- Bank fees: $3,000 -- Management: $6,000 -- **TOTAL**: $9,000/year savings -- **ROI**: 900% on $1,000 license - ---- - -## Practical Application Questions - -### Where to start implementing DLE? - -**First month**: -1. **Week 1**: Installation and configuration -2. **Week 2**: Create knowledge base for AI -3. **Week 3**: Configure electronic tables -4. **Week 4**: Testing and team training - -**Priority tasks**: -1. Configure CRM for customers -2. Create knowledge base for support -3. Configure procurement automation -4. Connect omnichannel communications - -### How will DLE help with customers? - -**Support automation**: -- AI answers 80% of customer questions -- Works 24/7 without days off -- Analyzes customer sentiment -- Creates tickets automatically - -**Customer base management**: -- Full interaction history -- Automatic reminders -- Customer segmentation -- Need forecasting - -**Communication channels**: -- Telegram bot -- Email support -- Web chat on website - -### How will DLE help with suppliers? - -**Supplier database**: -- Catalog of all suppliers -- Price and condition comparison -- Ratings and reviews -- Cooperation history - -**AI buyer**: -- Find best offers -- Analyze contract terms -- Control delivery deadlines -- Automatic notifications - -**Savings**: -- Reduce purchase prices by 5-15% -- Accelerate supplier selection process -- Reduce risks - -### How will DLE help with finances? - -**Accounting automation**: -- Bookkeeping -- Report generation -- Expense control -- Budget planning - -**Blockchain finances**: -- Instant payments 24/7 -- Fees 50-100x lower -- No geographical restrictions -- Transparency of all operations - -**Analytics**: -- Cash flow forecasting -- Profitability analysis -- Financial risk identification -- KPI and metrics - ---- - -## Integration with Existing Systems Questions - -### How to migrate data from existing systems? - -**Step-by-step process**: -1. **Export data** from current system -2. **Clean and format** data -3. **Import to DLE** via web interface -4. **Verify correctness** of data -5. **Configure relations** between tables - -**Supported formats**: -- Excel (.xlsx, .xls) -- CSV -- JSON - -## Scaling Questions - -### How does DLE scale with business growth? - -**Horizontal scaling**: -- Add new servers -- Load distribution -- Database clustering -- CDN for static files - -**Vertical scaling**: -- Increase RAM and CPU -- SSD drives -- Query optimization -- Caching - -**Limits**: -- **Users**: up to 10,000 simultaneous -- **Data**: up to 1TB per table -- **API requests**: up to 10,000/minute -- **Files**: up to 100GB total size - -### How many users can work simultaneously? - -**Recommended limits**: -- **Small business** (up to 50 users): standard configuration -- **Medium business** (up to 500 users): increased RAM (32GB+) -- **Large business** (up to 5,000 users): cluster configuration -- **Corporations** (10,000+ users): distributed architecture - -**Performance**: -- **Interface response**: < 200ms -- **Page load**: < 2 seconds -- **API requests**: < 500ms -- **Search**: < 1 second - -### How does DLE handle large data volumes? - -**Optimizations**: -- **Indexing**: automatic indexes for search -- **Pagination**: load data in parts -- **Caching**: Redis for frequently used data -- **Compression**: data compression in database - -**Recommendations**: -- Use filters for large tables -- Configure archiving of old data -- Regularly clean unused files -- Monitor performance - ---- - -## Additional Resources - -### Documentation -- 📋 [FAQ](./FAQ.md) - this document -- 🔧 [Installation](./setup-instruction.md) - step-by-step setup -- 🤖 [AI Assistant](./ai-assistant.md) - full AI capabilities -- 🔗 [Blockchain for Business](./blockchain-for-business.md) - practical cases -- 📝 [Application Description](./application-description.md) - feature overview - -### Training -- 🎓 **Online sessions** (group and individual) -- 🗳️ **Voting portal**: https://hb3-accelerator.com/ - -### Support -- 💬 **Support chat**: https://hb3-accelerator.com/ -- 📧 **Email**: info@hb3-accelerator.com -- 🌐 **Website**: https://hb3-accelerator.com - ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - -**Last update**: October 2025 - diff --git a/docs-en/README.md b/docs-en/README.md deleted file mode 100644 index d82249d..0000000 --- a/docs-en/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# 📚 Digital Legal Entity Documentation - -**🌐 Language / Язык:** [🇷🇺 Русский](../docs/README.md) | [🇬🇧 English](README.md) - -## 📖 Product Definition - -**Digital Legal Entity (DLE)** is a microservices IT infrastructure with a web application for on-premises deployment on company servers. - -**Includes:** -- AI agent configuration tools -- Smart contract system supporting: - - Legal entity credentials - - Regulatory identifiers for financial operations - -**Benefits:** -- Business process management and automation -- Replacement of fragmented SaaS services with monthly subscriptions -- Compliance with regulatory requirements for data storage and processing - ---- - -This section contains materials about the DLE product: overview, business cases, technical specifications, and implementation instructions. Use the list below to quickly find the document you need. - -## 📄 Available Documents - -| File | Brief Description | -| --- | --- | -| [application-description.md](./application-description.md) | Overview of the platform's purpose, key benefits, and economic impact. | -| [ai-assistant.md](./ai-assistant.md) | Detailed description of AI assistant capabilities and business cases. | -| [setup-ai-assistant.md](./setup-ai-assistant.md) | Step-by-step setup of a local AI assistant with vector search. | -| [setup-instruction.md](./setup-instruction.md) | Main installation and initial configuration instructions. | -| [blockchain-for-business.md](./blockchain-for-business.md) | Business justification and use cases for blockchain in DLE. | -| [blockchain-integration-technical.md](./blockchain-integration-technical.md) | Technical architecture of blockchain integration and smart contracts. | -| [security.md](./security.md) | Security model, access control, and protection mechanisms. | -| [service-terms.md](./service-terms.md) | Detailed terms for license purchase and maintenance. | -| [FAQ.md](./FAQ.md) | Answers to frequently asked questions about licensing, installation, and features. | -| [system-messages-management.md](./system-messages-management.md) | Technical specification for system message management. | -| [tables-system.md](./tables-system.md) | Description of the electronic tables system, architecture, and integrations. | -| [commercial-proposal-entrepreneurs.md](./commercial-proposal-entrepreneurs.md) | Ready-to-use commercial proposal for entrepreneurs outside CIS. | - ---- - -### 🔗 Related Materials - -- Legal documents and requirements are available in the [`../legal-en`](../legal-en/README.md) directory. -- Updates and additional information are published in the root [`README`](../README.md). - diff --git a/docs-en/ai-assistant.md b/docs-en/ai-assistant.md deleted file mode 100644 index d1625a8..0000000 --- a/docs-en/ai-assistant.md +++ /dev/null @@ -1,387 +0,0 @@ -# DLE AI Assistant - Complete Business Capabilities - -> **Philosophy**: AI doesn't replace people, but becomes their co-pilot, freeing up 85% of time for strategy and creativity. - -## 📋 Table of Contents - -1. [Introduction](#introduction) -2. [Technology and Architecture](#technology-and-architecture) -3. [Complete AI Assistant Capabilities](#complete-ai-assistant-capabilities) -4. [Economic Impact](#economic-impact) -5. [Setup and Integration](#setup-and-integration) - ---- - -## Introduction - -### What is AI Assistant in DLE? - -**AI Assistant** is a built-in intelligent assistant that uses: -- 🧠 **Ollama** - local open-source AI models (qwen2.5:7b) -- 🔍 **Vector Search** - FAISS for semantic search -- 📚 **RAG** (Retrieval-Augmented Generation) - knowledge base search -- 💾 **Caching** - instant responses to frequent questions - -### Key Benefits - -1. **🏠 100% Local** - all data on your server -2. **🔒 Complete Privacy** - nothing goes to the cloud -3. **⚡ Lightning-fast Responses** - caching and vector search -4. **💰 Zero API Costs** - no token payments -5. **📈 Learns from Your Data** - personalized responses -6. **🌍 Multilingual** - supports Russian, English, and more -7. **🔄 24/7 Availability** - works around the clock - ---- - -## Technology and Architecture - -### How It Works? - -``` -┌─────────────────────────────────────────────────────────┐ -│ AI Assistant Architecture │ -└─────────────────────────────────────────────────────────┘ - -┌─────────────────────────────────────────┐ -│ 1. User asks a question │ -│ "How to return a product?" │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 2. Question Vectorization │ -│ Ollama mxbai-embed-large:latest │ -│ Text → Vector [768 numbers] │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 3. Vector Search (FAISS) │ -│ Search for similar questions │ -│ Top-3 results by semantics │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 4. Contextual Search (RAG) │ -│ Extract answers from knowledge base │ -│ Filter by tags/products │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 5. Answer Generation (LLM) │ -│ Ollama qwen2.5:7b │ -│ Context + Question → Answer │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 6. Caching │ -│ Save to cache for 1 hour │ -│ Next same question < 50ms │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 7. Response to User │ -│ "Product can be returned within..." │ -└─────────────────────────────────────────┘ -``` - -### Technology Stack - -| Component | Technology | Purpose | -|-----------|------------|---------| -| **LLM Model** | Ollama qwen2.5:7b | Text generation, dialogue | -| **Embedding Model** | mxbai-embed-large | Text vectorization | -| **Vector DB** | FAISS | Fast semantic search | -| **Main DB** | PostgreSQL | Knowledge base storage | -| **Cache** | Node.js Map + TTL | Accelerate repeated requests | -| **Queue** | AI Queue | Priority task processing | - ---- - -## Complete AI Assistant Capabilities - -### 1. 📞 Customer Service and Support - -**Automatic responses to common questions:** -- Instant 24/7 responses via Telegram, Email, Web chat -- Automatic problem diagnosis by order number -- Ticket creation in CRM with prioritization -- Knowledge base with vector search -- Multilingual customer support from different countries -- Real-time customer sentiment analysis -- Escalation of complex questions to live operators -- Personalized recommendations based on purchase history - -**Messenger Integration:** -- Telegram bot with AI assistant -- Email support with automatic analysis -- Web chat widget on website -- SMS notifications and alerts -- Web feedback forms - -### 2. 📊 Analytics and Business Intelligence - -**Automatic Data Analysis:** -- Big data analysis and trend identification -- Sales and demand forecasting for products/services -- Customer segmentation by behavior and preferences -- Marketing campaign effectiveness analysis -- Financial indicator anomaly detection -- Interactive dashboards with key metrics -- Competitive analysis -- Benchmarking and industry comparisons - -### 3. 💰 Financial Planning and Accounting - -**Financial Process Automation:** -- Automatic accounting and report generation -- Cash flow forecasting and budget planning -- Product and service profitability analysis -- Financial risk identification and mitigation recommendations -- Automatic invoice creation and payment tracking -- Tax planning optimization -- KPI and financial indicator monitoring -- Consolidated reporting across all departments - -### 4. 🎯 Marketing and Sales - -**Content Marketing:** -- Content generation for social media, blogs, email campaigns -- Marketing message personalization for each customer -- A/B testing of various advertising options -- Customer acquisition channel effectiveness analysis -- Automatic email campaign creation -- SEO content and meta tag optimization -- Online reputation management - -**Sales:** -- Automatic commercial proposal creation -- Customer base analysis and opportunity identification -- Personalized product recommendations -- Automatic sales funnel tracking -- Cold call script generation - -### 5. 👥 HR and Personnel Management - -**Recruitment and Personnel Management:** -- Automatic resume screening and candidate pre-selection -- Interviewing with chatbot -- Employee performance analysis -- Training and development planning -- Automatic job description creation -- Employee satisfaction analysis -- Vacation and shift planning -- Team mood monitoring - -**Employee Training:** -- Personalized training programs for employees -- Interactive course and material creation -- Adaptive learning for individual needs -- Knowledge and skill assessment -- Career development recommendations -- Knowledge base and FAQ creation - -### 6. 📋 Project and Task Management - -**Project Work Automation:** -- Automatic project planning and resource allocation -- Progress tracking and delay identification -- Workflow optimization and bottleneck elimination -- Automatic project reporting -- Risk management and reserve planning -- Distributed team coordination -- Management methodology effectiveness analysis - -### 7. 🔍 Research and Development - -**Analytics and Research:** -- Market and competitive environment analysis -- New technology and trend research -- New product/service idea generation -- Patent and intellectual property analysis -- Technical documentation and specifications -- Customer feedback analysis for product improvement - -### 8. 🛡️ Security and Compliance - -**Security Monitoring:** -- IT system security monitoring -- Suspicious activity and threat detection -- Automatic security policy updates -- Regulatory compliance analysis -- Access and user rights management -- Log auditing and incident investigation - -### 9. 📈 Operational Efficiency - -**Process Optimization:** -- Supply chain and logistics optimization -- Production planning and inventory management -- Routine process automation -- Product and service quality analysis -- Asset management and maintenance -- Energy and resource consumption optimization - -### 10. 🎓 Training and Development - -**Corporate Training:** -- Personalized training programs for employees -- Interactive course and material creation -- Adaptive learning for individual needs -- Knowledge and skill assessment -- Career development recommendations -- Knowledge base and FAQ creation - -### 11. 🌐 International Activities - -**Global Capabilities:** -- Automatic document and communication translation -- Target market cultural analysis -- Content adaptation for local requirements -- International legislation change monitoring -- Currency risk management -- Coordination with foreign partners - -### 12. 🔮 Strategic Planning - -**Long-term Planning:** -- Macroeconomic trend analysis and business impact -- Scenario planning for various situations -- Merger and acquisition opportunity analysis -- Investment project evaluation -- New market entry planning -- Long-term development strategy development - -### 13. 📱 Mobile and Digital Solutions - -**Digital Transformation:** -- Mobile app development with AI features -- Chatbot creation for various platforms -- Voice assistants for business processes -- IoT device integration -- Social media automation -- Virtual assistant creation - -### 14. 🏭 Industry Solutions - -**Specialized Solutions:** -- **Healthcare**: diagnosis, treatment planning, patient management -- **Finance**: credit scoring, risk management, trading algorithms -- **Retail**: personalization, inventory management, pricing -- **Manufacturing**: quality control, predictive maintenance, optimization -- **Real Estate**: valuation, market analysis, property management -- **Education**: adaptive learning, knowledge assessment, planning - -### 15. 🔄 Integration and Automation - -**System Integration:** -- API integrations with external systems -- Workflow automation (RPA) -- Data synchronization between various platforms -- Unified ecosystem creation for all business processes -- Data and system migration -- Integrated solution performance monitoring - ---- - -## Economic Impact - -### Comparison with Cloud Solutions - -| Characteristic | DLE AI (Local) | ChatGPT API | Claude API | -|----------------|----------------|-------------|------------| -| **Cost** | $0 | ~$0.02/request | ~$0.03/request | -| **Privacy** | ✅ 100% | ❌ Data in OpenAI | ❌ Data in Anthropic | -| **Speed (cache)** | 50ms | 500-2000ms | 500-2000ms | -| **Offline Work** | ✅ Yes | ❌ No | ❌ No | -| **Business Customization** | ✅ Full | ⚠️ Limited | ⚠️ Limited | -| **API Limits** | ❌ None | ✅ Yes | ✅ Yes | - -### Savings with Cloud API Usage - -**At 10,000 requests/month:** -- ChatGPT API: $200/month = **$2,400/year** -- Claude API: $300/month = **$3,600/year** -- DLE AI: **$0/year** ✅ - -**At 50,000 requests/month:** -- ChatGPT API: $1,000/month = **$12,000/year** -- Claude API: $1,500/month = **$18,000/year** -- DLE AI: **$0/year** ✅ - -**At 100,000 requests/month:** -- ChatGPT API: $2,000/month = **$24,000/year** -- Claude API: $3,000/month = **$36,000/year** -- DLE AI: **$0/year** ✅ - -### Total Savings Across All Areas - -| Area | Annual Savings | ROI | -|------|----------------|-----| -| **Customer Service** | $57,600 | 5,760% | -| **Supplier Work + AI Purchaser** | $64,800 | 6,480% | -| **Partner Work** | $43,200 | 4,320% | -| **Employee Training** | $30,000 | 3,000% | -| **Personnel Management** | $57,600 | 5,760% | -| **Reporting and Analysis** | $144,000 | 14,400% | -| **Content Marketing** | $86,400 | 8,640% | -| **API Token Savings** | $24,000-36,000 | 2,400-3,600% | -| **TOTAL:** | **$507,600-519,600** | **50,760-51,960%** | - -**DLE Implementation Cost**: $1,000 (one-time, Standard Support) -**ROI**: 50,760-51,960% or **507-519x return on investment** - -### Additional Benefits - -**Immeasurable Advantages:** -- 📈 Improved work quality -- 😊 Customer satisfaction +19% -- 👥 Employee retention +15% -- 🚀 Decision speed +300% -- 💡 More time for strategy -- 🎯 Less routine, more creativity - ---- - -## Setup and Integration - -**What You Need to Launch:** -- ✅ Install DLE (see [Installation Instructions](./setup-instruction.md)) -- ✅ Run Ollama and install models -- ✅ Create knowledge base (FAQ, suppliers, HR) -- ✅ Configure AI assistant for your business -- ✅ Integrate with Telegram/Email (optional) - -**Setup Time:** -- 🚀 **Quick Start**: 20-30 minutes (basic FAQ) -- ⚙️ **Full Setup**: 1-2 hours (all capabilities) - -**Result:** -- 🤖 Working AI assistant 24/7 -- 📚 Knowledge base for customer responses -- 🔍 Vector search on your data -- 💰 Savings up to $519,600/year - -### Next Steps - -1. 📖 [Install DLE](./setup-instruction.md) -2. 🤖 [Configure AI Assistant](./setup-ai-assistant.md) -3. 📚 Upload knowledge base -4. 🚀 Start saving time and money! - ---- - -## Support - -**Need Help with AI Setup?** - -📧 **Email**: info@hb3-accelerator.com -💬 **Chat**: https://hb3-accelerator.com -📚 **Documentation**: [FAQ](./FAQ.md) -🎓 **Training**: Online sessions for token holders - ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - -**Last Updated**: October 2025 - diff --git a/docs-en/application-description.md b/docs-en/application-description.md deleted file mode 100644 index ab9c523..0000000 --- a/docs-en/application-description.md +++ /dev/null @@ -1,348 +0,0 @@ -# Digital Legal Entity (DLE) - Web Application for Business Management - -> **Full Control. Zero Subscription Fee. AI Saves $507,600-519,600/year.** - -## 📖 Product Definition - -**Digital Legal Entity (DLE)** is a microservices IT infrastructure with a web application for on-premises deployment on company servers. - -**Includes:** -- AI agent configuration tools -- Smart contract system supporting: - - Legal entity credentials - - Regulatory identifiers for financial operations - -**Benefits:** -- Business process management and automation -- Replacement of fragmented SaaS services with monthly subscriptions -- Compliance with regulatory requirements for data storage and processing - ---- - -## 📋 Table of Contents - -1. [Who This Application Is For](#who-this-application-is-for) -2. [Key Benefits](#key-benefits) -3. [Main Features](#main-features) -4. [Economic Impact](#economic-impact) -5. [Technical Details](#technical-details) -6. [Purchase Terms](#purchase-terms) -7. [Additional Documentation](#additional-documentation) - ---- - -## 🎯 Who This Application Is For - -DLE is created for **all types of organizations** that need transparent collective management: - -- **Commercial organizations** (LLC, JSC, sole proprietors, holdings) -- **Non-profit organizations** (NPOs, foundations, associations) -- **Government structures** (municipalities, agencies) -- **Investment funds** and **venture companies** -- **Startups** and **small businesses** -- **Cooperatives** and **associations** - ---- - -## 💎 Key Benefits - -### Why DLE, Not SaaS? - -| Parameter | DLE | Regular SaaS | -|----------|-----|--------------| -| **💰 Cost** | $1,000 one-time | $200-500/month | -| **📊 Data Ownership** | 100% yours | With provider | -| **🔧 Customization** | Full | Limited | -| **🌍 Legal Compliance** | For your region | Depends on provider | -| **🛡️ Regulatory Compliance** | GDPR, CCPA, 152-FZ | Limited | -| **🤖 AI Without Limits** | Free | $200+/month | -| **🔗 Blockchain** | Built-in | None or extra fee | -| **⚡ Updates** | Free 5 years (for token holders) | Depends on plan | - -### 🎁 What You Get - -✅ **Perpetual License** - pay once, use forever -✅ **Free Updates** - all improvements without extra payment -✅ **Full Source Code** - complete transparency -✅ **AI on Your Server** - 100% confidentiality -✅ **Blockchain Protection** - assets cannot be stolen -✅ **Asset Tokenization** - 99% savings on transactions -✅ **Voting Rights** - influence on product development -✅ **Ready Regulatory Package** - privacy policy, personal data consent, user agreement, cookie policy -✅ **70% Refund Guarantee** - within 5 years if no updates - ---- - -## 🚀 Main Features - -### 1. CRM and Contact Management - -**Full Customer Management System**: -- Centralized contact database with interaction history -- Grouping by tags and categories -- Task and reminder system -- Import from CSV, Excel, external CRMs -- Export in various formats -- Document and template builder - -### 2. AI Assistant with Vector Search - -**Local AI on Your Server**: -- Ollama + Vector Search (RAG) -- qwen2.5:7b model (or any other) -- 100% confidentiality (data doesn't leave) -- Zero API token costs - -**Key Capabilities**: -- **📞 Customer Service** - 24/7 responses, customer sentiment analysis -- **📊 Analytics and Business Intelligence** - data analysis, sales forecasting -- **💰 Financial Planning** - automated accounting, profitability analysis -- **🎯 Marketing and Sales** - content generation, message personalization -- **👥 HR and Personnel Management** - resume screening, training planning -- **📋 Project Management** - automatic planning, progress tracking -- **🔍 Research and Development** - market analysis, idea generation -- **🛡️ Security and Compliance** - security monitoring, compliance analysis -- **📈 Operational Efficiency** - process optimization, automation -- **🎓 Training and Development** - personalized training programs -- **🌐 International Activity** - automatic translation, content adaptation -- **🔮 Strategic Planning** - trend analysis, scenario planning -- **📱 Mobile Solutions** - app development, chatbot creation -- **🏭 Industry Solutions** - specialized solutions for different industries -- **🔄 Integration and Automation** - API integrations, process automation - -**Economic Impact**: $507,600-519,600/year with ROI 50,760-51,960% - -> 💡 **Detailed Information**: See [AI Assistant - Full Description](./ai-assistant.md) - detailed description of all capabilities, use cases, architecture, and savings calculations. - -### 3. Omnichannel Communications - -**Unified Interface for All Channels**: -- 💬 Telegram bot, 📧 Email, 🌐 Web chat, 📱 SMS, 📋 Web forms -- One context for customer across all channels -- AI auto-responses trained on your data -- Analytics by channel and response time - -### 4. Blockchain Management and Tokenization - -**Smart Contracts for Business**: -- Tokenization of any assets (real estate, IP, shares) -- Management through token holder voting -- Multi-chain support (7+ networks: Ethereum, Polygon, BSC, Arbitrum, Optimism, Avalanche, Base) -- Transparency of all operations on blockchain - -> 💡 **Detailed Information**: See [Blockchain for Business](./blockchain-for-business.md) - practical use cases and [Blockchain Technical Documentation](./blockchain-integration-technical.md) - for developers. - -### 5. Groups and Team Spaces - -- Customizable spaces for projects -- Detailed permission system (20+ types) -- Roles: Editor, ReadOnly, User -- Integration with CRM and communications - -### 6. Internal Tools - -- Electronic tables (Excel-like) -- Analytics and reporting system -- Metrics monitoring -- WebSSH for server management - -### 7. Security and Protection - -**Multi-Level DLE Protection**: -- **Network Security** - TLS 1.3, HTTPS, DDoS protection -- **Authentication** - SIWE (wallet login), sessions in DB -- **Authorization** - detailed permissions (20+ types), token gating -- **Data Protection** - AES-256 encryption, SQL injection protection -- **Blockchain Protection** - tokens cannot be stolen without voting -- **Monitoring** - logging, alerts, audit trail - -**Regulatory Compliance**: -- **GDPR** - compliance with European personal data protection requirements -- **CCPA** - compliance with California requirements -- **Russian Legislation** - compliance with 152-FZ "On Personal Data" -- **Local Storage** - all data remains on your server -- **Transparency** - full control over personal data processing - -> 💡 **Detailed Information**: See [DLE Security](./security.md) - detailed description of all protection levels, attack scenarios, security recommendations, and regulatory compliance. - -## 💰 Economic Impact - -### Comparison with SaaS Over 5 Years - -**Typical SaaS Stack**: -``` -CRM (HubSpot): $200/mo × 60 mo = $12,000 -Chatbot (Intercom): $150/mo × 60 mo = $9,000 -Email (SendGrid): $100/mo × 60 mo = $6,000 -AI (ChatGPT API): $200/mo × 60 mo = $12,000 - ───────────────────────────── - TOTAL: $39,000 -``` - -**DLE**: -``` -License (one-time): $1,000 -Updates (5 years): $0 -AI without limits: $0 - ───────────────────────────── - TOTAL: $1,000 - -SAVINGS: $38,000 -``` - -### ROI from AI Assistant - -**Comparison with Cloud Solutions**: - -| Characteristic | DLE AI (Local) | ChatGPT API | Claude API | -|----------------|-------------------|-------------|------------| -| **Cost** | $0 | ~$0.02/request | ~$0.03/request | -| **Confidentiality** | ✅ 100% | ❌ Data in OpenAI | ❌ Data in Anthropic | -| **Speed (cache)** | 50ms | 500-2000ms | 500-2000ms | -| **Offline Work** | ✅ Yes | ❌ No | ❌ No | -| **Business Customization** | ✅ Full | ⚠️ Limited | ⚠️ Limited | -| **API Limits** | ❌ None | ✅ Yes | ✅ Yes | - -**Total Savings Across All Areas**: -- Customer Service: $57,600 -- Supplier Relations + AI Purchaser: $64,800 -- Partner Relations: $43,200 -- Staff Training: $30,000 -- Personnel Management: $57,600 -- Reporting and Analysis: $144,000 -- Content Marketing: $86,400 -- API Token Savings: $24,000-36,000 -- **TOTAL**: $507,600-519,600/year - -**Investment**: $1,000 -**ROI**: 50,760-51,960% or 507-519x return ✅ - -### Savings on Asset Tokenization - -**Traditional Real Estate Transaction ($1M)**: -- Realtor Commission: 3-5% = $30,000-50,000 -- Legal Services: $5,000-10,000 -- Title Registration: $2,000-5,000 -- Time: 2-6 months -- **Total**: $37,000-65,000 - -**Tokenized Transaction via DLE**: -- Gas Fees: $50-200 -- Smart Contract (one-time): $500 -- Time: 5-10 minutes -- **Total**: $550-700 - -**Savings**: 99% costs and 99% time ✅ - ---- - -## 🔧 Technical Details - -### Architecture - -**Modern Technology Stack**: -- **Frontend**: Vue.js 3 + Vite + Element Plus -- **Backend**: Node.js + Express -- **Database**: PostgreSQL + pgvector -- **AI**: Ollama (qwen2.5:7b) + FAISS Vector Search -- **Blockchain**: Ethers.js v6 + Hardhat -- **Containerization**: Docker Compose - -### Design Principles - -✅ **Microservices Architecture** - easy to scale -✅ **Full Control** - you own the application and data -✅ **Modularity** - add new features through modules -✅ **Security** - multi-level protection (TLS, AES-256, CSRF) -✅ **API-first** - REST + WebSocket for integrations - -### Deployment - -**Flexible Installation Options**: -- **On Your Server** - full control -- **In Cloud** - AWS, Google Cloud, Azure -- **On Local Infrastructure** - regulatory compliance -- **Docker Compose** - deployment with one command - -**Minimum Requirements**: -- **CPU**: 4 cores -- **RAM**: 12 GB (4 GB application + 6 GB AI + 2 GB Vector Search) -- **Storage**: 100 GB SSD -- **OS**: Ubuntu 20.04+, Debian 11+, CentOS 8+, any Linux with Docker - -> 💡 **Detailed Information**: See [Installation Instructions](./setup-instruction.md) - step-by-step setup and [AI Assistant Setup](./setup-ai-assistant.md) - specialized installation. - ---- - -## 💳 Purchase Terms - -> 💡 **Detailed Information**: See [Service Terms](./service-terms.md) - detailed description of licensing model, pricing, guarantees, and purchase process. - -### Quick Overview - -**Perpetual License**: -- 💰 **Pay Once** - use forever -- 📄 **Full Source Code** with documentation -- 🔄 **Free Updates** 5 years for license token holders (see [legal-en/service-terms.md](../legal-en/service-terms.md)) -- 🗳️ **Voting Rights** for product development - -**Pricing**: -| Package | Price | Votes | Support | -|-------|------|--------|-----------| -| **Standard Support** | $1,000 USDT | 1 vote | 24/7 chat | -| **Priority Support** | $10,000 USDT | 10 votes | 24/7 chat | - -**What's Included**: -✅ Perpetual license for use -✅ Source code with full documentation -✅ Free updates 5 years for token holders -✅ Technical support -✅ Governance tokens on blockchain -✅ Ready regulatory package -✅ 70% refund guarantee within 5 years - -**How to Purchase**: -1. Contact us: info@hb3-accelerator.com -2. Receive payment details (USDT) -3. Pay for license -4. Receive code access and DLE tokens - ---- - -## 📚 Additional Documentation - -### 🎯 Quick Start -- 📋 **[FAQ](./FAQ.md)** - answers to 50+ questions (11 sections) -- 🔧 **[Installation](./setup-instruction.md)** - step-by-step setup in 15 minutes -- 🤖 **[AI Setup](./setup-ai-assistant.md)** - launch AI assistant - -### 💼 Business and Economics -- 💰 **[Blockchain for Business](./blockchain-for-business.md)** - asset tokenization, 99% savings on transactions -- 🤖 **[AI Assistant](./ai-assistant.md)** - $507,600-519,600/year savings, "AI+Human" philosophy -- 📊 **[Tables System](./tables-system.md)** - data and document management - -### 🔧 Technical Documentation -- 🔗 **[Blockchain Integration](./blockchain-integration-technical.md)** - smart contracts, API, code examples -- 🛡️ **[Security](./security.md)** - multi-level protection, GDPR/CCPA/152-FZ compliance -- ⚖️ **[Service Terms](./service-terms.md)** - licensing, support, guarantees - -### 📖 General Information -- 📖 **[Main README](../README.md)** - complete list of all documents -- ⚖️ **[Legal Documentation](../legal-en/README.md)** - legal information - -### 📞 Support and Contacts - -**Main Contacts**: -- 📧 **Email**: info@hb3-accelerator.com -- 🌐 **Website**: https://hb3-accelerator.com -- 💬 **Support Chat**: https://hb3-accelerator.com/ -- 🐙 **GitHub**: https://github.com/VC-HB3-Accelerator ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - -**Digital Legal Entity (DLE)** - revolution in business management through blockchain and AI. - -**Document Version**: 2.0.0 -**Last Update**: October 2025 - diff --git a/docs-en/blockchain-for-business.md b/docs-en/blockchain-for-business.md deleted file mode 100644 index 0aad8e9..0000000 --- a/docs-en/blockchain-for-business.md +++ /dev/null @@ -1,1288 +0,0 @@ -# Blockchain Integration for Business: Solving Real Problems - -## 📋 Table of Contents - -1. [Introduction: Why Blockchain for Business?](#introduction-why-blockchain-for-business) -2. [Smart Contract as Universal Identifier](#smart-contract-as-universal-identifier) -3. [Asset Tokenization](#asset-tokenization) -4. [Solving Management Problems](#solving-management-problems) -5. [Financial Operations Without Banks](#financial-operations-without-banks) -6. [Transparency and Trust](#transparency-and-trust) -7. [Automation and Cost Reduction](#automation-and-cost-reduction) -8. [Practical Cases](#practical-cases) -9. [Economic Impact](#economic-impact) - ---- - -## Introduction: Why Blockchain for Business? - -### Traditional Business Problems - -Modern business faces many problems: - -| Problem | Consequences | Costs | -|---------|-------------|-------| -| 🏦 **Multiple Bank Accounts** | Accounting complexity, fees | 2-5% of turnover | -| 📄 **Bureaucracy** | Slow decisions, paperwork | 20-30% of time | -| 🤝 **Non-transparent Management** | Shareholder conflicts, corruption | Up to 40% of value | -| 💰 **Illiquid Assets** | Cannot quickly sell/divide | Lost opportunities | -| 🌍 **Geographic Restrictions** | Difficulties with international partners | Missed profit | -| ⏰ **Slow Transactions** | 3-7 days for bank transfers | Capital freeze | - -### Solution: Digital Legal Entity on Blockchain - -DLE transforms your company into a **digital organization** with blockchain identity, where: -- ✅ One smart contract address = all company identification -- ✅ Any assets tokenized and easily manageable -- ✅ Transparent management through voting -- ✅ Instant financial operations without intermediaries -- ✅ Global availability 24/7 - ---- - -## Smart Contract as Universal Identifier - -### Concept: One Address for Everything - -In traditional business, a company has many identifiers: -``` -Traditional Company: -├── Tax ID/Registration Number -├── Bank Account #1 (RUB) -├── Bank Account #2 (USD) -├── Bank Account #3 (EUR) -├── Email: info@company.com -├── Phone: +7-xxx-xxx-xx-xx -├── Legal Address -├── Contract Details -└── Multiple Accounting Systems -``` - -**With DLE on Blockchain:** -``` -Digital Legal Entity: -└── 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C - ↑ - This ONE smart contract address replaces EVERYTHING: - ✅ Tax Identifier - ✅ Bank Account (multi-currency) - ✅ Email/Phone (receiving payments and messages) - ✅ Legal Identity - ✅ Communication Address - ✅ Asset Accounting System -``` - -### How It Works in Reality? - -#### 1. Tax Identifier - -**Traditionally:** -- Tax ID (Russia): 10 digits -- EIN (USA): 9 digits -- VAT ID (EU): 8-12 characters -- Different in each jurisdiction - -**With DLE:** -- Contract address: `0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C` -- **Same** in all countries and blockchains -- Link to traditional numbers stored in smart contract: - ```solidity - struct DLEInfo { - uint256 jurisdiction; // 643 = Russia, 840 = USA - string[] okvedCodes; // OKVED codes (activity types) - uint256 kpp; // KPP for Russia - string location; // Location - } - ``` - -**Advantages:** -- ✅ No need to register in each country -- ✅ Instant verification via blockchain -- ✅ Cannot forge or steal identifier - -#### 2. Bank Account (Multi-currency) - -**Traditionally:** -- Separate account for each currency -- Opening fees: $50-500 -- Monthly maintenance: $10-100 -- Conversion: 1-5% fees -- Transfers: 3-7 days + $25-50 - -**With DLE:** -- Contract address accepts any tokens: - - USDT, USDC (stablecoins = dollars) - - Native coins (ETH, MATIC, BNB) - - Any ERC20 tokens - - Tokenized assets - -**Transaction Example:** -``` -Client sends payment → 0x742d35... - ↓ - Received in 30 seconds - Fee: $0.10-5 - Visible to all participants -``` - -**Advantages:** -- ✅ One address for all currencies -- ✅ Fees 50-100x lower -- ✅ Instant transactions -- ✅ Works 24/7, including weekends -- ✅ No blocks and freezes - -#### 3. Email and Phone for Company - -**Traditionally:** -- Email: info@company.com (can be hacked, lose domain) -- Phone: +7-xxx-xxx (can intercept SIM) -- Different channels for different purposes - -**With DLE:** -- **Contract address** = communication address -- Cryptographic signatures (cannot forge) -- Built-in omnichannel system: - ``` - 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C - ↓ - ┌───────────┴───────────┬───────────┬──────────┐ - │ Blockchain Messages │ Telegram │ Email │ Web - │ (cryptographically │ (bot) │ (SMTP) │ (form) - │ signed) │ │ │ - └───────────────────────┴───────────┴──────────┘ - ``` - -**Advantages:** -- ✅ Cannot hack (private key = access) -- ✅ Complete communication history on blockchain -- ✅ Automatic sender verification -- ✅ All channels integrated in one place - ---- - -## Asset Tokenization - -### What is Tokenization? - -**Tokenization** - converting any asset into a digital token on blockchain that can: -- 🔄 Quickly buy/sell -- 📊 Divide into shares (fractional ownership) -- 💱 Exchange for other assets -- 📈 Track value in real-time -- 🌍 Transfer worldwide instantly - -### Asset Types for Tokenization - -#### 1. 🏢 Real Estate - -**Traditional Problem:** -- Illiquidity (sale 3-12 months) -- High fees (3-6% of value) -- Cannot divide (cannot sell 10% of apartment) -- Bureaucracy (dozens of documents, notaries) - -**Solution Through Tokenization:** -``` -Office Building = 10,000,000 DLE Tokens -├── 1 token = 0.00001% of building -├── Token Price: $100 -├── Minimum Purchase: 1 token ($100) -└── Sale: 30 seconds on blockchain -``` - -**Advantages:** -- ✅ Anyone can buy share from $100 -- ✅ Sale in 30 seconds instead of 6 months -- ✅ Fee 0.1% instead of 5% -- ✅ Automatic rental payment distribution -- ✅ Transparent ownership history - -**Example:** -``` -You own office for 10 million rubles -↓ Tokenization -Issue 100,000 tokens at 100 rubles -↓ Sell 30% (30,000 tokens) -Received 3 million rubles in 1 day -↓ Rent 500,000 rubles/month -Automatically distributed: -├── 70% (350,000 rubles) → you -└── 30% (150,000 rubles) → new token holders -``` - -#### 2. 📈 Stocks and Business Shares - -**Traditional Problem:** -- IPO costs millions and takes years -- LLC shares don't sell (need notary, tax office) -- Shareholder accounting - expensive and complex -- Dividends paid manually - -**Solution Through DLE:** -``` -Your Company = DLE Tokens -├── 1,000,000 tokens = 100% of company -├── You: 700,000 tokens (70%) -├── Partner: 200,000 tokens (20%) -└── Investors: 100,000 tokens (10%) -``` - -**Advantages:** -- ✅ "IPO" in 1 day instead of 2 years -- ✅ Cost: $100-1000 instead of $500,000+ -- ✅ Automatic dividend payments -- ✅ Instant share sale -- ✅ Transparent owner accounting - -**Case:** -``` -Startup seeking investment: - -Traditionally: -├── Investor search: 6-12 months -├── Lawyers and documents: $10,000-50,000 -├── Change registration: 1-2 months -└── TOTAL: $50,000 + year of time - -With DLE: -├── Issue tokens: 1 day -├── Sell on DEX: immediately -├── Cost: $100 (gas fees) -└── TOTAL: $100 + 1 day -``` - -#### 3. 🎨 Intellectual Property - -**What Can Be Tokenized:** -- Patents -- Copyrights (music, books, video) -- Trademarks -- Franchises -- Software Licenses - -**Example: Music Album Tokenization** -``` -Artist Album = 1,000,000 tokens -├── Artist keeps: 500,000 (50%) -├── Sells to fans: 500,000 tokens at $1 -└── Streaming revenue automatically divided: - ├── 50% → artist - └── 50% → token holders -``` - -**Advantages:** -- ✅ Fans invest in favorite artist -- ✅ Automatic royalties -- ✅ Revenue transparency -- ✅ Secondary market (tokens can be resold) - -#### 4. 📦 Goods and Inventory - -**Problem:** Warehouse goods are "dead" capital - -**Solution:** -``` -100 tons of wheat = 100,000 tokens -├── 1 token = 1 kg of wheat -├── Token Price: current exchange + 5% -└── Can sell/buy at any time -``` - -**Advantages:** -- ✅ Warehouse inventory liquidity -- ✅ Risk hedging (sell part in advance) -- ✅ Financing attraction for goods -- ✅ Transparent supply chain - -#### 5. 💎 Precious Items and Art - -**Case: Diamond Tokenization** -``` -5 Carat Diamond = 5,000 tokens -├── 1 token = 0.001 carat -├── Price: $100,000 / 5,000 = $20 per token -├── Physical diamond in vault (certified) -└── Token holders = co-owners of diamond -``` - -**Advantages:** -- ✅ Investment access from $20 -- ✅ Liquidity (sale in minutes) -- ✅ Diversification (buy shares in different stones) -- ✅ Transparent storage and insurance - -### How Tokenization Works in DLE? - -#### Treasury Model - -``` -┌─────────────────────────────────────────────────┐ -│ DLE Smart Contract │ -│ Address: 0x742d35... │ -├─────────────────────────────────────────────────┤ -│ ASSETS (Treasury): │ -│ ├── 10 BTC │ -│ ├── 100,000 USDT │ -│ ├── Tokenized Real Estate: 3 properties │ -│ ├── Company Stocks: 10 issuers │ -│ └── Intellectual Property: 5 patents │ -├─────────────────────────────────────────────────┤ -│ MANAGEMENT: │ -│ ├── Token holders vote for distribution │ -│ ├── 51%+ = decision approved │ -│ └── Automatic execution by smart contract │ -└─────────────────────────────────────────────────┘ -``` - -**Process:** -1. **Company buys asset** (real estate, equipment, etc.) -2. **Asset placed in Treasury Module** of smart contract -3. **Token holders own shares** according to token amount -4. **Asset income** automatically distributed proportionally - ---- - -## Solving Management Problems - -### Traditional Corporate Governance Problems - -#### 1. Decision Opacity - -**Problem in Classic Companies:** -``` -Board of Directors: -├── Closed meetings -├── No decision records (or lost) -├── Cannot verify who voted how -├── Conflicts of interest hidden -└── Shareholders don't know what's happening -``` - -**Solution in DLE:** -``` -Each Proposal: -├── ID: #42 -├── Description: "Buy new office for 5 million" -├── Initiator: 0xABC...123 -├── Votes "For": 5,234,567 tokens (62%) -├── Votes "Against": 3,123,456 tokens (38%) -├── Who voted how: publicly on blockchain -├── Voting Date: 2025-10-25 -└── Result: Approved ✅ -``` - -**Advantages:** -- ✅ **Complete Transparency** - every shareholder sees everything -- ✅ **Immutable History** - cannot forge results -- ✅ **Automatic Counting** - no manipulation -- ✅ **Provability** - anyone can verify on blockchain - -#### 2. Slow Decision Making - -**Traditional Scheme:** -``` -Change Proposal → - Document Preparation (2 weeks) → - Lawyer Approval (1 week) → - Shareholder Meeting (1 month) → - Voting (1 day) → - Protocol Preparation (1 week) → - Registration (2 weeks) → - TOTAL: 3 months -``` - -**With DLE on Blockchain:** -``` -Change Proposal → - Create Proposal (5 minutes) → - Voting (1-7 days) → - Automatic Execution (30 seconds) → - TOTAL: 1-7 days -``` - -**Savings:** 90-95% of time! - -#### 3. High Management Costs - -**Traditional Corporate Governance Expenses:** -``` -Annual LLC/Corp Management Expenses: -├── Accountant: $12,000-36,000/year -├── Lawyer: $10,000-50,000/year -├── Notary (transactions): $500-5,000/year -├── Shareholder Registry: $2,000-10,000/year -├── Audit: $5,000-50,000/year -├── Shareholder Meetings (organization): $2,000-10,000/year -└── TOTAL: $31,500-161,000/year -``` - -**With DLE:** -``` -Annual Expenses: -├── Gas fees for transactions: $100-1,000/year -├── RPC providers: $0-500/year (can be free) -├── Application hosting: $100-500/year -└── TOTAL: $200-2,000/year -``` - -**Savings:** 90-99% of expenses! - -#### 4. Corruption and Conflicts of Interest - -**Traditional Problem:** -- Director buys services from own company at inflated price -- Cannot track -- Hard to prove -- Long court proceedings - -**DLE Solution:** -``` -Proposal: "Buy equipment from Company X for $100,000" -↓ -All token holders see: -├── Who initiated: 0xABC...123 (Ivan Ivanov) -├── Company X Owner: 0xABC...123 (SAME PERSON!) -├── Conflict of Interest: DETECTED ⚠️ -└── Token holders vote "Against" -``` - -**Advantages:** -- ✅ Automatic conflict detection -- ✅ Ownership transparency -- ✅ Cannot hide connections -- ✅ Collective decision making - -### Hierarchical Management (DLE Owns Other DLEs) - -**Concept:** One company owns shares of other companies - -``` -┌─────────────────────────────────────────┐ -│ Holding DLE-A (Parent Company) │ -│ 1,000,000 tokens │ -└──────────────┬──────────────────────────┘ - │ Owns tokens: - ┌───────┼───────┬─────────────┐ - ↓ ↓ ↓ ↓ - ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ - │DLE-B │ │DLE-C │ │DLE-D │ │DLE-E │ - │70% │ │51% │ │100% │ │25% │ - │Retail │ │Manuf. │ │IT │ │Start. │ - └───────┘ └───────┘ └───────┘ └───────┘ -``` - -**Capabilities:** -1. **DLE-A votes in subsidiaries** automatically -2. **Consolidated management** of entire holding -3. **Transparent ownership structure** (visible to all) -4. **Automatic dividends** bottom-up - -**Example:** -``` -DLE-D earned 100,000 USDT profit -↓ -Voting in DLE-D: "Pay dividends" -↓ -100% tokens with DLE-A → 100,000 USDT goes to DLE-A -↓ -Automatically distributed among DLE-A shareholders -``` - ---- - -## Financial Operations Without Banks - -### Banking System Problems for Business - -| Problem | Consequences | Your Losses | -|---------|-------------|-------------| -| 🏦 **High Fees** | 2-5% per transaction | $20,000 on $1M turnover | -| ⏰ **Slow Transfers** | 3-7 days | Capital freeze | -| 🌍 **SWIFT Fees** | $25-50 per transfer | $300-600/month | -| 💱 **Currency Conversion** | 3-7% spread | $30,000-70,000/year | -| 🚫 **Account Blocks** | Business stops | Millions in losses | -| 📋 **Compliance** | Document requests | Employee time | -| 🌐 **Country Restrictions** | No access to markets | Missed profit | - -### Solution: Cryptocurrency Operations Through DLE - -#### 1. Instant Payments 24/7 - -**Comparison:** -``` -Bank Transfer (International): -├── Time: 3-7 business days -├── Fee: $25-50 + 2-5% conversion -├── Works: Mon-Fri, 9:00-18:00 -└── Can be blocked - -Crypto Transfer (via DLE): -├── Time: 30 seconds - 5 minutes -├── Fee: $0.10-5 -├── Works: 24/7/365 -└── Cannot be blocked -``` - -**Real Case:** -``` -You sell goods to China for $100,000 - -Traditionally: -├── SWIFT transfer: 5 days -├── Bank fee: $50 -├── USD→CNY Conversion: 3% = $3,000 -├── Chinese bank fee: $30 -└── TOTAL: $3,080 fees + 5 days waiting - -With DLE (USDT): -├── Blockchain transfer: 30 seconds -├── Gas fee: $2 -├── Conversion: 0% (USDT = USD) -└── TOTAL: $2 fee + 30 seconds -``` - -**Savings:** $3,078 (99.9%) per transaction! - -#### 2. Multi-currency Treasury - -**One DLE address stores all currencies:** -``` -Treasury DLE: 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C -├── Stablecoins (= fiat currencies): -│ ├── USDT: 500,000 (= $500,000) -│ ├── USDC: 300,000 (= $300,000) -│ ├── EURC: 200,000 (= €200,000) -│ └── XSGD: 100,000 (= S$100,000) -├── Cryptocurrencies: -│ ├── ETH: 100 ($200,000) -│ ├── BTC: 5 ($250,000) -│ └── MATIC: 1,000,000 ($800,000) -└── Tokenized Assets: - ├── Real Estate: $5,000,000 - └── Company Stocks: $2,000,000 -``` - -**Advantages:** -- ✅ No separate accounts -- ✅ Instant conversion (via DEX) -- ✅ Transparent balance for all shareholders -- ✅ Automatic accounting - -#### 3. Automatic Salary and Dividend Payments - -**Traditional Dividend Payment Scheme:** -``` -1. Shareholder Meeting: dividend decision -2. Accountant calculates amounts for each -3. Payment order preparation -4. Send to bank -5. Bank processes: 3-7 days -6. Taxes withheld -7. Payment to shareholders - -TOTAL: 2-4 weeks + errors + fees -``` - -**With DLE:** -```javascript -// One transaction to pay dividends to ALL shareholders -function distributeDividends(uint256 amount) { - // Smart contract automatically: - // 1. Takes USDT from treasury - // 2. Calculates each token holder's share - // 3. Sends proportionally to tokens - // 4. All in 30 seconds! -} -``` - -**Example:** -``` -Company Profit: 1,000,000 USDT -Token Holders: -├── Alice: 600,000 tokens (60%) → 600,000 USDT -├── Bob: 300,000 tokens (30%) → 300,000 USDT -└── Carol: 100,000 tokens (10%) → 100,000 USDT - -One transaction → Everyone received in 30 seconds -Fee: $5 instead of $50-500 -``` - -#### 4. Global Payments Without Restrictions - -**Traditional Payment Problems:** -- 🚫 Sanctions (cannot send money to some countries) -- 📋 Compliance (need documents for each transfer) -- 💸 Limits (amount restrictions) -- ⏰ Delays (banks check each transaction) - -**With Cryptocurrencies:** -- ✅ No geographic restrictions -- ✅ No protocol-level sanctions -- ✅ No amount limits -- ✅ Instant payments - -**Important:** You must still comply with local laws and pay taxes! - ---- - -## Transparency and Trust - -### Trust Problem in Business - -**Typical Distrust Situations:** - -1. **Investors → Founders** - - "Where did our money go?" - - "Why no profit?" - - "Where's the expense report?" - -2. **Partners → Each Other** - - "Did you really invest the promised amount?" - - "Who gets how much dividends?" - - "Why am I not participating in decisions?" - -3. **Clients → Company** - - "Do you really own this asset?" - - "Is my money safe?" - - "Do you have a license?" - -### Solution: Blockchain as Source of Truth - -#### Financial Transparency - -**Every token holder sees in real-time:** - -``` -Treasury (Company Treasury): -├── Assets: -│ ├── 500,000 USDT -│ ├── 10 BTC -│ ├── Real Estate: 3 properties -│ └── Stocks: 10 companies -├── Liabilities: -│ ├── Loan: 100,000 USDT -│ └── Salary Fund: 50,000 USDT/month -└── Operation History: - ├── 2025-10-20: Received 200,000 USDT from client - ├── 2025-10-21: Paid 50,000 USDT salaries - └── 2025-10-22: Bought 2 BTC for 100,000 USDT -``` - -**Impossible:** -- ❌ Hide expenses -- ❌ Withdraw money secretly -- ❌ Forge balance -- ❌ Hide losses - -#### Decision Transparency - -**Every decision recorded forever:** - -``` -Proposal #15: "Buy new office for 5 million" -├── Initiator: Ivan Petrov (0xABC...123) -├── Creation Date: 2025-10-15 -├── Voting Period: 7 days -├── Votes: -│ ├── "For": 62% (6,200,000 tokens) -│ │ └── Owners: [address list] -│ └── "Against": 38% (3,800,000 tokens) -│ └── Owners: [address list] -├── Status: APPROVED ✅ -└── Executed: 2025-10-22 (automatically) -``` - -**Advantages:** -- ✅ Cannot say "I didn't vote for this!" -- ✅ Visible who initiated decision -- ✅ Motivation transparent (connections, interests) -- ✅ Cannot rewrite history - -#### Ownership Transparency - -**Everyone knows who owns what:** - -``` -DLE Token Owners: -├── 0xABC...123 (Ivan Petrov): 600,000 tokens (60%) -├── 0xDEF...456 (Company X): 300,000 tokens (30%) -└── 0xGHI...789 (Fund Y): 100,000 tokens (10%) -``` - -**Automatic Checks:** -- ⚠️ Conflict of Interest: detected -- ⚠️ Related Parties: found -- ⚠️ Ownership Concentration: critical - -### Reputation on Blockchain - -**Each company (DLE) has:** -- ✅ Immutable operation history -- ✅ Partner ratings -- ✅ Public financial indicators -- ✅ Verified assets - -**It's Like:** -- 📊 Credit History (but transparent) -- ⭐ Marketplace Rating (but cannot fake) -- 📜 Audit (but constant and free) - ---- - -## Automation and Cost Reduction - -### Eliminating Intermediaries - -**Who Blockchain Removes from Process:** - -``` -Traditional Transaction: -Company A → Bank A → SWIFT → Bank B → Company B - ↓ ↓ ↓ ↓ ↓ - 3-5% 0.5-1% $25-50 0.5-1% 3-5% - TOTAL: 7-12% fees + 3-7 days - -Blockchain Transaction: -Company A ──────────────────────→ Company B - $0.10-5, 30 seconds -``` - -**Savings on $1,000,000 Turnover:** -- Traditionally: $70,000-120,000 fees -- Blockchain: $100-500 fees -- **Savings: $69,500-119,500 (99%)** - -### Process Automation - -#### 1. Corporate Governance - -**Was (Manual):** -``` -Steps for Decision Making: -1. Proposal Preparation: 2-5 days -2. Lawyer Approval: 3-7 days -3. Shareholder Distribution: 1 day -4. Meeting Convening: 30 days (by law) -5. Voting: 1 day -6. Vote Counting: 1-2 days -7. Protocol Preparation: 3-5 days -8. Decision Registration: 14-30 days - -TOTAL: 55-85 days -Cost: $2,000-10,000 -``` - -**Became (Automatic):** -``` -1. Create Proposal: 5 minutes -2. Voting: 1-7 days (configurable) -3. Automatic Execution: 30 seconds - -TOTAL: 1-7 days -Cost: $2-5 (gas fees) -``` - -#### 2. Dividend Payment - -**Was (Manual):** -``` -1. Determine Dividend Amount: 1 day -2. Calculate Each Shareholder's Share: 2-3 days -3. Payment Order Preparation: 2 days -4. Send to Bank: 1 day -5. Bank Processing: 3-7 days -6. Shareholder Receipt: 1-3 days - -TOTAL: 10-17 days -Cost: $500-2,000 -Errors: 5-10% of transactions -``` - -**Became (Automatic):** -``` -function distributeDividends() { - // One transaction → everyone received -} - -TOTAL: 30 seconds -Cost: $5-20 -Errors: 0% (smart contract math) -``` - -#### 3. Audit and Reporting - -**Was (Manual):** -``` -Annual Audit: -├── Document Collection: 1-2 weeks -├── Auditor Review: 2-4 weeks -├── Corrections: 1-2 weeks -├── Final Report: 1 week -└── Cost: $5,000-50,000 - -+ Quarterly Reporting: another $2,000-10,000/quarter -``` - -**Became (Automatic):** -``` -Blockchain = Constant Audit: -├── Every transaction verified by network -├── Cannot forge data -├── Real-time reports for all -└── Cost: $0 (already included in blockchain) -``` - -**Savings:** $13,000-90,000/year on audit and reporting - -### Smart Contracts Instead of Lawyers - -**What Gets Automated:** - -| Process | Was | Became | -|---------|-----|--------| -| **Conditional Payment** | Escrow ($500-2,000) | Smart Contract ($5) | -| **Multi-party Signatures** | Notary ($100-500) | Multisig ($2-10) | -| **Automatic Payments** | Accountant ($2,000/month) | Smart Contract ($10/month) | -| **Royalty Distribution** | Lawyer ($5,000+) | Smart Contract ($20) | - -**Example: Escrow for Transaction** - -Traditionally: -``` -1. Find Escrow Agent -2. Sign Escrow Agreement -3. Pay Services: $500-2,000 -4. Transfer Money to Agent -5. Condition Check (manual) -6. Payment (3-7 days) -``` - -With Smart Contract: -```solidity -contract Escrow { - // Money locked until condition met - if (condition_met) { - send_money_to_seller(); - } else if (deadline_expired) { - return_money_to_buyer(); - } -} -``` -Cost: $5, automatic execution in 30 seconds - ---- - -## Practical Cases - -### Case 1: Startup Attracts Investment - -**Situation:** -Technology startup seeking $500,000 investment. - -**Traditional Path:** -``` -1. Investor Search: 6-12 months -2. Due Diligence: 2-3 months -3. Negotiations and Valuation: 1-2 months -4. Legal Formalities: 1-2 months - ├── Charter Changes - ├── Stock Issue - └── Tax Office Registration -5. Process Cost: - ├── Lawyers: $20,000-50,000 - ├── Appraisers: $5,000-10,000 - ├── Registration: $2,000-5,000 - └── TOTAL: $27,000-65,000 - -TOTAL: 10-19 months + $27,000-65,000 -``` - -**With DLE on Blockchain:** -``` -1. Create DLE: 1 day - ├── Issue 10,000,000 tokens - ├── Founders Keep: 7,000,000 (70%) - └── For Investors: 3,000,000 (30%) - -2. Token Placement: - ├── Launchpad on DEX - ├── Price: $0.167 per token - ├── Sold in: 3 days - └── Received: $500,000 - -3. Process Cost: - ├── Smart Contract Deploy: $100 - ├── DEX Listing: $500 - └── TOTAL: $600 - -TOTAL: 4 days + $600 -``` - -**Result:** -- ⚡ 90x faster -- 💰 45-100x cheaper -- 🌍 Access to global investors -- ✅ Instant token liquidity - -### Case 2: Real Estate Fund - -**Situation:** -Investment fund owns office building worth $10,000,000. Wants to raise funds for new project. - -**Traditional Path:** -``` -Options: -1. Bank Loan Secured: - ├── Rate: 12-18% - ├── Processing Time: 2-3 months - └── Appraisal + Lawyer Cost: $50,000 - -2. Sell Building Entirely: - ├── Sale Time: 6-18 months - ├── Agent Commission: 3-5% ($300,000-500,000) - └── Loses Asset - -3. Attract Fund Investors: - ├── Fund Creation: $50,000-200,000 - ├── Time: 6-12 months - └── Annual Maintenance: $20,000-50,000 -``` - -**With Tokenization via DLE:** -``` -1. Building Tokenization: - ├── Issue 10,000,000 tokens - ├── 1 token = $1 of building value - └── Time: 1 day - -2. Sell 30% of Tokens: - ├── 3,000,000 tokens on DEX - ├── Price: $1 per token - ├── Sold in: 2 weeks - └── Received: $3,000,000 - -3. Rental Payments: - ├── Rent: $100,000/month - ├── Automatic Distribution: - │ ├── 70% ($70,000) → fund - │ └── 30% ($30,000) → token holders - └── Payments: monthly, automatic - -4. Cost: - ├── Tokenization: $500 - ├── Listing: $500 - └── TOTAL: $1,000 -``` - -**Result:** -- ⚡ Got $3M in 2 weeks -- 💰 Kept asset (own 70%) -- 📈 Passive income continues -- 🔄 Can buy back tokens -- 💸 Cost $1,000 vs $50,000-200,000 - -### Case 3: Music Label - -**Situation:** -Independent music label wants to release new artist's album. - -**Traditional Path:** -``` -1. Investment Search for Recording: - ├── Need: $50,000 - ├── Sources: bank, investors - ├── Terms: 50% royalties to investors - └── Search Time: 3-6 months - -2. Album Release: - ├── Recording: $30,000 - ├── Promotion: $20,000 - └── Time: 3-6 months - -3. Streaming Revenue: - ├── Spotify: $0.003-0.005 per play - ├── Platforms Take: 30% - ├── Label: 35% - ├── Investors: 35% - └── Artist: 30% - -TOTAL: 6-12 months, artist gets only 30% -``` - -**With Tokenization via DLE:** -``` -1. Create DLE for Album: - ├── Issue 1,000,000 tokens - ├── Artist Keeps: 500,000 (50%) - ├── Sell to Fans: 500,000 at $0.10 - └── Received: $50,000 in 1 week - -2. Album Release: - ├── Recording: $30,000 - ├── Promotion: $20,000 - └── Time: 3-6 months - -3. Streaming Revenue: - ├── Revenue: $10,000/month - ├── Automatic Distribution: - │ ├── 50% ($5,000) → artist - │ └── 50% ($5,000) → token holders (fans) - └── Payments: monthly, automatic - -4. Bonuses: - ├── Fans earn from artist's success - ├── Tokens can be resold (secondary market) - ├── Artist directly connected to fans - └── All revenue transparency -``` - -**Result:** -- ⚡ Got investment in week -- 💰 Artist gets 50% instead of 30% -- 🎵 Fans earn together with artist -- 🔄 Token liquidity on secondary market - -### Case 4: Agribusiness (Crop Tokenization) - -**Situation:** -Farm grows wheat. Needs money for planting (April), harvest in August. - -**Traditional Path:** -``` -1. Bank Loan: - ├── Amount: $200,000 - ├── Rate: 15% annual - ├── Loan Term: 6 months - ├── Interest: $15,000 - └── Processing Time: 1 month - -2. Risks: - ├── Crop Failure → cannot pay loan - ├── Price Drop → losses - └── Bankruptcy -``` - -**With Crop Tokenization via DLE:** -``` -1. April (Planting): - ├── Harvest Forecast: 1,000 tons of wheat - ├── Issue 1,000,000 tokens - ├── 1 token = 1 kg of wheat - ├── Token Price: $0.25 (current price + 10%) - └── Sell 800,000 tokens → $200,000 - -2. August (Harvest): - ├── Harvested: 1,000 tons - ├── Price Rose to $0.30/kg - ├── Token Holders Can: - │ ├── Get Physical Wheat - │ ├── Sell Tokens at $0.30 - │ └── Earn: 20% in 4 months - └── Farmer Got Money Without Loan - -3. Advantages: - ├── No Interest (0% vs 15%) - ├── Crop Risk Shared with Investors - ├── Direct Connection with Buyers - └── Entire Supply Chain Transparency -``` - -**Result:** -- 💰 Saved $15,000 on interest -- 🌾 Risks shared with investors -- 📈 Investors earned 20% in 4 months -- 🔗 Transparent supply chain - ---- - -## Economic Impact - -### Savings Calculation for Typical Business - -**Initial Data:** -- Turnover: $1,000,000/year -- Employees: 10 people -- Shareholders: 5 people -- International Operations: 20% of turnover - -#### 1. Banking Fee Savings - -``` -Traditionally: -├── Account Maintenance: $1,200/year -├── Domestic Transactions: 1% × $800,000 = $8,000 -├── International Transfers: 5% × $200,000 = $10,000 -├── SWIFT Fees: 50 transfers × $35 = $1,750 -├── Currency Conversion: 3% × $200,000 = $6,000 -└── TOTAL: $26,950/year - -With DLE (Crypto): -├── Gas Fees: $1,000/year -├── RPC Providers: $200/year -└── TOTAL: $1,200/year - -SAVINGS: $25,750/year (96%) -``` - -#### 2. Corporate Governance Savings - -``` -Traditionally: -├── Accountant: $24,000/year -├── Lawyer (Corporate Law): $15,000/year -├── Notary (Meetings, Transactions): $2,000/year -├── Shareholder Registry: $3,000/year -├── Audit: $10,000/year -└── TOTAL: $54,000/year - -With DLE: -├── Automation via Smart Contracts -├── Accountant (Taxes Only): $12,000/year -└── TOTAL: $12,000/year - -SAVINGS: $42,000/year (78%) -``` - -#### 3. Investment Attraction Savings - -``` -Traditionally (One Deal): -├── Lawyers: $30,000 -├── Appraisers: $7,000 -├── Due Diligence: $10,000 -├── Change Registration: $3,000 -└── TOTAL: $50,000 - -With DLE (Token Issue): -├── Smart Contract Deploy: $100 -├── DEX Listing: $500 -└── TOTAL: $600 - -SAVINGS: $49,400 per deal (99%) -``` - -#### 4. Time Savings (Opportunity Cost) - -``` -Traditionally: -├── Decision Making: 2-3 months -├── Dividend Payment: 2-3 weeks -├── Investment Attraction: 6-12 months -└── International Transfers: 3-7 days - -With DLE: -├── Decision Making: 1-7 days -├── Dividend Payment: 30 seconds -├── Investment Attraction: 1-14 days -└── International Transfers: 30 seconds - -Time Value Estimate: -├── 10 months saved × $100,000 turnover/month -└── Additional Profit: $1,000,000 -``` - -### Total Annual Savings - -``` -┌─────────────────────────────────────────────┐ -│ ECONOMIC IMPACT FOR BUSINESS WITH │ -│ $1,000,000/YEAR TURNOVER │ -├─────────────────────────────────────────────┤ -│ Banking Fees: -$25,750 │ -│ Corporate Governance: -$42,000 │ -│ Investment Attraction: -$49,400 │ -│ ──────────────────────────────────────── │ -│ TOTAL SAVINGS: $117,150/year │ -│ │ -│ + Additional Profit from Speed: │ -│ ~$1,000,000 (missed opportunities) │ -│ │ -│ TOTAL IMPACT: $1,117,150 │ -├─────────────────────────────────────────────┤ -│ ROI: 1,117% on DLE Investment │ -│ Payback: < 1 month │ -└─────────────────────────────────────────────┘ -``` - -### Comparison with Competitors - -| Solution | Cost/Year | Transaction Fees | Speed | Transparency | -|----------|-----------|------------------|-------|--------------| -| **Traditional Business** | $54,000+ | 3-7% | 3-7 days | ❌ Low | -| **SaaS Solutions** | $12,000-60,000 | 2-5% | 1-3 days | ⚠️ Medium | -| **DLE on Blockchain** | $1,200-3,000 | 0.01-0.5% | 30 sec | ✅ Full | - ---- - -## Conclusion - -### Why Blockchain is the Future of Business? - -Digital Legal Entity on blockchain solves fundamental problems of modern business: - -1. **🏦 Financial Freedom** - - Operations without banks - - Instant transfers worldwide - - Minimal fees (99% savings) - - No geographic restrictions - -2. **🔑 Universal Identity** - - One smart contract address = all identifiers - - Replaces Tax ID, bank account, email, phone - - Cryptographic protection from forgery - -3. **💰 Asset Tokenization** - - Any asset becomes liquid - - Fractional ownership (from $1) - - Global market 24/7 - - Automatic income - -4. **🗳️ Transparent Management** - - Every shareholder sees everything - - Cannot hide decisions - - Automatic execution - - Protection from corruption - -5. **⚡ Automation** - - Smart contracts instead of lawyers - - Automatic payments - - Eliminates human errors - - 90-99% time and money savings - -### Economic Benefit - -For business with $1M/year turnover: -- 💰 **Savings: $117,000/year** (on fees and management) -- ⚡ **Additional Profit: ~$1,000,000** (from speed) -- 📈 **ROI: 1,117%** on DLE implementation -- 🎯 **Payback: < 1 month** - -### Start Now! - -1. 📖 **[Study FAQ](./FAQ.md)** - answers to popular questions -2. 🚀 **[Install DLE](./setup-instruction.md)** - step-by-step guide -3. 🔗 **[Configure Blockchain](./blockchain-integration-technical.md)** - technical documentation -4. 💬 **[Get Support](https://hb3-accelerator.com/)** - we'll help! - ---- - -## Additional Resources - -### Documentation -- 📋 [FAQ](./FAQ.md) -- 🔧 [Installation](./setup-instruction.md) -- 🔗 [Blockchain Technical Documentation](./blockchain-integration-technical.md) -- 📝 [Terms of Service](./service-terms.md) - -### Support -- 💬 **Support Chat**: https://hb3-accelerator.com/ -- 📧 **Email**: info@hb3-accelerator.com -- 🌐 **Website**: https://hb3-accelerator.com - ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - -**Last Updated**: October 2025 - diff --git a/docs-en/blockchain-integration-technical.md b/docs-en/blockchain-integration-technical.md deleted file mode 100644 index dd4bbc6..0000000 --- a/docs-en/blockchain-integration-technical.md +++ /dev/null @@ -1,1049 +0,0 @@ -# Digital Legal Entity (DLE) Blockchain Integration - -## 📋 Table of Contents - -1. [Introduction](#introduction) -2. [Smart Contract Architecture](#smart-contract-architecture) -3. [Main DLE Contract](#main-dle-contract) -4. [Modular System](#modular-system) -5. [Multichain Architecture](#multichain-architecture) -6. [Voting System (Governance)](#voting-system-governance) -7. [Smart Contract Deployment](#smart-contract-deployment) -8. [Wallet Authentication](#wallet-authentication) -9. [Frontend Integration](#frontend-integration) -10. [Security](#security) -11. [Practical Examples](#practical-examples) - ---- - -## Introduction - -Digital Legal Entity (DLE) uses blockchain technologies to provide **tokenized governance** (similar to a joint-stock company on blockchain) and **transparent decision-making** through smart contracts. - -### Why Blockchain in DLE? - -1. **🗳️ Governance Like Joint-Stock Company** - decisions made by token holders through blockchain voting -2. **🔒 Transparency** - all votes and operations recorded on blockchain -3. **🛡️ Censorship Resistance** - smart contract guarantees token holder rights -4. **📜 Immutability** - decision history is unchangeable -5. **🌐 Multichain Support** - work in multiple blockchains simultaneously - -### DLE Governance Model - -DLE uses a **hybrid governance model**: - -| Aspect | Implementation | -|--------|----------------| -| **Voting** | Token holders (like shareholders) | -| **Quorum** | 51%+ tokens for decision making | -| **Asset Distribution** | Through voting (like in JSC) | -| **Parameter Changes** | Through token holder voting | -| **Application Code** | Proprietary (author) | -| **Updates** | Author develops, token holders vote on priorities | - -This is a **tokenized joint-stock company on blockchain**, where: -- ✅ Parameter management - through token holder voting (like shareholders) -- ✅ Asset distribution - through voting (like in JSC) -- ⚠️ Code development - centralized (author) -- ⚠️ Update releases - author (based on voting priorities) - -### Supported Blockchains - -DLE works with any **EVM-compatible** networks: -- ✅ Ethereum (mainnet & testnets: Sepolia, Holesky) -- ✅ Polygon (mainnet & testnets) -- ✅ Arbitrum (One & Sepolia) -- ✅ Binance Smart Chain (BSC) -- ✅ Base (mainnet & Sepolia) -- ✅ And any other EVM networks - ---- - -## Smart Contract Architecture - -### System Overview - -``` -┌─────────────────────────────────────────────────────────────┐ -│ DLE Ecosystem │ -├─────────────────────────────────────────────────────────────┤ -│ │ -│ ┌─────────────────────────────────────────────────────┐ │ -│ │ DLE Core Contract (ERC20Votes) │ │ -│ │ • Governance Tokens (ERC20) │ │ -│ │ • Voting (ERC20Votes) │ │ -│ │ • Signatures (ERC20Permit) │ │ -│ │ • Proposals │ │ -│ │ • Multichain Support │ │ -│ └─────────────────────────────────────────────────────┘ │ -│ ↕ │ -│ ┌──────────────────────────────────────────────────────┐ │ -│ │ Modules (Extensions) │ │ -│ ├──────────────────────────────────────────────────────┤ │ -│ │ • HierarchicalVotingModule │ │ -│ │ - Voting in other DLEs │ │ -│ │ - Owning tokens of other DLEs │ │ -│ │ │ │ -│ │ • TreasuryModule │ │ -│ │ - Treasury Management │ │ -│ │ - Token Storage │ │ -│ │ │ │ -│ │ • TimelockModule │ │ -│ │ - Delayed Execution │ │ -│ │ - Protection from Instant Changes │ │ -│ └──────────────────────────────────────────────────────┘ │ -│ ↕ │ -│ ┌──────────────────────────────────────────────────────┐ │ -│ │ DLEReader (Data Reader) │ │ -│ │ • Batch Data Reading │ │ -│ │ • RPC Query Optimization │ │ -│ └──────────────────────────────────────────────────────┘ │ -└─────────────────────────────────────────────────────────────┘ -``` - -### Standards and Libraries - -DLE uses proven **OpenZeppelin** standards: - -| Standard | Purpose | -|----------|---------| -| **ERC20** | Basic token functionality | -| **ERC20Votes** | Voting with snapshots | -| **ERC20Permit** | Signatures without gas (meta-transactions) | -| **ReentrancyGuard** | Reentrancy protection | -| **ECDSA** | Signature verification | - ---- - -## Main DLE Contract - -### Contract Structure - -File: `backend/contracts/DLE.sol` - -```solidity -contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard, IMultichainMetadata { - // Main DLE Data - struct DLEInfo { - string name; // Organization name - string symbol; // Token symbol - string location; // Location - string coordinates; // GPS coordinates - uint256 jurisdiction; // Jurisdiction - string[] okvedCodes; // OKVED codes - uint256 kpp; // KPP (for Russia) - uint256 creationTimestamp; - bool isActive; - } - - // Voting Proposal - struct Proposal { - uint256 id; - string description; - uint256 forVotes; // "For" votes - uint256 againstVotes; // "Against" votes - bool executed; - bool canceled; - uint256 deadline; - address initiator; - bytes operation; // Operation to execute - uint256 governanceChainId; // Voting network - uint256[] targetChains; // Target networks for execution - uint256 snapshotTimepoint; - mapping(address => bool) hasVoted; - } -} -``` - -### Key Capabilities - -#### 1. Governance Tokens (ERC20) - -DLE tokens represent **voting rights** in governance: -- 1 token = 1 vote -- Tokens **NOT transferable** by normal methods (only through governance) -- EIP-712 signatures for meta-transactions - -```solidity -// Token Transfers BLOCKED -function transfer(address, uint256) public pure override returns (bool) { - revert ErrTransfersDisabled(); -} - -// Approvals BLOCKED -function approve(address, uint256) public pure override returns (bool) { - revert ErrApprovalsDisabled(); -} -``` - -#### 2. Voting (ERC20Votes) - -Uses **snapshots** of votes: -- Flash-loan protection -- Votes taken from past block -- Delegation (optional) - -```solidity -function getPastVotes(address account, uint256 timepoint) public view returns (uint256) -``` - -#### 3. Multichain Support - -DLE can be deployed in **multiple networks simultaneously**: -- One address in all networks (deterministic deployment) -- Voting in one network (governance chain) -- Execution in any target networks - -```solidity -// Supported Networks -mapping(uint256 => bool) public supportedChains; -uint256[] public supportedChainIds; - -// Add Network (only through voting) -function _addSupportedChain(uint256 _chainId) internal { - require(!supportedChains[_chainId], "Chain already supported"); - supportedChains[_chainId] = true; - supportedChainIds.push(_chainId); - emit ChainAdded(_chainId); -} -``` - -#### 4. Modular Architecture - -DLE supports **extensions through modules**: - -```solidity -// Modules -mapping(bytes32 => address) public modules; -mapping(bytes32 => bool) public activeModules; - -// Add Module (only through voting) -function _addModule(bytes32 _moduleId, address _moduleAddress) internal { - if (_moduleAddress == address(0)) revert ErrZeroAddress(); - if (activeModules[_moduleId]) revert ErrProposalExecuted(); - - modules[_moduleId] = _moduleAddress; - activeModules[_moduleId] = true; - - emit ModuleAdded(_moduleId, _moduleAddress); -} -``` - -### Operations Available Through Voting - -| Operation | Description | -|-----------|-------------| -| `_addModule` | Add new module | -| `_removeModule` | Remove module | -| `_addSupportedChain` | Add blockchain | -| `_removeSupportedChain` | Remove blockchain | -| `_transferTokens` | Transfer tokens | -| `_updateDLEInfo` | Update DLE information | -| `_updateQuorumPercentage` | Change quorum | -| `_updateVotingDurations` | Change voting duration | - ---- - -## Modular System - -### 1. HierarchicalVotingModule - -**Purpose**: Hierarchical Voting - DLE can vote in other DLEs. - -**File**: `backend/contracts/HierarchicalVotingModule.sol` - -**Capabilities**: -- ✅ DLE can own tokens of other DLEs -- ✅ Vote in other DLEs on its behalf -- ✅ Create proposals in other DLEs -- ✅ Track voting chain - -```solidity -struct ExternalDLEInfo { - address dleAddress; - string name; - string symbol; - uint256 tokenBalance; // Balance of tokens of this DLE - bool isActive; - uint256 addedAt; -} - -// Add External DLE -function addExternalDLE( - address dleAddress, - string memory name, - string memory symbol -) external onlyDLE; - -// Create Proposal in External DLE -function createProposalInExternalDLE( - address externalDLE, - string calldata description, - uint256 duration, - bytes calldata operation, - uint256 chainId -) external onlyDLE returns (uint256); -``` - -**Usage Example**: -```javascript -// DLE-A owns tokens of DLE-B -// DLE-A can vote in DLE-B automatically -const hierarchicalModule = await ethers.getContractAt('HierarchicalVotingModule', moduleAddress); -await hierarchicalModule.voteInExternalDLE(dleBAddress, proposalId, true); -``` - -### 2. TreasuryModule - -**Purpose**: Treasury and asset management for DLE. - -**File**: `backend/contracts/TreasuryModule.sol` - -**Capabilities**: -- ✅ Token and asset storage -- ✅ Management through token holder voting -- ✅ Payment sending -- ✅ Income accumulation - -```solidity -// Transfer Tokens from Treasury (only through DLE voting) -function transferTokens( - address token, - address recipient, - uint256 amount -) external onlyDLE; - -// Get Token Balance in Treasury -function getTokenBalance(address token) external view returns (uint256); -``` - -**Usage Example**: -```javascript -// Create Proposal for Treasury Payment -const operation = treasuryModule.interface.encodeFunctionData('transferTokens', [ - tokenAddress, - recipientAddress, - ethers.parseEther('100') -]); - -await dleContract.createProposal( - 'Pay 100 tokens for marketing', - 86400, // 24 hours - operation, - chainId, - [chainId] -); -``` - -### 3. TimelockModule - -**Purpose**: Delayed operation execution for security. - -**File**: `backend/contracts/TimelockModule.sol` - -**Capabilities**: -- ✅ Delay before execution (timelock) -- ✅ Cancellation possibility before execution -- ✅ Protection from instant changes - -```solidity -struct TimelockProposal { - uint256 proposalId; - uint256 executionTime; // Time when can execute - bytes32 operationHash; - bool executed; - bool canceled; -} - -// Create Timelock Proposal -function scheduleProposal( - uint256 proposalId, - bytes calldata operation, - uint256 delay -) external onlyDLE returns (bytes32); - -// Execute After Timelock Expires -function executeTimelockProposal(bytes32 operationHash) external; -``` - -### 4. DLEReader - -**Purpose**: Optimized data reading from contracts. - -**File**: `backend/contracts/DLEReader.sol` - -**Capabilities**: -- ✅ Batch reading of multiple data in one RPC query -- ✅ Get detailed DLE information -- ✅ List all proposals with details -- ✅ Gas optimization for reading - -```solidity -// Get Full DLE Information in One Query -function getDLEFullInfo(address dleAddress) external view returns ( - string memory name, - string memory symbol, - uint256 totalSupply, - DLEInfo memory info, - uint256 proposalCount, - // ... and other data -); - -// Get All Proposals (batch read) -function getAllProposals(address dleAddress) external view returns (ProposalInfo[] memory); -``` - ---- - -## Multichain Architecture - -### Concept - -DLE supports **deterministic deployment** - one address in all networks: - -``` -Ethereum: 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C -Polygon: 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C ← Same address! -Arbitrum: 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C -BSC: 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C -``` - -### How It Works? - -1. **Init Code Generation** - same bytecode for all networks -2. **Fixed Nonce** - deployment from same nonce -3. **CREATE Opcode** - address = keccak256(deployerAddress, nonce) -4. **Result** - same address in all networks - -### Voting in One Network - -**Voting** happens in **one network** (governance chain), and **execution** - in any target networks: - -``` -┌─────────────────────────────────────────────────────────┐ -│ Ethereum (Governance Chain) │ -│ 1. Proposal Creation │ -│ 2. Voting │ -│ 3. Vote Counting │ -│ 4. Signature Generation for Execution │ -└─────────────────────────────────────────────────────────┘ - ↓ - ┌───────────────┴───────────────┐ - ↓ ↓ -┌───────────────────┐ ┌───────────────────┐ -│ Polygon │ │ Arbitrum │ -│ (Target Chain) │ │ (Target Chain) │ -│ 5. Execution │ │ 5. Execution │ -│ with Signature│ │ with Signature│ -└───────────────────┘ └───────────────────┘ -``` - -### Multichain Execution - -Execution through **signatures** (off-chain coordination): - -```solidity -function executeWithSignatures( - uint256 proposalId, - bytes32 operationHash, - address[] calldata signers, - bytes[] calldata signatures -) external nonReentrant; -``` - -**Process**: -1. Proposal approved in governance network -2. Token holder signatures generated -3. Signatures passed to target networks -4. Contract verifies signatures and executes operation - ---- - -## Voting System (Governance) - -### Creating Proposal - -```solidity -function createProposal( - string calldata _description, - uint256 _duration, - bytes calldata _operation, - uint256 _chainId, - uint256[] calldata _targetChains, - address _initiator -) external returns (uint256); -``` - -**Parameters**: -- `_description` - proposal description -- `_duration` - voting duration (in seconds) -- `_operation` - operation to execute (encoded function call) -- `_chainId` - network ID for voting -- `_targetChains` - target networks for execution -- `_initiator` - initiator address - -**Example** (backend): -```javascript -const { ethers } = require('ethers'); - -// Operation: add module -const operation = dleContract.interface.encodeFunctionData('_addModule', [ - ethers.id('TIMELOCK_MODULE'), // moduleId - timelockModuleAddress -]); - -// Create Proposal -const tx = await dleContract.createProposal( - 'Add Timelock Module for Protection', - 86400 * 3, // 3 days - operation, - 1, // Ethereum mainnet - [1, 137, 42161], // Ethereum, Polygon, Arbitrum - walletAddress -); - -const receipt = await tx.wait(); -const proposalId = receipt.events[0].args.proposalId; -``` - -### Voting - -```solidity -function vote(uint256 _proposalId, bool _support) external; -``` - -**Parameters**: -- `_proposalId` - proposal ID -- `_support` - true = "For", false = "Against" - -**Example** (frontend): -```javascript -// Connect to Contract -const dleContract = new ethers.Contract(dleAddress, dleAbi, signer); - -// Vote "For" -await dleContract.vote(proposalId, true); - -// Vote "Against" -await dleContract.vote(proposalId, false); -``` - -### Proposal Execution - -```solidity -function execute(uint256 _proposalId) external nonReentrant; -``` - -**Execution Conditions**: -1. ✅ Voting completed (deadline passed) -2. ✅ Quorum reached (e.g., 10% of tokens voted) -3. ✅ More "For" votes than "Against" -4. ✅ Proposal not yet executed - -**Example**: -```javascript -// Check if Can Execute -const proposal = await dleContract.proposals(proposalId); -const canExecute = ( - proposal.deadline < Date.now() / 1000 && - !proposal.executed && - proposal.forVotes > proposal.againstVotes -); - -if (canExecute) { - await dleContract.execute(proposalId); -} -``` - -### Quorum - -Quorum determines **minimum number of votes** for decision making: - -```solidity -uint256 public quorumPercentage; // Percentage of totalSupply (e.g., 10%) - -function _hasQuorum(uint256 _forVotes, uint256 _againstVotes) internal view returns (bool) { - uint256 totalVotes = _forVotes + _againstVotes; - uint256 requiredVotes = (totalSupply() * quorumPercentage) / 100; - return totalVotes >= requiredVotes; -} -``` - -**Changing Quorum** (only through voting): -```javascript -const operation = dleContract.interface.encodeFunctionData('_updateQuorumPercentage', [ - 15 // New quorum 15% -]); - -await dleContract.createProposal( - 'Increase Quorum to 15%', - 86400 * 7, - operation, - chainId, - [chainId] -); -``` - ---- - -## Smart Contract Deployment - -### Multichain Deployment - -**Script**: `backend/scripts/deploy/deploy-multichain.js` - -**Capabilities**: -- ✅ Deployment to multiple networks simultaneously (parallel) -- ✅ Deterministic address (one address in all networks) -- ✅ Automatic contract verification -- ✅ Retry logic on errors -- ✅ Nonce management for synchronization - -**Run**: -```bash -cd backend -yarn deploy:multichain -``` - -**Configuration** (database): -Deployment parameters stored in `settings` table: -- `supported_chain_ids` - list of network IDs for deployment -- `rpc_providers` - RPC URLs for each network -- `dle_config` - DLE configuration (name, symbol, partners, etc.) - -**Configuration Example**: -```json -{ - "name": "My Company DLE", - "symbol": "MYCO", - "location": "Moscow, Russia", - "coordinates": "55.7558,37.6173", - "jurisdiction": 643, - "okvedCodes": ["62.01", "62.02"], - "kpp": 770401001, - "quorumPercentage": 10, - "initialPartners": ["0x742d35..."], - "initialAmounts": [1000000], - "supportedChainIds": [1, 137, 42161] -} -``` - -### Module Deployment - -**Script**: `backend/scripts/deploy/deploy-modules.js` - -**Run**: -```bash -cd backend -yarn deploy:modules -``` - -**Process**: -1. Load DLE address from database -2. Parallel deployment of all modules in all networks -3. CREATE2 deployment for deterministic addresses -4. Automatic verification -5. Save module addresses to database - -### Contract Verification - -**Automatic Verification** via Etherscan API: - -```javascript -async function verifyDLEAfterDeploy(chainId, contractAddress, constructorArgs, apiKey, params) { - await hre.run("verify:verify", { - address: contractAddress, - constructorArguments: constructorArgs, - contract: "contracts/DLE.sol:DLE" - }); -} -``` - -**Supported Scanners**: -- Etherscan (Ethereum, Sepolia, Holesky) -- Polygonscan -- Arbiscan -- BSCScan -- Basescan - ---- - -## Wallet Authentication - -### SIWE (Sign-In with Ethereum) - -DLE uses **SIWE** standard for authentication: - -**File**: `backend/routes/auth.js` - -**Authentication Process**: - -``` -┌──────────────┐ ┌──────────────┐ -│ Frontend │ │ Backend │ -└──────┬───────┘ └──────┬───────┘ - │ │ - │ 1. Request nonce │ - ├──────────────────────────────────>│ - │ │ - │ 2. Return nonce │ - │<──────────────────────────────────┤ - │ │ - │ 3. Sign Message in Wallet │ - │ (Private Key NOT Transferred!) │ - │ │ - │ 4. Send Signature │ - ├──────────────────────────────────>│ - │ │ - │ 5. Verify Signature - │ 6. Check Tokens - │ 7. Create Session - │ │ - │ 8. Successful Authentication │ - │<──────────────────────────────────┤ - │ │ -``` - -### Request Nonce - -```javascript -// POST /api/auth/nonce -app.post('/api/auth/nonce', async (req, res) => { - const { address } = req.body; - - // Generate Random Nonce - const nonce = crypto.randomBytes(32).toString('hex'); - - // Save to DB with Encryption - await db.query( - 'INSERT INTO nonces (identity_value_encrypted, nonce_encrypted, expires_at) VALUES ($1, $2, $3)', - [encrypt(address.toLowerCase()), encrypt(nonce), expiresAt] - ); - - res.json({ nonce }); -}); -``` - -### Signature Verification - -```javascript -// POST /api/auth/verify -app.post('/api/auth/verify', async (req, res) => { - const { address, signature, nonce } = req.body; - - // Form SIWE Message - const message = new SiweMessage({ - domain: req.get('host'), - address: ethers.getAddress(address), - statement: 'Sign in with Ethereum to the app.', - uri: req.get('origin'), - version: '1', - chainId: 1, - nonce: nonce - }); - - // Verify Signature - const isValid = await verifySignature( - message.prepareMessage(), - signature, - address - ); - - if (!isValid) { - return res.status(401).json({ error: 'Invalid signature' }); - } - - // Check Tokens in Smart Contract - const userAccessLevel = await getUserAccessLevel(address); - - // Create Session - req.session.userId = userId; - req.session.address = address; - req.session.authenticated = true; - req.session.userAccessLevel = userAccessLevel; - - res.json({ success: true, userAccessLevel }); -}); -``` - -### Access Level Check - -```javascript -async function getUserAccessLevel(address) { - // Get DLE Contract Address from Settings - const dleAddress = await getSettingValue('contract_address'); - if (!dleAddress) { - return { level: 'user', tokenCount: 0, hasAccess: false }; - } - - // Connect to Contract - const dleContract = new ethers.Contract(dleAddress, dleAbi, provider); - - // Get Token Balance - const tokenCount = await dleContract.balanceOf(address); - - // Access Thresholds from Settings - const editorThreshold = await getSettingValue('editor_token_threshold') || 100; - const readonlyThreshold = await getSettingValue('readonly_token_threshold') || 1; - - // Determine Access Level - if (tokenCount >= editorThreshold) { - return { level: 'editor', tokenCount, hasAccess: true }; - } else if (tokenCount >= readonlyThreshold) { - return { level: 'readonly', tokenCount, hasAccess: true }; - } else { - return { level: 'user', tokenCount: 0, hasAccess: false }; - } -} -``` - ---- - -## Frontend Integration - -### Wallet Connection - -**File**: `frontend/src/services/web3Service.js` - -```javascript -import { ethers } from 'ethers'; - -export async function connectWallet() { - if (!window.ethereum) { - throw new Error('MetaMask not installed'); - } - - // Request Wallet Access - await window.ethereum.request({ method: 'eth_requestAccounts' }); - - // Create Provider - const provider = new ethers.BrowserProvider(window.ethereum); - const signer = await provider.getSigner(); - const address = await signer.getAddress(); - - return { provider, signer, address }; -} -``` - -### Message Signing - -```javascript -export async function signMessage(signer, message) { - try { - const signature = await signer.signMessage(message); - return signature; - } catch (error) { - throw new Error('User rejected signature'); - } -} -``` - -### Authentication - -```javascript -import axios from 'axios'; - -export async function authenticateWithWallet(address, signer) { - // 1. Get Nonce - const { data } = await axios.post('/api/auth/nonce', { address }); - const { nonce } = data; - - // 2. Form SIWE Message - const message = `Sign in with Ethereum to the app.\n\nNonce: ${nonce}`; - - // 3. Sign - const signature = await signMessage(signer, message); - - // 4. Send for Verification - const response = await axios.post('/api/auth/verify', { - address, - signature, - nonce, - issuedAt: new Date().toISOString() - }); - - return response.data; -} -``` - -### Contract Interaction - -```javascript -import { ethers } from 'ethers'; -import dleAbi from '@/contracts/DLE.json'; - -export async function getDLEContract(address, signerOrProvider) { - return new ethers.Contract(address, dleAbi.abi, signerOrProvider); -} - -// Create Proposal -export async function createProposal(contract, description, duration, operation, chainId) { - const tx = await contract.createProposal( - description, - duration, - operation, - chainId, - [chainId] - ); - - const receipt = await tx.wait(); - return receipt; -} - -// Vote -export async function voteOnProposal(contract, proposalId, support) { - const tx = await contract.vote(proposalId, support); - await tx.wait(); -} - -// Get Proposal Information -export async function getProposal(contract, proposalId) { - const proposal = await contract.proposals(proposalId); - return { - id: proposal.id.toString(), - description: proposal.description, - forVotes: ethers.formatEther(proposal.forVotes), - againstVotes: ethers.formatEther(proposal.againstVotes), - executed: proposal.executed, - deadline: new Date(proposal.deadline * 1000) - }; -} -``` - -### Vue Component for Voting - -```vue - - - {{ proposal.description }} - - For: {{ proposal.forVotes }} - Against: {{ proposal.againstVotes }} - - - Vote "For" - Vote "Against" - - - - - - - -``` - ---- - -## Security - -> 💡 **Detailed Information**: See [DLE Security](./security.md) - detailed description of all protection levels, attack scenarios, and security recommendations. - -### Brief Technical Overview - -**Key Smart Contract Security Principles:** -- 🔒 **ReentrancyGuard** - reentrancy protection -- 🚫 **Transfer Blocking** - tokens transfer only through governance -- 📸 **Vote Snapshots** - flash-loan attack protection -- ✍️ **EIP-712 Signatures** - contract wallet support -- ✅ **Parameter Validation** - all input data validation -- 💰 **Custom Errors** - gas savings on errors - -**Implementation Examples:** - -```solidity -// Reentrancy Protection -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; - -contract DLE is ReentrancyGuard { - function execute(uint256 _proposalId) external nonReentrant { - // Operation protected from reentrancy - } -} - -// Token Transfer Blocking -function transfer(address, uint256) public pure override returns (bool) { - revert ErrTransfersDisabled(); -} - -// Vote Snapshots -uint256 public snapshotTimepoint = block.number - 1; - -function vote(uint256 _proposalId, bool _support) external { - uint256 votingPower = getPastVotes(msg.sender, snapshotTimepoint); - require(votingPower > 0, "No voting power"); -} -``` - ---- - -## Practical Examples - -> 💡 **Detailed Examples and Cases**: See [Blockchain for Business](./blockchain-for-business.md) - detailed description of real business cases, economic calculations, and practical DLE usage examples. - -### Brief Technical Overview - -**Main Usage Scenarios:** - -1. **Multichain Deployment** - DLE deployment in multiple networks simultaneously -2. **Module Addition** - functionality extension through voting -3. **Hierarchical Voting** - DLE can vote in other DLEs -4. **Treasury Management** - fund distribution through token holder voting ---- - -## Conclusion - -Blockchain integration in DLE provides: -- ✅ **Governance Like Joint-Stock Company** - token holders vote on decisions -- ✅ **Transparency** of all decisions on blockchain -- ✅ **Multichain Support** for work in multiple networks -- ✅ **Modular Architecture** for functionality extension -- ✅ **Security** through proven OpenZeppelin standards - -### Additional Resources - -- 📖 [Main README](../README.md) -- 📋 [FAQ](./FAQ.md) -- 🔧 [Installation Instructions](./setup-instruction.md) -- 📝 [Terms of Service](./service-terms.md) -- ⚖️ [Legal Documentation](../legal/README.md) - -### Contacts and Support - -- 🌐 **Portal**: https://hb3-accelerator.com/ -- 📧 **Email**: info@hb3-accelerator.com -- 🐙 **GitHub**: https://github.com/VC-HB3-Accelerator - ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - -**Last Updated**: October 2025 - diff --git a/docs-en/commercial-proposal-entrepreneurs.md b/docs-en/commercial-proposal-entrepreneurs.md deleted file mode 100644 index 742cbf4..0000000 --- a/docs-en/commercial-proposal-entrepreneurs.md +++ /dev/null @@ -1,232 +0,0 @@ -# Commercial Proposal for Entrepreneurs - -## Ready-to-use Business Management Software with Free Setup - -**Date:** 2025-01-27 -**Target Audience:** Entrepreneurs outside CIS -**Type:** Initial commercial proposal - -## 📨 EMAIL BODY - -**Subject:** Ready-to-use Business Management Software with AI Assistant and Free Setup - -Hello [Name]! - -We offer business software that includes **artificial intelligence** and **blockchain** technologies. - -**🤖 Artificial Intelligence** runs locally on your server — analyzes data, forecasts demand, and makes operational decisions. No API token fees, no data leakage. - -**⛓️ Blockchain and Asset Tokenization** provide: -- **Transparent accounting** — each warehouse item receives a token, all sales and movements are recorded in an immutable ledger, eliminating accounting discrepancies and manipulation -- **Security** — cryptographic protection of asset data, preventing product counterfeiting and unauthorized access to accounting records -- **Instant payments** — direct transfers between participants without intermediaries, banks, or delays - -**Result:** clients reduce operational costs by 30%+ and save time on disputes over documents or payment delays. - ---- - -## 💼 WHAT YOU GET - -**Digital Legal Entity (DLE)** is a microservices IT infrastructure with a web application for on-premises deployment on company servers. It includes AI agent configuration tools and a smart contract system supporting legal entity credentials and regulatory identifiers for financial operations. Provides business process management and automation, replaces fragmented SaaS services with monthly subscriptions, and complies with regulatory requirements for data storage and processing. - -**Ready-to-use web application for business management** — a proven solution we use to manage our own business. After purchase, you'll receive it configured for your industry. - -**Key Features:** - -✅ **AI Assistant** — data analysis, demand forecasting, operational decision-making, routine automation (24/7 customer service, analytics, marketing, HR) -✅ **Blockchain and asset tokenization** — each product receives a token for warehouse and sales accounting, immutable transaction ledger, cryptographic protection, instant payments -✅ **CRM and contact management** — centralized customer database -✅ **Omnichannel communications** — Telegram, Email, Web chat in a unified interface -✅ **Tokenization for internal accounting** — product accounting, logistics, security (legally compliant) -✅ **Electronic spreadsheets** — Excel-like functionality with integration - -**AI Assistant runs locally on your server** — data stays private, free (no API token fees). - ---- - -## 📊 COMPARISON WITH ALTERNATIVES - -To help you make an informed decision, compare our offering with popular market solutions: - -| Criterion | **DLE (our solution)** | Salesforce | Microsoft Dynamics 365 | HubSpot | Zoho CRM | SAP/Oracle | -|-----------|------------------------|------------|------------------------|---------|----------|------------| -| **One-time price** | $1,000 - $10,000 once, perpetual | ❌ Subscription only | ❌ Subscription only | ❌ Subscription only | ❌ Subscription only | $50,000+ one-time + subscription | -| **Monthly subscription** | ✅ Not required | $25-300/mo | $20-200/mo | $20-1,200/mo | $14-240/mo | $100-500+/mo | -| **Built-in AI assistant** | ✅ Yes, local, free | ⚠️ Einstein AI, expensive | ⚠️ Copilot, expensive | ⚠️ Limited, paid | ⚠️ Zia AI, limited | ⚠️ Additional, very expensive | -| **Blockchain and tokenization** | ✅ Yes, for internal accounting | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | -| **On-premises (your server)** | ✅ Yes, full data control | ❌ Cloud only | ⚠️ Hybrid possible, expensive | ❌ Cloud only | ❌ Cloud only | ⚠️ Possible, very expensive | -| **Free setup** | ✅ 5 years by contractors | ❌ From $5,000+ | ❌ From $3,000+ | ❌ From $1,000+ | ❌ From $500+ | ❌ From $50,000+ | -| **Open source** | ✅ Yes, GitHub | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | -| **Perpetual license** | ✅ Yes | ❌ No | ❌ No | ❌ No | ❌ No | ⚠️ Expensive | -| **Updates** | ✅ 5 years included | ✅ In subscription | ✅ In subscription | ✅ In subscription | ✅ In subscription | ⚠️ Additional | -| **Support** | ✅ SLA 4-48 hours, 5 years | ⚠️ By tariff | ⚠️ By tariff | ⚠️ By tariff | ⚠️ By tariff | ⚠️ Expensive | -| **Omnichannel communications** | ✅ Telegram, Email, Web | ✅ Yes | ✅ Yes | ✅ Yes | ⚠️ Limited | ⚠️ Additional | -| **Electronic spreadsheets** | ✅ Built-in | ⚠️ Additional | ⚠️ Office 365 integration | ❌ No | ⚠️ Additional | ⚠️ Additional | -| **Training** | ✅ Group + individual | ⚠️ Very expensive | ⚠️ Very expensive | ⚠️ Paid | ⚠️ Paid | ⚠️ Very expensive | -| **Ecosystem and investments** | ✅ Accelerator, fund access | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | -| **Cost over 5 years** | **$1,000-10,000** | $1,500-18,000 | $1,200-12,000 | $1,200-72,000 | $840-14,400 | $56,000+ | - -**💡 Key Takeaways:** - -- **DLE is cheaper in the long run** — even the most expensive tier ($10,000) is cheaper than 5 years of competitor subscriptions -- **Only solution with blockchain and tokenization** for internal accounting -- **Only solution with free setup for 5 years** — competitors charge $500 to $50,000+ for setup -- **Full data control** through on-premises deployment -- **Open source** — you can verify security and functionality -- **Perpetual license** — pay once, use forever - -*Note: Competitor prices are approximate for 2025 and may vary by region and number of users.* - ---- - -## 🎁 KEY ADVANTAGE - -**Free setup by contractors for 5 years** - -After purchase, contractors (hired specialists) will help configure the application for your business **FREE OF CHARGE**. Contractor work is paid by the author from license sales profits (15% of costs) — you don't pay for setup, it's included in the license. - -**What setup includes:** -- Personalized configuration for your industry -- Integration with your business processes -- AI assistant configuration for your specifics to analyze your data and forecast demand -- Blockchain accounting setup for your supply chains -- Feature development as needed - ---- - -## 💰 PRICING AND TERMS - -**Tiers:** -- **Standard:** $1,000 USDT — one-time, perpetual -- **Premium:** $10,000 USDT — one-time, perpetual - -**What's included:** -- Software forever (perpetual license) -- Free setup by contractors for 5 years -- Updates for 5 years -- Support (SLA 4-48 hours) -- Online training sessions (group + individual) - -**Difference between tiers:** Only the number of votes in product development. Usage terms are identical. - -**📋 Full purchase and maintenance terms:** -https://github.com/VC-HB3-Accelerator/DLE/blob/main/docs-en/service-terms.md - -Review detailed terms for licensing, updates, support, product development voting, and refund conditions. - ---- - -## 🔗 LEARN MORE - -**DLE Application Repository:** -https://github.com/VC-HB3-Accelerator/DLE - -Source code is open — review functionality, technical implementation, installation and usage documentation. - -**Purchase and maintenance terms:** -https://github.com/VC-HB3-Accelerator/DLE/blob/main/docs-en/service-terms.md - -Full terms for licensing, updates, support, product development voting, refund conditions, and liability limitations. - -**VC HB3 Accelerator Fund Information:** -https://github.com/VC-HB3-Accelerator - -Ecosystem development prospects, business model, 5-year plans, investment opportunities. For more on working with regulators, see the "PROSPECTS AND ECOSYSTEM" section below. - -**Live demo:** -Contact us for a demonstration of the proven solution we use to manage our own business. - ---- - -## ⚖️ LEGAL COMPLIANCE - -**Important clarification on regulatory restrictions:** - -Regulators **prohibit:** -- TRADING operations with tokenized assets (buying/selling as securities) -- Selling goods/services for cryptocurrency - -But **DO NOT prohibit** using tokenization for **INTERNAL accounting:** - -✅ Product inventory accounting -✅ Logistics and movement tracking -✅ Security and access control -✅ Internal asset management - -**Core functionality (CRM, AI, management) is fully legal** regardless of tokenization. - -*For more on how regulatory restrictions are lifted through L2 solutions, see the "PROSPECTS AND ECOSYSTEM" section below.* - -We recommend consulting with a lawyer about token trading operations and crypto payments in your country. - ---- - -## 🚀 PROSPECTS AND ECOSYSTEM - -**VC HB3 Accelerator** — a venture fund creating a global asset tokenization ecosystem. - -**How we lift regulatory restrictions:** - -The fund offers regulators to implement a ready L2 solution at its own investment cost with regulator participation. This enables: -- Creating regulated infrastructure for asset tokenization -- Lifting restrictions on token trading within a regulated ecosystem -- Allowing goods/services sales for cryptocurrency through a regulated L2 chain -- Ensuring full regulator control over infrastructure - -**Development plans:** -- 21,000+ entrepreneurs in the first accelerator -- 600 portfolio companies over 5 years -- 100+ offices in different countries -- Cooperation with regulators for L2 solution implementation -- Investments in accelerator participants - -**But importantly:** The software can be used **independently of fund status and regulator work**. Even if the fund doesn't register or reach agreements with regulators, the software remains yours — this is guaranteed. Internal accounting through tokenization works legally in any case. - -For more on prospects and working with regulators: https://github.com/VC-HB3-Accelerator - ---- - -## 📋 HOW TO GET STARTED - -1. **Review the repository:** https://github.com/VC-HB3-Accelerator/DLE -2. **Review purchase terms:** https://github.com/VC-HB3-Accelerator/DLE/blob/main/docs-en/service-terms.md -3. **Request a demo** — we can organize an online presentation -4. **Choose a tier:** Standard ($1,000) or Premium ($10,000) -5. **Purchase a license** through the official seller -6. **Receive the application and free setup** by contractors for 5 years - ---- - -## 📞 CONTACTS - -**VC HB3 Accelerator:** -Web3 Application: https://hb3-accelerator.com -Email: info@hb3-accelerator.com - -**For inquiries about licensing and sales, please contact:** -Email: info@hb3-accelerator.com - ---- - -## ✅ GUARANTEES - -- Software remains yours even if the fund doesn't register -- 70% refund within 5 years subject to program conditions (details: [service-terms.md](https://github.com/VC-HB3-Accelerator/DLE/blob/main/docs-en/service-terms.md)) -- Full data control (on-premises deployment) -- Open source code for verification -- Perpetual license with rights determined by token quantity -- Free updates and basic maintenance for 5 years from purchase date - ---- - -We're ready to answer questions and organize a demonstration. - -Best regards, -[Your name] -[Position] -[Company] - ---- - -**P.S.** Review the application repository and purchase terms before making a decision. Contact us for a demo — this is the proven solution you'll receive after purchase. - diff --git a/docs-en/security.md b/docs-en/security.md deleted file mode 100644 index fc575b4..0000000 --- a/docs-en/security.md +++ /dev/null @@ -1,1309 +0,0 @@ -# Security of Digital Legal Entity (DLE) - -## 📋 Table of Contents - -1. [Introduction](#introduction) -2. [Security Model](#security-model) -3. [Token-Based Access Control](#token-based-access-control) -4. [Smart Contract Security](#smart-contract-security) -5. [Wallet Hack Protection](#wallet-hack-protection) -6. [Web Application Security](#web-application-security) -7. [Module Management](#module-management) -8. [Audit and Monitoring](#audit-and-monitoring) -9. [Security Recommendations](#security-recommendations) -10. [Attack Scenarios and Protection](#attack-scenarios-and-protection) - ---- - -## Introduction - -Digital Legal Entity (DLE) is built with a focus on **security at all levels**: -- 🔐 Access control through blockchain tokens -- 🛡️ Smart contract protection from hacking -- 🔒 Impossible to steal tokens even if wallet is hacked -- ⚖️ Management only through voting with quorum - -### Key Security Principles - -1. **Security by default** - all actions are prohibited until explicitly allowed -2. **Least privilege** - everyone gets only necessary rights -3. **Transparency** - all actions recorded on blockchain -4. **Immutability** - impossible to forge history -5. **Collective control** - critical operations only through voting - ---- - -## Security Model - -### Security Architecture - -``` -┌─────────────────────────────────────────────────────────────┐ -│ DLE Protection Levels │ -├─────────────────────────────────────────────────────────────┤ -│ │ -│ Level 1: Blockchain (Immutable Base) │ -│ ┌───────────────────────────────────────────────────────┐ │ -│ │ • DLE Smart Contract (audited, immutable) │ │ -│ │ • Governance Tokens (ERC20Votes) │ │ -│ │ • History of all operations on blockchain │ │ -│ │ • Impossible to change rules without voting │ │ -│ └───────────────────────────────────────────────────────┘ │ -│ ↑ │ -│ Level 2: Web Application (Backend) │ -│ ┌───────────────────────────────────────────────────────┐ │ -│ │ • Real-time token verification │ │ -│ │ • Wallet authentication (SIWE) │ │ -│ │ • Data encryption (AES-256) │ │ -│ │ • Rate limiting and DDoS protection │ │ -│ └───────────────────────────────────────────────────────┘ │ -│ ↑ │ -│ Level 3: Frontend (Vue.js) │ -│ ┌───────────────────────────────────────────────────────┐ │ -│ │ • Wallet connection │ │ -│ │ • Transaction signing │ │ -│ │ • XSS protection (DOMPurify) │ │ -│ │ • CSRF tokens │ │ -│ └───────────────────────────────────────────────────────┘ │ -│ ↑ │ -│ Level 4: User │ -│ ┌───────────────────────────────────────────────────────┐ │ -│ │ • Wallet private key (MetaMask, WalletConnect) │ │ -│ │ • Confirmation of each operation │ │ -│ └───────────────────────────────────────────────────────┘ │ -└─────────────────────────────────────────────────────────────┘ -``` - -### Threat Model - -| Threat | Risk Level | Protection | -|--------|------------|------------| -| **Wallet hack** | 🟡 Medium | Tokens cannot be transferred without voting | -| **Web application hack** | 🟢 Low | All rights verified on blockchain, management via blockchain explorers | -| **Smart contract compromise** | 🟢 Low | Audit, OpenZeppelin, immutability | -| **DDoS attack** | 🟡 Medium | Rate limiting, CDN, backup servers | -| **Phishing** | 🟠 High | User education, domain verification | -| **Insider threat** | 🟢 Low | All actions through voting | - -### ⚠️ Critical: Web Application is Only an Interface - -**Key feature of DLE architecture:** - -``` -┌─────────────────────────────────────────────────────────┐ -│ Web Application (Interface) │ -│ │ -│ Frontend + Backend = CONVENIENCE of use │ -│ • Beautiful UI │ -│ • Convenient navigation │ -│ • Quick access to functions │ -│ │ -│ ⚠️ Can be hacked/unavailable │ -│ ✅ BUT! Business assets are protected │ -└─────────────────────────────────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────────────────┐ -│ Blockchain (Real Power) │ -│ │ -│ Smart Contracts = REAL asset management │ -│ • Governance tokens │ -│ • Treasury with assets │ -│ • Voting rules │ -│ • History of all decisions │ -│ │ -│ 🔒 Protected by cryptography │ -│ ✅ Works independently of web application │ -└─────────────────────────────────────────────────────────┘ -``` - -**What happens when web application is hacked:** - -``` -Web application hacked/unavailable: -├── ❌ Web interface doesn't work -├── ❌ Backend may show incorrect information -├── ❌ Frontend may be replaced -│ -BUT: -├── ✅ All business assets remain on blockchain -├── ✅ Smart contracts continue to work -├── ✅ Tokens cannot be stolen -├── ✅ Can manage via Etherscan/Polygonscan/etc. -└── ✅ Can create new frontend and connect to same contracts -``` - -**Real example:** - -1. Attacker hacks your server with web application -2. Tries to show fake token balances -3. **But**: Real balances on blockchain remain unchanged -4. You open Etherscan and see the truth -5. Create proposal via Etherscan for recovery -6. Vote and execute proposal -7. Restore web application -8. **Result**: Not a single token lost ✅ - ---- - -## Token-Based Access Control - -### How It Works - -**Without tokens, access to application is IMPOSSIBLE.** - -``` -Access attempt to DLE: -├── 1. User connects wallet -├── 2. Backend checks token balance in smart contract -├── 3. If NO tokens → Access DENIED -└── 4. If tokens EXIST → Access granted (level depends on amount) -``` - -### Access Levels - -| Tokens on balance | Access Level | Rights | -|-------------------|--------------|--------| -| **0 tokens** | ❌ No access | Only "No access" page | -| **1+ tokens** | ✅ ReadOnly | View data | -| **100+ tokens** | ✅ Editor | Editing, creation | -| **Any amount** | 🗳️ Voting | 1 token = 1 vote | - -### Real-Time Token Verification - -**Backend** constantly checks token balance: - -```javascript -// Every request checks tokens -async function checkAccess(req, res, next) { - const address = req.session.address; - - // Get token balance from smart contract - const dleContract = new ethers.Contract(dleAddress, dleAbi, provider); - const balance = await dleContract.balanceOf(address); - - if (balance === 0n) { - return res.status(403).json({ - error: 'Access denied: no tokens' - }); - } - - // Determine access level - const accessLevel = determineAccessLevel(balance); - req.user = { address, balance, accessLevel }; - - next(); -} -``` - -**Important**: Verification happens on **every request**, so: -- ✅ If tokens transferred → access instantly lost -- ✅ If tokens received → access instantly appears -- ✅ Impossible to bypass verification - -### Initial Token Distribution - -**Tokens are distributed by owner when deploying smart contract:** - -```solidity -constructor(DLEConfig memory config) { - // Create tokens - _mint(address(this), totalSupply); - - // Distribute among partners - for (uint i = 0; i < config.initialPartners.length; i++) { - _transfer( - address(this), - config.initialPartners[i], - config.initialAmounts[i] - ); - } -} -``` - -**Process**: -1. Wallet owner deploys DLE smart contract -2. Specifies partner addresses and token amounts for each -3. Tokens automatically distributed on deployment -4. After that, all changes only through voting - -**Distribution example**: -```javascript -const config = { - initialPartners: [ - '0xAlice...', // Founder 1 - '0xBob...', // Founder 2 - '0xCarol...' // Investor - ], - initialAmounts: [ - 500000, // 50% for Alice - 300000, // 30% for Bob - 200000 // 20% for Carol - ] -}; -``` - ---- - -## Smart Contract Security - -### Protection from Token Transfers - -**CRITICAL**: Governance tokens **CANNOT** be transferred by normal means! - -```solidity -// Transfers BLOCKED -function transfer(address to, uint256 amount) - public - pure - override - returns (bool) -{ - revert ErrTransfersDisabled(); -} - -// Approvals BLOCKED -function approve(address spender, uint256 amount) - public - pure - override - returns (bool) -{ - revert ErrApprovalsDisabled(); -} - -// TransferFrom BLOCKED -function transferFrom(address from, address to, uint256 amount) - public - pure - override - returns (bool) -{ - revert ErrTransfersDisabled(); -} -``` - -**What this means**: -- ❌ Cannot send tokens to exchange -- ❌ Cannot sell tokens on DEX -- ❌ Cannot transfer tokens to another person directly -- ❌ Attacker CANNOT steal tokens even from hacked wallet - -### Only Way to Transfer Tokens - -**Only through voting with quorum:** - -```solidity -// Transfer tokens (only through governance) -function _transferTokens(address recipient, uint256 amount) internal { - require(msg.sender == address(this), "Only through governance"); - _transfer(address(this), recipient, amount); -} -``` - -**Transfer process**: -``` -1. Proposal creation - ├── "Transfer 1000 tokens to address 0xNew..." - └── Required: minimum 1 token to create - -2. Voting - ├── Duration: 1-30 days (configurable) - ├── Each token = 1 vote - └── Required: quorum (e.g., 10% of all tokens) - -3. Quorum check - ├── If "For" > "Against" AND quorum reached - └── → Proposal approved - -4. Execution - ├── Smart contract automatically transfers tokens - └── Event recorded on blockchain forever -``` - -### Quorum Configuration - -**Quorum is set on deployment** and can only be changed through voting: - -```solidity -uint256 public quorumPercentage; // For example, 10% - -function _hasQuorum(uint256 forVotes, uint256 againstVotes) - internal - view - returns (bool) -{ - uint256 totalVotes = forVotes + againstVotes; - uint256 required = (totalSupply() * quorumPercentage) / 100; - return totalVotes >= required; -} -``` - -**Quorum examples**: -- 5% - easy to reach (for active organizations) -- 10% - standard (recommended) -- 20% - strict (for critical decisions) -- 51% - absolute majority - -### Reentrancy Protection - -```solidity -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; - -contract DLE is ReentrancyGuard { - function execute(uint256 proposalId) - external - nonReentrant // Reentrancy protection - { - // Proposal execution - } -} -``` - -### Flash-Loan Protection - -**Vote snapshots** prevent attacks with temporary token loans: - -```solidity -// Votes taken from PREVIOUS block -uint256 public snapshotTimepoint = block.number - 1; - -function vote(uint256 proposalId, bool support) external { - // Use balance from previous block - uint256 votingPower = getPastVotes(msg.sender, snapshotTimepoint); - require(votingPower > 0, "No voting power"); - - // Voting -} -``` - -**Why this is safe**: -1. Attacker takes flash-loan of 1,000,000 tokens -2. Tries to vote -3. Smart contract checks balance in **previous block** -4. In previous block attacker had 0 tokens -5. Voting rejected ❌ - -### Parameter Validation - -```solidity -// Address check -if (address == address(0)) revert ErrZeroAddress(); - -// Token ownership check -if (balanceOf(msg.sender) == 0) revert ErrNotHolder(); - -// Voting duration check -if (duration < minVotingDuration) revert ErrTooShort(); -if (duration > maxVotingDuration) revert ErrTooLong(); - -// Supported network check -if (!supportedChains[chainId]) revert ErrUnsupportedChain(); -``` - -### Custom Errors for Gas Savings - -```solidity -// Gas savings: custom errors instead of require -error ErrZeroAddress(); -error ErrNotHolder(); -error ErrAlreadyVoted(); -error ErrTransfersDisabled(); -error ErrApprovalsDisabled(); -error ErrProposalMissing(); -error ErrWrongChain(); -``` - ---- - -## Wallet Hack Protection - -### Scenario: Attacker Got Private Key - -**What attacker can do:** - -``` -Attacker attempts: - -1. ❌ Send tokens to own address - └── BLOCKED: transfer() blocked - -2. ❌ Sell tokens on DEX (Uniswap, etc.) - └── BLOCKED: approve() blocked - -3. ❌ Send via transferFrom - └── BLOCKED: transferFrom() blocked - -4. ❓ Create proposal "Transfer tokens to me" - └── Requires voting by other token holders - └── Quorum: 10%+ must vote "For" - └── MOST LIKELY WILL FAIL -``` - -### Real Attack Example - -``` -Attacker hacked Alice's wallet (500,000 tokens): - -1. Creates proposal: - "Transfer 500,000 tokens to address 0xEvil..." - -2. Votes "For" with own 500,000 votes (50%) - -3. But quorum = 10% = 100,000 votes - Already reached? YES ✅ - -4. "For" = 500,000 (50%) - "Against" = 0 - -5. Result: Proposal APPROVED ❌ - -PROBLEM: If Alice has majority of tokens! -``` - -### Protection from Majority Token Attack - -**Solution 1: Timelock Module** - -```solidity -// Delayed execution (e.g., 3 days) -uint256 public constant TIMELOCK_DELAY = 3 days; - -function scheduleProposal(uint256 proposalId) external { - // Proposal approved, but executes only after 3 days - executionTime = block.timestamp + TIMELOCK_DELAY; -} -``` - -**Advantage**: Other token holders see dangerous proposal and can: -- Vote "Against" -- Create counter-proposal -- Take measures (e.g., contact court) - -**Solution 2: Multisignature** - -```solidity -// Requires multiple signatures for critical operations -mapping(uint256 => mapping(address => bool)) public approvals; - -function executeWithApprovals( - uint256 proposalId, - address[] calldata signers, - bytes[] calldata signatures -) external { - // Verify signatures of multiple token holders - require(signers.length >= minSigners, "Not enough signers"); - - for (uint i = 0; i < signers.length; i++) { - // Signature verification - verifySignature(proposalId, signers[i], signatures[i]); - } - - // Execution -} -``` - -**Solution 3: Cold Wallet for Large Holders** - -Recommended to keep tokens on: -- 🥶 **Hardware wallet** (Ledger, Trezor) - maximum protection -- 🔒 **Multisignature** (Gnosis Safe) - requires multiple signatures -- ❄️ **Cold storage** - offline, not connected to internet - -### Suspicious Proposal Monitoring - -**Backend automatically detects dangerous proposals:** - -```javascript -// Suspicious proposal detector -function detectSuspiciousProposal(proposal) { - const alerts = []; - - // Check 1: Transfer of large token amount - if (proposal.operation.includes('_transferTokens')) { - const amount = decodeAmount(proposal.operation); - const percentage = (amount / totalSupply) * 100; - - if (percentage > 10) { - alerts.push({ - level: 'HIGH', - message: `Proposal transfers ${percentage}% of all tokens!` - }); - } - } - - // Check 2: Initiator votes with own tokens - if (proposal.forVotes === proposal.initiatorBalance) { - alerts.push({ - level: 'MEDIUM', - message: 'Initiator votes only with own tokens' - }); - } - - // Check 3: Fast voting (< 24 hours) - if (proposal.duration < 86400) { - alerts.push({ - level: 'MEDIUM', - message: 'Voting less than 24 hours - little time for verification' - }); - } - - // Send notifications to all token holders - if (alerts.length > 0) { - notifyAllTokenHolders(proposal, alerts); - } -} -``` - ---- - -## Web Application Security - -### SIWE Authentication - -**Sign-In with Ethereum** - standard for secure authentication: - -```javascript -// Generate nonce (one-time) -const nonce = crypto.randomBytes(32).toString('hex'); - -// Save to DB with encryption -await db.query( - 'INSERT INTO nonces (address_encrypted, nonce_encrypted, expires_at) VALUES ($1, $2, $3)', - [encrypt(address), encrypt(nonce), expiresAt] -); - -// Signature verification -const message = new SiweMessage({ - domain: req.get('host'), - address: ethers.getAddress(address), - nonce: nonce, - chainId: 1 -}); - -const isValid = await verifySignature( - message.prepareMessage(), - signature, - address -); -``` - -**Security**: -- ✅ Private key **never** leaves wallet -- ✅ Each nonce used **once** -- ✅ Nonce expires in 5 minutes -- ✅ Impossible to forge signature without private key - -### Data Encryption - -```javascript -// AES-256 encryption -const crypto = require('crypto'); - -function encrypt(text, key) { - const iv = crypto.randomBytes(16); - const cipher = crypto.createCipheriv('aes-256-cbc', key, iv); - - let encrypted = cipher.update(text, 'utf8', 'hex'); - encrypted += cipher.final('hex'); - - return iv.toString('hex') + ':' + encrypted; -} - -function decrypt(encrypted, key) { - const parts = encrypted.split(':'); - const iv = Buffer.from(parts[0], 'hex'); - const encryptedText = parts[1]; - - const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv); - let decrypted = decipher.update(encryptedText, 'hex', 'utf8'); - decrypted += decipher.final('utf8'); - - return decrypted; -} -``` - -**What is encrypted**: -- 🔐 Wallet addresses in DB -- 🔐 Nonces for authentication -- 🔐 Session data -- 🔐 Private messages - -### Rate Limiting - -```javascript -const rateLimit = require('express-rate-limit'); - -// Request limiting -const apiLimiter = rateLimit({ - windowMs: 15 * 60 * 1000, // 15 minutes - max: 100, // maximum 100 requests - message: 'Too many requests, try again later' -}); - -// Authentication limiting (stricter) -const authLimiter = rateLimit({ - windowMs: 15 * 60 * 1000, - max: 5, // maximum 5 authentication attempts - skipSuccessfulRequests: true -}); - -app.use('/api/', apiLimiter); -app.use('/api/auth/', authLimiter); -``` - -### CSRF Protection - -```javascript -const csrf = require('csurf'); - -// CSRF tokens for all forms -const csrfProtection = csrf({ cookie: true }); - -app.post('/api/action', csrfProtection, async (req, res) => { - // CSRF token verification automatic -}); -``` - -### XSS Protection - -```javascript -import DOMPurify from 'dompurify'; - -// Clean HTML from dangerous code -function sanitizeHTML(html) { - return DOMPurify.sanitize(html, { - ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'a', 'p'], - ALLOWED_ATTR: ['href'] - }); -} - -// Usage -const userInput = req.body.comment; -const safeHTML = sanitizeHTML(userInput); -``` - -### Helmet.js for Header Protection - -```javascript -const helmet = require('helmet'); - -app.use(helmet({ - contentSecurityPolicy: { - directives: { - defaultSrc: ["'self'"], - scriptSrc: ["'self'", "'unsafe-inline'"], - styleSrc: ["'self'", "'unsafe-inline'"], - imgSrc: ["'self'", "data:", "https:"], - } - }, - hsts: { - maxAge: 31536000, - includeSubDomains: true, - preload: true - } -})); -``` - -### Clean Logs System - -**Automatic log cleanup from sensitive data:** - -```javascript -function cleanLogs() { - const sensitivePatterns = [ - /0x[a-fA-F0-9]{40}/g, // Wallet addresses - /pk_[a-zA-Z0-9]{64}/g, // Private keys (if accidentally logged) - /nonce:\s*[a-f0-9]{64}/gi, // Nonces - ]; - - // Replace sensitive data with *** - let cleanedLog = logContent; - sensitivePatterns.forEach(pattern => { - cleanedLog = cleanedLog.replace(pattern, '[REDACTED]'); - }); - - return cleanedLog; -} -``` - ---- - -## Module Management - -### Only DLE Smart Contract Manages Modules - -**`onlyDLE` modifier** guarantees that only DLE smart contract can call module functions: - -```solidity -// Module: TreasuryModule -contract TreasuryModule { - address public immutable dleContract; - - modifier onlyDLE() { - require(msg.sender == dleContract, "Only DLE can call"); - _; - } - - // Only DLE can transfer tokens from treasury - function transferTokens( - address token, - address recipient, - uint256 amount - ) external onlyDLE { - IERC20(token).transfer(recipient, amount); - } -} -``` - -**What this means**: -- ❌ Wallet owner **CANNOT** directly call module functions -- ❌ Backend **CANNOT** call module functions -- ❌ Attacker **CANNOT** interact with module -- ✅ **Only** DLE smart contract through voting - -### Module Usage Process - -``` -1. Token holder creates proposal - └── "Transfer 1000 USDC from Treasury to marketing" - -2. Proposal contains encoded module function call - └── operation = treasuryModule.transferTokens(USDC, marketing, 1000) - -3. Voting - -4. If approved, DLE contract calls module: - └── TreasuryModule.transferTokens() ✅ - └── msg.sender = DLE contract ✅ - -5. Module verifies msg.sender and executes -``` - -### Adding New Module - -**Only through voting:** - -```solidity -// Module addition operation -function _addModule(bytes32 moduleId, address moduleAddress) internal { - require(msg.sender == address(this), "Only through voting"); - require(moduleAddress != address(0), "Invalid address"); - require(!activeModules[moduleId], "Module already exists"); - - modules[moduleId] = moduleAddress; - activeModules[moduleId] = true; - - emit ModuleAdded(moduleId, moduleAddress); -} -``` - -**Process**: -1. Deploy new module -2. Create proposal: "Add module X at address 0x..." -3. Voting -4. If approved → module added -5. Module can be used - -### Removing Compromised Module - -If module turns out to be vulnerable: - -``` -1. Token holder creates emergency proposal - └── "Remove compromised module X" - └── Duration: 1 day (emergency voting) - -2. Voting (accelerated) - -3. Module removed - └── Can no longer be called from DLE contract -``` - ---- - -## Audit and Monitoring - -### Blockchain Transparency - -**All actions recorded forever:** - -```solidity -// Events for audit -event ProposalCreated(uint256 proposalId, address initiator); -event ProposalVoted(uint256 proposalId, address voter, bool support); -event ProposalExecuted(uint256 proposalId, bytes operation); -event ModuleAdded(bytes32 moduleId, address moduleAddress); -event TokensTransferred(address recipient, uint256 amount); -``` - -**Verification in blockchain explorer:** -``` -https://etherscan.io/address/0xDLE_CONTRACT_ADDRESS -└── All transactions publicly visible -└── Impossible to hide or delete -``` - -### Real-Time Monitoring - -**Backend tracks all events:** - -```javascript -// Subscribe to smart contract events -dleContract.on('ProposalCreated', async (proposalId, initiator, event) => { - logger.info(`New proposal #${proposalId} from ${initiator}`); - - // Get proposal details - const proposal = await dleContract.proposals(proposalId); - - // Security analysis - const risks = analyzeProposalRisks(proposal); - - // Notify token holders - if (risks.level === 'HIGH') { - await notifyAllTokenHolders({ - type: 'SECURITY_ALERT', - proposalId, - risks - }); - } -}); -``` - -### Alert System - -```javascript -// Critical events require immediate notification -const criticalEvents = [ - 'ProposalCreated', // New proposal - 'ModuleAdded', // Module added - 'TokensTransferred' // Tokens transferred -]; - -async function sendAlert(event, data) { - // Email notifications - await sendEmail({ - to: allTokenHolders, - subject: `[DLE Alert] ${event}`, - body: formatAlert(data) - }); - - // Telegram notifications - await sendTelegram({ - chat: dleNotificationsChat, - message: formatAlert(data) - }); - - // Log entry - logger.warn(`ALERT: ${event}`, data); -} -``` - ---- - -## Security Recommendations - -### For Token Holders - -1. **🥶 Use hardware wallet** (Ledger, Trezor) - - Private key never leaves device - - Confirmation of each operation on physical device - -2. **🔐 Store seed phrase securely** - - Write on paper, don't store digitally - - Use metal plates for durability - - Store in safe or bank deposit box - -3. **🚨 Enable notifications** - - Email alerts on new proposals - - Telegram bots for critical events - -4. **👀 Check all proposals** - - Read description before voting - - Verify recipient addresses - - Use timelock for critical operations - -5. **❄️ Split tokens** - - Hot wallet: 10-20% for daily use - - Cold wallet: 80-90% for long-term storage - -### For Administrators - -1. **🔄 Regular updates** - ```bash - # Weekly update - docker-compose pull - docker-compose up -d - ``` - -2. **💾 Backups** - ```bash - # Daily database backup - docker exec dapp-postgres pg_dump -U user db > backup.sql - ``` - -3. **📊 Log monitoring** - ```bash - # Check logs for suspicious activity - docker logs dapp-backend | grep -i "error\|warning\|failed" - ``` - -4. **🔑 Encryption key rotation** - - Change encryption key once a year - - Keep old keys for decrypting historical data - -5. **🛡️ Firewall configuration** - ```bash - # Allow only necessary ports - ufw allow 80/tcp # HTTP - ufw allow 443/tcp # HTTPS - ufw enable - ``` - -### For Developers - -1. **✅ Smart contract audits** - - Use Slither for static analysis - - Mythril for vulnerability search - - Manual audit of critical code - -2. **🧪 Testing** - ```bash - # Run tests - cd backend - yarn test - - # Code coverage - yarn coverage - ``` - -3. **📝 Code review** - - All changes through pull requests - - Minimum 2 reviewers for critical changes - -4. **🔒 Secure dependencies** - ```bash - # Vulnerability check - yarn audit - npm audit fix - ``` - ---- - -## Attack Scenarios and Protection - -### Scenario 1: Phishing Attack - -**Attack:** -``` -1. Attacker creates fake site: dlle.com (instead of dle.com) -2. Sends phishing emails to token holders -3. Asks to connect wallet and sign transaction -``` - -**Protection:** -```javascript -// Backend verifies domain in SIWE message -const message = new SiweMessage({ - domain: req.get('host'), // Must be correct domain - uri: req.get('origin') -}); - -// Frontend shows warning -if (window.location.hostname !== 'dle.app') { - alert('⚠️ WARNING: This is NOT the official DLE site!'); -} -``` - -**User recommendations:** -- ✅ Always verify URL before connecting wallet -- ✅ Use browser bookmarks -- ✅ Verify SSL certificate (green lock) - -### Scenario 2: Backend Server Hack - -**Attack:** -``` -1. Attacker gains access to backend server -2. Tries to modify code to bypass token verification -3. Or completely takes web application offline -``` - -**Protection:** -``` -✅ Token verification happens on blockchain (immutable) -✅ Backend can be compromised, but: - ├── Cannot change token balance in smart contract - ├── Cannot create fake tokens - ├── Cannot change smart contract rules - └── Users will see discrepancy between backend and blockchain -``` - -**Critical: Web Application is Only an Interface!** - -Even with **complete hack** of web application: -- ✅ **All business assets protected** on blockchain -- ✅ **Smart contracts continue to work** independently of web application -- ✅ **Can manage via blockchain explorers** (Etherscan, Polygonscan, etc.) - -### Management via Blockchain Explorers - -**If web application unavailable, use blockchain explorers:** - -#### 1. Check Token Balance - -``` -1. Open Etherscan: https://etherscan.io -2. Enter DLE smart contract address -3. Go to "Read Contract" tab -4. Call balanceOf(address) function -5. Enter your wallet address -6. Click "Query" - see token balance ✅ -``` - -**Example**: -``` -Contract Address: 0x1234...DLE -Function: balanceOf -Address: 0xYourWallet... -Result: 500000 (your token balance) -``` - -#### 2. Create Proposal via Etherscan - -``` -1. Open Etherscan and find DLE smart contract -2. Go to "Write Contract" tab -3. Connect MetaMask wallet -4. Find createProposal function -5. Fill parameters: - - description: "Restore web application" - - operation: encoded function call - - votingDuration: 86400 (1 day in seconds) -6. Click "Write" and confirm transaction ✅ -``` - -**Example proposal creation**: -```solidity -// Via Etherscan Write Contract -createProposal( - "Transfer 10,000 USDT for infrastructure recovery", - 0x..., // encoded transferTokens call - 86400 // 1 day -) -``` - -#### 3. Vote via Etherscan - -``` -1. Open DLE smart contract on Etherscan -2. "Write Contract" tab -3. Connect wallet -4. Function vote(uint256 proposalId, bool support) - - proposalId: proposal number (e.g., 5) - - support: true (for) or false (against) -5. Click "Write" ✅ -``` - -#### 4. Check Proposal Status - -``` -1. "Read Contract" tab on Etherscan -2. Function proposals(uint256) -3. Enter proposal ID -4. See all details: - - Description - - "For" and "Against" votes - - Status (Active, Executed, Failed) - - Voting end time -``` - -#### 5. Execute Approved Proposal - -``` -1. If proposal approved and time expired -2. Open "Write Contract" -3. Function execute(uint256 proposalId) -4. Enter proposal ID -5. Click "Write" - proposal executes ✅ -``` - -### Popular Blockchain Explorers for DLE - -| Network | Blockchain Explorer | URL | -|---------|---------------------|-----| -| **Ethereum Mainnet** | Etherscan | https://etherscan.io | -| **Polygon** | Polygonscan | https://polygonscan.com | -| **Binance Smart Chain** | BscScan | https://bscscan.com | -| **Arbitrum** | Arbiscan | https://arbiscan.io | -| **Optimism** | Optimistic Etherscan | https://optimistic.etherscan.io | -| **Avalanche** | SnowTrace | https://snowtrace.io | -| **Base** | BaseScan | https://basescan.org | - -### Advantages of Management via Blockchain Explorers - -**1. Complete independence from web application** -``` -Web application hacked → Blockchain works ✅ -Backend server down → Smart contracts work ✅ -Frontend unavailable → Can manage via Etherscan ✅ -``` - -**2. Impossible to forge data** -``` -Attacker on backend → Blockchain explorer shows truth -Fake frontend → Etherscan shows real tokens -Modified logic → Smart contract works as intended -``` - -**3. Access 24/7 from anywhere in the world** -``` -No server access → Etherscan always available -Application maintenance → Management via blockchain -DDoS attack on site → Blockchain unavailable for DDoS -``` - -**Response to hack:** -1. Users notice strange web application behavior -2. Check token balance directly via Etherscan ✅ -3. Create proposal via Etherscan for recovery -4. Vote for infrastructure recovery -5. Administrators restore backend from backup -6. **No tokens or assets lost** ✅ - -**Conclusion**: Web application is just a convenient interface. Real power and assets are on blockchain, where they are protected by cryptography and impossible to change or steal through web application hack. - -### Scenario 3: 51% Attack - -**Attack:** -``` -1. Attacker buys or gets >51% of all tokens -2. Creates proposal "Transfer all assets to me" -3. Votes with all own tokens "For" -4. Proposal approved -``` - -**Protection:** -```javascript -// Timelock Module gives time to react -const TIMELOCK = 7 days; - -// Other token holders can: -1. Vote "Against" (if they still have 49%) -2. Create counter-proposal -3. Contact law enforcement -4. Cancel proposal via emergency function (if configured) -``` - -**Long-term protection:** -- Even token distribution among partners -- Multisignature for large operations -- Quadratic voting (option for future versions) - -### Scenario 4: Social Engineering - -**Attack:** -``` -1. Attacker impersonates DLE support -2. Asks token holder "for verification" to sign message -3. Message is actually approval to transfer tokens -``` - -**Protection:** -```javascript -// Frontend always shows WHAT is being signed -function signMessage(message) { - // Show user exact content - const confirmation = confirm(` - You are about to sign: - ${message} - - ⚠️ NEVER sign messages at request of "support"! - - Continue? - `); - - if (!confirmation) return; - - // Sign -} -``` - -**Recommendations:** -- ❌ Support **NEVER** asks to sign message -- ❌ Don't trust "urgent" requests -- ✅ Always verify what you're signing -- ✅ If in doubt - contact official support - ---- - -## Conclusion - -### Multi-Layer DLE Protection - -``` -┌─────────────────────────────────────────────────────┐ -│ DLE Security Levels │ -├─────────────────────────────────────────────────────┤ -│ 1️⃣ Blockchain │ -│ └── Tokens cannot be stolen even with hack │ -│ │ -│ 2️⃣ Smart Contracts │ -│ └── Audit, OpenZeppelin, immutability │ -│ │ -│ 3️⃣ Voting with quorum │ -│ └── Impossible to make unilateral decisions │ -│ │ -│ 4️⃣ Timelock │ -│ └── Time to react in case of attack │ -│ │ -│ 5️⃣ Backend verification │ -│ └── Real-time token verification │ -│ │ -│ 6️⃣ Frontend protection │ -│ └── XSS, CSRF, rate limiting │ -│ │ -│ 7️⃣ Monitoring and alerts │ -│ └── Detection of suspicious actions │ -└─────────────────────────────────────────────────────┘ -``` - -### Key Security Advantages - -1. **🔐 Token-based access control** - - Without tokens access impossible - - Real-time verification on blockchain - -2. **🛡️ Protection from token theft** - - Cannot transfer without voting - - Even if wallet hacked, tokens protected - -3. **🌐 Independence from web application** - - Even if web application hacked, business assets protected on blockchain - - Can manage via blockchain explorers (Etherscan, Polygonscan, etc.) - - Smart contracts work independently of frontend/backend - - Web application is only convenient interface, real power on blockchain - -4. **⚖️ Collective governance** - - Critical decisions only through voting - - Quorum prevents unilateral actions - -5. **🔒 Modules under smart contract control** - - Only DLE contract can call modules - - No direct access - -6. **📊 Full transparency** - - All actions on blockchain - - Impossible to hide or forge - -### Next Steps - -1. 📖 [Study technical documentation](./blockchain-integration-technical.md) -2. 🔧 [Set up secure environment](./setup-instruction.md) -3. 📋 [Read FAQ](./FAQ.md) -4. 💬 [Get support](https://hb3-accelerator.com/) ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - -**Last update**: October 2025 - diff --git a/docs-en/service-terms.md b/docs-en/service-terms.md deleted file mode 100644 index 18dc1b9..0000000 --- a/docs-en/service-terms.md +++ /dev/null @@ -1,44 +0,0 @@ - - -# Digital Legal Entity Purchase and Service Terms — Brief Summary - -> Important: This is a brief summary of terms. The canonical and legally binding full text is located here: [legal-en/service-terms.md](../legal-en/service-terms.md). - -Key Points: -- License Type: Perpetual, rights determined by number of tokens (1 or 10). -- Updates and Basic Maintenance: Free for 5 years from on-chain token transfer date. -- Free Setup by Contractors: Within 5 years after license purchase (personalization, integration, AI configuration, feature customization). -- Development Voting: 1 token = 1 vote, decisions by majority ≥51%. -- 70% Refund possible if program conditions are met (see original). -- Support, releases, knowledge base — through application `https://hb3-accelerator.com/`. -- Full list of limitations/liability — in original. - -## 📚 Additional Documentation - -### Explore DLE Capabilities -- 🤖 **[AI Assistant](./ai-assistant.md)** - second pilot for team, frees time for strategy -- 💼 **[Blockchain for Business](./blockchain-for-business.md)** - asset tokenization and business solutions -- 🛡️ **[DLE Security](./security.md)** - multi-level protection for your business - -### Technical Documentation -- 🔗 **[Blockchain Technical Documentation](./blockchain-integration-technical.md)** - for developers -- 🔧 **[Installation Instructions](./setup-instruction.md)** - step-by-step setup -- 📝 **[Application Description](./application-description.md)** - functionality overview -- 📋 **[FAQ](./FAQ.md)** - frequently asked questions - -### Contacts and Support -- 📧 **Email**: info@hb3-accelerator.com -- 🌐 **Website**: https://hb3-accelerator.com -- 💬 **Support Chat**: https://hb3-accelerator.com/ -- 🐙 **GitHub**: https://github.com/VC-HB3-Accelerator - diff --git a/docs-en/setup-ai-assistant.md b/docs-en/setup-ai-assistant.md deleted file mode 100644 index 6a25c9f..0000000 --- a/docs-en/setup-ai-assistant.md +++ /dev/null @@ -1,929 +0,0 @@ -# AI Assistant Setup Guide with Vector Search - -## 🤖 Complete Guide to Launching an Intelligent Assistant - -This document describes the step-by-step process of setting up an AI assistant for solving business tasks through spreadsheets and vector search. - ---- - -## 📚 What You'll Set Up - -After completing the instructions, you will have: - -✅ Working AI assistant with local model (Ollama) -✅ Knowledge base for customer responses (FAQ) -✅ Supplier work automation -✅ Employee training system -✅ Vector search on your data -✅ Significant time and resource savings - -> 💡 **Economic Impact**: See [AI Assistant](./ai-assistant.md) - detailed description of all capabilities and savings calculations. - ---- - -## ⏱️ Setup Time - -- **Quick Setup**: 20-30 minutes (basic FAQ) -- **Full Setup**: 1-2 hours (all capabilities) - ---- - -## Step 1: Installing and Running Ollama - -### 1.1 Checking Ollama Status - -1. Go to **Settings** → **Integrations** tab -2. Find the **"Ollama"** block and click **"Details"** -3. Check connection status: - - ✅ **"Ollama is running"** — ready, proceed to step 1.3 - - ❌ **"Ollama API not responding"** — proceed to step 1.2 - -### 1.2 Starting Ollama (if not running) - -If Ollama is not running, execute in terminal: - -```bash -# For Docker (recommended) -docker-compose up -d ollama - -# Or locally -ollama serve -``` - -Refresh the page and check status again. - -### 1.3 Installing AI Model - -1. In the **Ollama** section, click **"Install Model"** -2. Select model: - - **qwen2.5:7b** (recommended) — for Russian, 4.7 GB - - **llama2:7b** — for English, 3.8 GB - - **mistral:7b** — universal, 4.1 GB -3. Click **"Install"** -4. Wait for download to complete (5-10 minutes depending on internet speed) - -> 💡 **Tip**: Model downloads once and is stored locally - -### 1.4 Installing Embedding Model - -1. In the same section, find **"Install Embedding Model"** -2. Select model: - - **mxbai-embed-large:latest** (recommended) — 670 MB - - **nomic-embed-text:latest** — alternative, 274 MB -3. Click **"Install"** - -> ⚠️ **Important**: Embedding model is needed for vector search (RAG) - ---- - -## Step 2: Creating Knowledge Base (Spreadsheets) - -### 2.1 Creating FAQ Table - -1. Go to **Tables** (in main menu) -2. Click **"+ Create Table"** -3. Fill in: - - **Name**: `FAQ - Frequently Asked Questions` - - **Description**: `Knowledge base for AI assistant customer service` -4. Click **"Create"** - -### 2.2 Configuring Table Columns - -Add the following columns: - -#### Column 1: Question (required for RAG) - -1. Click **"+ Add Column"** -2. Fill in: - - **Name**: `Question` - - **Type**: `Text` - - **Purpose**: Select `Question for AI` ⭐ -3. Click **"Save"** - -> ⚠️ **Critical**: Must select purpose "Question for AI" — this field will be indexed for vector search - -#### Column 2: Answer (required for RAG) - -1. Click **"+ Add Column"** -2. Fill in: - - **Name**: `Answer` - - **Type**: `Text` - - **Purpose**: Select `AI Answer` ⭐ -3. Click **"Save"** - -#### Column 3: Product (optional, for filtering) - -1. Click **"+ Add Column"** -2. Fill in: - - **Name**: `Product` - - **Type**: `Multiple Choice` - - **Options**: `Basic`, `Premium`, `Corporate` - - **Purpose**: Select `Product Filter` -3. Click **"Save"** - -#### Column 4: Tags (optional, for categorization) - -1. Click **"+ Add Column"** -2. Fill in: - - **Name**: `Tags` - - **Type**: `Multiple Choice` - - **Options**: `Payment`, `Delivery`, `Return`, `Warranty`, `Support` - - **Purpose**: Select `User Tags` -3. Click **"Save"** - -#### Column 5: Priority (optional) - -1. Click **"+ Add Column"** -2. Fill in: - - **Name**: `Priority` - - **Type**: `Number` - - **Purpose**: Select `Priority` -3. Click **"Save"** - -> 💡 **Tip**: Questions with higher priority will be shown to AI first - -### 2.3 Filling Knowledge Base - -Add typical questions and answers: - -**Example 1: Payment** - -| Question | Answer | Product | Tags | Priority | -|----------|--------|---------|------|----------| -| How to pay for order? | We accept payment by bank card, PayPal, or bank transfer. Choose convenient method when placing order. | All | Payment | 10 | -| Can I pay in installments? | Yes, for orders from 50,000₽ installment plan available for 3, 6 or 12 months without overpayment. | Premium, Corporate | Payment | 8 | - -**Example 2: Delivery** - -| Question | Answer | Product | Tags | Priority | -|----------|--------|---------|------|----------| -| How long does delivery take? | Standard delivery: 3-5 business days in Russia. Express delivery: 1-2 days in major cities. | All | Delivery | 10 | -| How much does delivery cost? | Free delivery for orders from 5,000₽. For orders less than 5,000₽ delivery cost is 300₽. | All | Delivery | 9 | - -**Example 3: Return** - -| Question | Answer | Product | Tags | Priority | -|----------|--------|---------|------|----------| -| How to return product? | Return possible within 14 days from receipt. Product must be in original packaging, with preserved appearance. Contact support to process return. | All | Return | 10 | -| When will money be returned? | Refund processed within 5-10 business days after product received at our warehouse. | All | Return | 8 | - -> 💡 **Recommendation**: Add minimum 20-30 questions for quality AI work. More questions = more accurate answers! - -### 2.4 Activating Table as AI Source - -1. In top right corner of table, find **⚙️ Table Settings** -2. Enable toggle **"Use as AI Source"** ✅ -3. Click **"Save"** - -> ✅ **Done!** Table is now indexed for vector search - ---- - -## Step 3: Configuring AI Provider (Ollama) - -### 3.1 Opening Ollama Settings - -1. Go to **Settings** → **Integrations** -2. Find **"Ollama"** block and click **"Details"** - -### 3.2 Checking Base URL - -1. Check **Base URL** field: - - For Docker: `http://ollama:11434` ✅ - - For local: `http://localhost:11434` -2. If URL is incorrect, fix and click **"Save"** - -### 3.3 Selecting Model - -1. In **"Model (LLM)"** field, select installed model: - - `qwen2.5:7b` (recommended for Russian) -2. In **"Embeddings Model"** field, select: - - `mxbai-embed-large:latest` -3. Click **"Save"** - ---- - -## Step 4: Configuring AI Assistant - -### 4.1 Opening Assistant Settings - -1. Go to **Settings** → **Integrations** -2. Find **"AI Assistant"** block and click **"Details"** - -### 4.2 Configuring System Prompt - -In **"System Prompt"** field, enter instructions for AI: - -**Basic Prompt (to start)**: - -``` -You are a professional customer support assistant. - -Rules: -1. Answer politely and professionally -2. Use information from knowledge base -3. If information not available — suggest contacting operator -4. Answer briefly and to the point -5. Always end with question "How else can I help?" -``` - -**Advanced Prompt (with personalization)**: - -``` -You are a professional customer support assistant for "Your Company Name". - -About company: -- We are engaged in [brief business description] -- Our values: quality, reliability, customer focus - -Communication style: -- Friendly but professional -- Address customer as "You" -- Use emojis moderately (1-2 per message) - -Response rules: -1. MANDATORY: Answer ONLY in Russian. All questions and answers must be in Russian -2. First search answer in knowledge base (RAG) -3. If found — answer based on found information -4. If not found — honestly say and suggest operator help -5. Don't make up information about prices, terms, conditions -6. For complex questions suggest contacting manager - -Always end with: "How else can I help? 😊" -``` - -### 4.3 Selecting Models - -1. **LLM Model**: Select `qwen2.5:7b (ollama)` -2. **Embedding Model**: Select `mxbai-embed-large:latest (ollama)` - -> 💡 **Tip**: Models automatically pulled from Ollama settings - -> 📊 **Context Window Size**: -> - **Qwen2.5:7b**: Base context = **32,768 tokens** (~24,000 Russian words) -> - Total data sent to model: -> - System prompt: ~500-2000 characters (~300-1200 tokens) -> - Conversation history: up to 20 messages (~100-500 tokens per message = ~2000-10000 tokens) -> - RAG context: ~500-2000 tokens (from found data) -> - Current question: ~50-200 tokens -> - **Total**: approximately 3,000-15,000 tokens (sufficient reserve) -> - If larger context needed → use Qwen3 with YaRN (up to 131K tokens) - -### 4.4 Selecting RAG Table - -1. In **"Selected RAG Tables"** field, select created table: - - `FAQ - Frequently Asked Questions` -2. Click **"Save"** - -### 4.5 Configuring AI Rules - -Create rule set for managing AI behavior: - -1. Click **"Create"** button next to "Rule Set" field -2. In modal window, fill in: - -**Name**: `Hybrid Mode (RAG + Generation)` - -**Description**: `AI first searches knowledge base, if not found — generates answer` - -**Rules (JSON)**: -```json -{ - "checkUserTags": true, - "searchRagFirst": true, - "generateIfNoRag": true, - "temperature": 0.7, - "maxTokens": 500 -} -``` - -3. Click **"Save"** -4. Select created rule in dropdown - -> 💡 **What parameters mean**: -> - `checkUserTags: true` — consider user tags when searching -> - `searchRagFirst: true` — first search knowledge base -> - `generateIfNoRag: true` — generate answer if nothing found -> - `temperature: 0.7` — balance between accuracy and creativity (0.0-1.0) -> - `maxTokens: 500` — maximum answer length - -### 4.6 RAG Search Settings - -Expand **"🔍 RAG Search Settings"** section: - -**Basic Settings:** -1. **Search Method**: Select `Hybrid Search` (recommended) -2. **Maximum Results**: `5` -3. **Relevance Threshold**: `0.1` (from 0.01 to 1.0) - -**Keyword Extraction:** -1. ✅ **Enable Keyword Extraction** -2. **Minimum Word Length**: `3` -3. **Maximum Keywords**: `10` -4. ✅ **Remove Stop Words** - -**Search Weights (for hybrid):** -1. **Semantic Search**: `70%` (accuracy) -2. **Keyword Search**: `30%` (speed) - -**Additional Settings:** -1. ✅ **Fuzzy Search** (for typos) -2. ✅ **Word Stemming** (finds different word forms) -3. ☐ **Synonym Search** (currently disabled) - -### 4.7 Saving Settings - -Click **"Save"** button at bottom of form. - ---- - -## Step 5: Testing AI Assistant - -### 5.1 Using Built-in Tester - -1. On AI assistant settings page, scroll down to **"🔍 System Monitoring"** block -2. In **"🧠 RAG Functionality Test"** section: - - Ensure table `FAQ - Frequently Asked Questions` is selected - - Enter test question: `How to pay for order?` - - Click **"Test RAG"** -3. Observe process: - - 🔍 Searching answer in knowledge base... (vector search) - - 🤖 Generating answer with AI... (LLM generation) - - ✅ Done! -4. Check result: - - Answer from your table should be displayed - - Score (similarity score): closer to 0 is better - -> 💡 **Good Score**: from -300 to 0 (answer found) -> ⚠️ **Bad Score**: greater than 300 (answer not found, AI will make up its own) - -### 5.2 Testing via Web Chat - -1. Go to application main page -2. Find **"💬 Chat with AI"** widget (usually bottom right) -3. Click widget to open chat -4. Enter question: `How much does delivery cost?` -5. Check AI response - -**Expected Result:** -``` -🤖 AI Assistant: -Free delivery for orders from 5,000₽. -For orders less than 5,000₽ delivery cost is 300₽. - -How else can I help? 😊 -``` - -### 5.3 Testing Different Scenarios - -Try asking various questions: - -**✅ Question from knowledge base:** -``` -User: "How to return product?" -AI: [Answer from FAQ table] -``` - -**⚠️ Question NOT from knowledge base:** -``` -User: "What's the weather today?" -AI: "Sorry, I specialize in questions about our company and products. - For weather questions, please contact specialized services. - How else can I help?" -``` - -**🎯 Question with typo:** -``` -User: "How to pay for order?" (typo) -AI: [Will find correct answer thanks to fuzzy search] -``` - ---- - -## Step 6: Advanced Capabilities (Optional) - -### 6.1 Creating Supplier Table - -#### "Supplier Database" Table Structure - -1. Create new table: `Supplier Database` -2. Add columns: - -| Column | Type | Description | -|--------|------|-------------| -| Company Name | Text | Supplier name | -| Product Category | Multiple Choice | Electronics, Furniture, Clothing, etc. | -| Contact Person | Text | Manager name | -| Email | Text | Email address | -| Phone | Text | Contact phone | -| Prices | Text | Price list (brief description) | -| Payment Terms | Text | Deferred payment, prepayment, etc. | -| Minimum Order | Number | Minimum order amount | -| Delivery Time | Text | Delivery terms | -| Rating | Number | Rating from 1 to 10 | -| Notes | Text | Additional information | - -3. Activate as AI source -4. Fill with your supplier data - -#### Prompt for AI Purchaser - -Add to system prompt: - -``` -ADDITIONALLY - Working with Suppliers: - -When user asks about suppliers: -1. Search in "Supplier Database" base -2. Filter by product category -3. Sort by rating and terms -4. Provide TOP-3 recommendations - -Response format: -🏆 TOP-3 suppliers for "[category]": - -1. [Name] ⭐ [Rating]/10 - 📧 [Email] | 📞 [Phone] - 💰 Terms: [Payment Terms] - 🚚 Delivery: [Delivery Time] - 📦 Minimum: [Minimum Order]₽ - -2. ... -3. ... - -I recommend contacting [First Supplier Name] — best terms. -``` - -### 6.2 Creating Employee Training Table - -#### "Employee Knowledge Base" Table Structure - -1. Create new table: `Employee Knowledge Base` -2. Add columns: - -| Column | Type | Description | -|--------|------|-------------| -| Question | Text | Employee question (purpose: Question for AI) | -| Answer | Text | Detailed answer (purpose: AI Answer) | -| Category | Multiple Choice | Sales, HR, Finance, IT, Marketing | -| Department | Multiple Choice | Which department it's relevant for | -| Difficulty | Number | From 1 (simple) to 5 (complex) | -| Instructions | Text | Step-by-step instructions (if any) | -| Links | Text | Links to documents/videos | -| Update Date | Date | When information was updated | - -3. Example questions: - -**"Sales" Category:** -- "How to process customer return?" -- "What discounts can be given to regular customers?" -- "How to work with corporate customers?" - -**"HR" Category:** -- "How to apply for vacation?" -- "Where to contact for sick leave?" -- "How does new employee onboarding work?" - -**"IT" Category:** -- "How to get access to corporate email?" -- "What to do with VPN problems?" -- "How to create support ticket?" - -### 6.3 Creating Table Relationships - -#### Example: "Customers" → "Orders" Relationship - -1. Create **"Customers"** table: - - Name, Email, Phone, Status (VIP/Regular) - -2. Create **"Orders"** table: - - Order Number, Date, Amount - -3. In "Orders" table, add column: - - **Name**: `Customer` - - **Type**: `Relation` - - **Related Table**: select `Customers` - - **Display Field**: select `Name` - -4. Add another column in "Orders": - - **Name**: `Customer Email` - - **Type**: `Lookup` - - **Relation Through**: select `Customer` column - - **Lookup Field**: select `Email` - -**Result**: When selecting customer, their Email is automatically filled! - -#### Using AI with Related Tables - -AI automatically understands relationships and can answer questions: - -``` -User: "Show all orders for customer Ivanov" -AI: [Searches Orders table, filters by customer Ivanov] -``` - ---- - -## Step 7: Telegram and Email Integration (Optional) - -### 7.1 Setting Up Telegram Bot - -1. Go to **Settings** → **Integrations** → **Telegram** -2. Create bot via [@BotFather](https://t.me/botfather) in Telegram: - - Send `/newbot` - - Choose bot name and username - - Copy **Bot Token** -3. In DLE settings, enter: - - **Bot Token**: paste token from BotFather - - **Bot Username**: your bot username (e.g., `@mycompany_bot`) -4. Click **"Save"** -5. In AI assistant settings, select this Telegram bot in **"Telegram Bot"** field - -**Result**: AI will respond to Telegram messages! - -### 7.2 Setting Up Email Integration - -1. Go to **Settings** → **Integrations** → **Email** -2. Fill IMAP settings (for receiving emails): - - **IMAP Host**: `imap.gmail.com` (for Gmail) - - **IMAP Port**: `993` - - **IMAP User**: your email - - **IMAP Password**: app password (not main password!) -3. Fill SMTP settings (for sending emails): - - **SMTP Host**: `smtp.gmail.com` - - **SMTP Port**: `587` - - **SMTP User**: your email - - **SMTP Password**: app password - - **From Email**: email for sending -4. Click **"Test IMAP"** and **"Test SMTP"** to verify -5. Click **"Save"** -6. In AI assistant settings, select this Email in **"Email Contact"** field - -> ⚠️ **Important for Gmail**: Create "App Password" in Google security settings - -**Result**: AI will automatically respond to incoming emails! - ---- - -## Step 8: Monitoring and Optimization - -### 8.1 Checking Service Status - -1. Go to **Settings** → **Integrations** → **AI Assistant** -2. Scroll down to **"🔍 System Monitoring"** -3. Click **"🔄 Refresh Status"** -4. Check statuses: - - 🟢 **Backend**: should be "Running" - - 🟢 **Postgres**: should be "Running" - - 🟢 **Ollama**: should show number of models - - 🟢 **Vector Search**: should be "Running" - -> ⚠️ If something is red (🔴) — see "Troubleshooting" section below - -### 8.2 Analyzing Answer Quality - -Regularly check AI answer quality: - -1. **Score in RAG Tester**: - - **-300 to 0** ✅ — excellent match - - **0 to 300** ⚠️ — average match - - **>300** ❌ — match not found - -2. **If Score is Bad**: - - Add more similar questions to table - - Use different phrasings of same question - - Increase relevance threshold (e.g., to 0.2) - -### 8.3 Optimizing RAG Settings - -Experiment with settings to improve results: - -**For More Accurate Answers:** -``` -Search Method: Semantic -Relevance Threshold: 0.05 (lower = stricter) -Weights: Semantic 100% / Keywords 0% -``` - -**For Faster Answers:** -``` -Search Method: Keyword Search -Maximum Results: 3 -``` - -**For Balance (Recommended):** -``` -Search Method: Hybrid -Weights: Semantic 70% / Keywords 30% -Relevance Threshold: 0.1 -``` - ---- - -## ✅ AI Assistant Ready to Work! - -### What You Now Have - -✅ **Local AI Assistant** without cloud dependency -✅ **FAQ Knowledge Base** for customer responses -✅ **Vector Search** for accurate answers -✅ **Configured Rules** for AI behavior -✅ **Monitoring System** for quality control - -### Economic Impact - -With proper AI assistant setup, you will get: - -✅ **Task Automation** - freeing time for strategy -✅ **Improved Service Quality** - AI works 24/7 without fatigue -✅ **Reduced Operating Costs** - less staff on routine tasks -✅ **Faster Decision Making** - instant access to information - -> 💡 **Detailed Information**: See [AI Assistant - Complete Description](./ai-assistant.md#economic-impact) - detailed description of all capabilities, use cases, and savings calculations. - ---- - -## 📚 Next Steps - -### Expand AI Capabilities - -1. **Add More Tables**: - - Partner knowledge base - - Employee instructions - - Product catalog - - Contact database - -2. **Create Rules for Different Scenarios**: - - Strict mode (RAG only) — for finance - - Creative mode (more generation) — for marketing - - Hybrid mode (balance) — for support - -3. **Integrate with Other Systems**: - - CRM (customer synchronization) - - Warehouse system (inventory) - - Accounting (invoices and payments) - -### Train Your Team - -1. Show employees how AI works -2. Explain how to add new questions to base -3. Establish regular knowledge base update process -4. Assign responsible person for AI answer quality - ---- - -## 🆘 Troubleshooting - -### Problem: Ollama Not Starting - -**Symptoms**: Status "Ollama API not responding" - -**Solution**: -```bash -# Check container -docker ps | grep ollama - -# Restart -docker-compose restart ollama - -# Check logs -docker-compose logs ollama -``` - -### Problem: AI Answers Inaccurately - -**Symptoms**: Answers don't match knowledge base - -**Solution**: -1. Check Score in tester (should be < 300) -2. Add more question variations to table -3. Decrease relevance threshold (e.g., to 0.05) -4. Check that columns have correct purposes ("Question for AI", "AI Answer") - -### Problem: Vector Search Not Working - -**Symptoms**: Vector Search status shows error - -**Solution**: -1. Check if Embedding model is installed -2. Rebuild index: on table page click **"🔄 Rebuild Index"** -3. Check that table is activated as AI source - -### Problem: AI Answers in Wrong Language - -**Symptoms**: Answers in English instead of Russian - -**Solution**: -1. Change system prompt, adding at start: `ALWAYS answer in Russian.` -2. Use `qwen2.5:7b` model instead of `llama2:7b` -3. In AI rules, set `"language": "ru"` - -### Problem: Slow Responses - -**Symptoms**: AI responds longer than 5-10 seconds - -**Solution**: -1. Use smaller model (`mistral:7b` instead of `qwen2.5:14b`) -2. Decrease `maxResults` in RAG settings (e.g., to 3) -3. Disable "Synonym Search" in additional settings -4. Use SSD for storing models - ---- - -## 📖 Additional Documentation - -### Learn AI Capabilities - -- 🤖 **[AI Assistant - Complete Description](./ai-assistant.md)** - all capabilities and use cases -- 📊 **[Spreadsheet System](./tables-system.md)** - technical description of tables (temporary) -- ⚙️ **[AI Configuration](./setup-ai-assistant.md#technical-documentation-for-developers)** - technical setup details - -### General Documentation - -- 🛡️ **[Security](./security.md)** - how AI protects your data -- 💼 **[Blockchain for Business](./blockchain-for-business.md)** - AI integration with blockchain -- 📋 **[FAQ](./FAQ.md)** - frequently asked questions - -### Support - -- 💬 **Support Chat**: https://hb3-accelerator.com/ -- 📧 **Email**: info@hb3-accelerator.com -- 📚 **Knowledge Base**: https://hb3-accelerator.com - ---- - -## 🔧 Technical Documentation (for Developers) - -### AI System Architecture - -``` -┌───────────────────────────────────────────────────────────┐ -│ AI Assistant Configuration in DLE │ -├───────────────────────────────────────────────────────────┤ -│ │ -│ 🤖 AI Providers: │ -│ ├── OpenAI (GPT-4, GPT-3.5) │ -│ ├── Anthropic (Claude) │ -│ ├── Google (Gemini) │ -│ └── Ollama (local models) │ -│ │ -│ ⚙️ AI Settings: │ -│ ├── System Prompt │ -│ ├── LLM Model Selection │ -│ ├── Embedding Model Selection │ -│ ├── RAG Table Selection │ -│ ├── Rules │ -│ └── RAG Search Settings │ -│ │ -│ 📋 Rules: │ -│ ├── JSON behavior configuration │ -│ ├── Create/edit/delete │ -│ └── Link to AI assistant │ -│ │ -│ 🔗 Integrations: │ -│ ├── Email (IMAP + SMTP) │ -│ └── Telegram Bot │ -│ │ -│ 🔍 RAG: │ -│ ├── Table selection for search │ -│ ├── Search settings (hybrid/semantic) │ -│ ├── Relevance threshold │ -│ └── Keyword extraction │ -│ │ -│ 📊 Monitoring: │ -│ ├── Service status (Backend, Ollama, Postgres) │ -│ ├── RAG functionality test │ -│ └── Progress tracking │ -│ │ -└───────────────────────────────────────────────────────────┘ -``` - -### Database - -#### Table: `ai_providers_settings` - -```sql -CREATE TABLE IF NOT EXISTS ai_providers_settings ( - id SERIAL PRIMARY KEY, - provider_encrypted TEXT, -- Provider: openai, anthropic, google, ollama - api_key_encrypted TEXT, -- API key (encrypted) - base_url_encrypted TEXT, -- Base URL for API - selected_model_encrypted TEXT, -- Selected LLM model - embedding_model_encrypted TEXT, -- Selected Embedding model - created_at TIMESTAMP NOT NULL DEFAULT NOW(), - updated_at TIMESTAMP NOT NULL DEFAULT NOW() -); -``` - -#### Table: `ai_assistant_settings` - -```sql -CREATE TABLE IF NOT EXISTS ai_assistant_settings ( - id SERIAL PRIMARY KEY, - system_prompt_encrypted TEXT, -- System prompt - selected_rag_tables INTEGER[], -- Array of RAG table IDs - languages TEXT[], -- Array of supported languages - model_encrypted TEXT, -- Selected LLM model - embedding_model_encrypted TEXT, -- Selected Embedding model - rules JSONB, -- Rules (DEPRECATED) - rules_id INTEGER REFERENCES ai_assistant_rules(id), -- Rule reference - telegram_settings_id INTEGER, -- Telegram bot reference - email_settings_id INTEGER, -- Email settings reference - rag_settings JSONB, -- RAG search settings - updated_at TIMESTAMP DEFAULT NOW(), - updated_by INTEGER -); -``` - -#### Table: `ai_assistant_rules` - -```sql -CREATE TABLE IF NOT EXISTS ai_assistant_rules ( - id SERIAL PRIMARY KEY, - name TEXT NOT NULL, -- Rule set name - description TEXT, -- Rule description - rules JSONB NOT NULL, -- JSON configuration - rules_encrypted TEXT, -- Encrypted version of rules - created_at TIMESTAMP DEFAULT NOW(), - updated_at TIMESTAMP DEFAULT NOW() -); -``` - -### Backend API - -#### AI Provider Settings - -- **GET** `/settings/ai-settings/:provider` — Get provider settings -- **PUT** `/settings/ai-settings/:provider` — Save provider settings -- **DELETE** `/settings/ai-settings/:provider` — Delete provider settings -- **GET** `/settings/ai-settings/:provider/models` — Get model list -- **POST** `/settings/ai-settings/:provider/verify` — Verify API key - -#### AI Assistant Settings - -- **GET** `/settings/ai-assistant` — Get assistant settings -- **PUT** `/settings/ai-assistant` — Save assistant settings - -#### AI Rules - -- **GET** `/settings/ai-assistant-rules` — Get all rules -- **GET** `/settings/ai-assistant-rules/:id` — Get rule by ID -- **POST** `/settings/ai-assistant-rules` — Create rule -- **PUT** `/settings/ai-assistant-rules/:id` — Update rule -- **DELETE** `/settings/ai-assistant-rules/:id` — Delete rule - -#### Ollama (Local Models) - -- **GET** `/ollama/status` — Check Ollama status -- **GET** `/ollama/models` — Get model list -- **POST** `/ollama/install` — Install model -- **DELETE** `/ollama/models/:modelName` — Delete model - -### Frontend Pages - -- **`/settings/ai`** — Main integrations page -- **`/settings/ai/:provider`** — AI provider settings -- **`/settings/ai/assistant`** — AI assistant settings - -### Message Processing Flow - -``` -1. User → Message - ↓ -2. UnifiedMessageProcessor - ↓ -3. Language Check (Russian only) - ↓ -4. Deduplication (message hash) - ↓ -5. Load Settings (aiAssistantSettingsService) - ↓ -6. Load Rules (aiAssistantRulesService) - ↓ -7. RAG Search (ragService) - ├── Semantic Search (vector search) - ├── Keyword Search - └── Hybrid Search - ↓ -8. Generate Answer (generateLLMResponse) - ├── System Prompt - ├── Conversation History - ├── RAG Context - └── Rules - ↓ -9. Answer → User -``` - -### Security - -- **Encryption**: All sensitive fields encrypted with AES-256 -- **Access Rights**: Only administrators can change settings -- **Validation**: All input data and API keys validated - ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - -**Document Version**: 1.0.0 -**Creation Date**: October 25, 2025 - diff --git a/docs-en/setup-instruction.md b/docs-en/setup-instruction.md deleted file mode 100644 index e856e4f..0000000 --- a/docs-en/setup-instruction.md +++ /dev/null @@ -1,196 +0,0 @@ - - -# Digital Legal Entity Application Setup Instructions - -## 🚀 Complete System Initialization Process - -This document describes the complete process of preparing the application for work with blockchain support, smart contracts, and access management system. - ---- - -## Step 1: Software Installation - -1. Clone the project repository to your local device -2. Run the application via Docker Compose or locally depending on configuration -3. Open the web application in browser: `http://localhost:9000` (production) or `http://localhost:5173` (dev mode) - ---- - -## Step 2: Crypto Wallet Connection - -1. Make sure you have a browser wallet installed (MetaMask, WalletConnect, or similar) -2. In the wallet, create or import an account with governance token -3. In the web application, click the **"Connect Wallet"** button -4. Select wallet type and confirm connection -5. After successful connection, you will see your account address in the top corner - ---- - -## Step 3: Adding RPC Providers (Security → RPC Providers) - -1. Go to **Settings** → **Security** tab -2. Find the **"RPC Providers"** section -3. Click the **"Add"** button -4. Fill out the form for each blockchain network you want to use: - - **Network Name** (e.g.: Ethereum, Polygon, BSC) - - **RPC URL** (connection link, example: `https://eth-mainnet.g.alchemy.com/v2/YOUR-API-KEY`) - - **Network ID** (Chain ID) -5. Click **"Save"** for each provider -6. The system will automatically verify connection correctness - -> ⚠️ **Important**: Get API keys from providers (Alchemy, Infura, Quicknode, etc.) before adding - ---- - -## Step 4: Multi-Deploy Smart Contract Setup - -1. Go to **Settings** → **Blockchain** tab -2. Fill out the form -3. Click **"Launch Deploy"** - ---- - -## Step 5: Deploy Completion and Contract Address Saving - -1. Wait for deploy completion (depends on network, usually 30-120 seconds) -2. After successful completion, the **"Contract Management"** page will open -3. **Copy the deployed contract address** (usually looks like: `0x742d35Cc6634C0532925a3b844Bc...`) - ---- - -## Step 6: Smart Contract Authentication Setup - -1. Return to **Settings** → **Authentication** tab -2. In the **"Smart Contract Address"** field, paste the address copied in step 5 -3. Set thresholds for access management: - - **Minimum number of tokens for editing** (e.g.: 100 tokens) - - **Minimum number of tokens for viewing** (e.g.: 1 token) - ---- - -## Step 7: AI and Database Setup - -1. Go to **Settings** → **AI** tab -2. Open the **"Database"** subsection -3. Replace default passwords -4. Click **"Generate New Encryption Key"** - - The system will automatically create a cryptographic key - - **Save the key in a secure place** (it will be needed for data recovery) - ---- - -## Step 8: Internet Access Setup (Optional) - -**If you need access to the web application from outside via internet:** - -1. Go to **Settings** → **Server** tab -2. On the **Server** page, select **WEB SSH** or another suitable service -3. Fill out the form to migrate local application to a virtual device with: - - **Public IP address** - - **Connection to your domain name** -4. Click **"Publish"** -5. Wait for migration process completion - -> ℹ️ **Note**: This step requires having a registered domain name and access to DNS settings - ---- - -## Step 9: Legal Documents Setup for Personal Data Processing - -### 9.1 Filling Company Legal Information - -1. Go to **CRM** → **Content** section -2. Find and open the **"Company Legal Information"** form -3. Fill in all necessary fields: - - **Full Organization Name** (legal name) - - **Short Name** - - **Legal Form** (LLC, sole proprietor, JSC, etc.) - - **Legal Address** - - **Actual Address** (if different) - - **INN / OGRN / KPP** (registration data) - - **Contact Information** (phone, email, website) - - **Responsible Person for Personal Data Processing** (Full Name, position) - - **Applicable Jurisdiction** (GDPR, CCPA, Russian legislation, etc.) -4. Click **"Save"** - -> 💡 **Hint**: All entered data will automatically be inserted into all legal document templates - -### 9.2 Working with Document Templates - -1. In the **Content** section, go to the **"Templates"** subsection -2. Select necessary document templates required by regulators: - - **Privacy Policy** - - **User Agreement** - - **Personal Data Processing Consent** - - **Cookie Usage Policy** -3. For each template: - - Click **"Preview"** to check automatically filled data - - Edit specific data processing parameters if necessary - - Select action: - - **"Publish for Public Use"** — document will be available on the site - - **"Publish for Internal Use"** — document available only within CRM - - **"Print"** — export to PDF for printing or signing -4. Confirm publication -5. The system will automatically add documents to corresponding application pages - -> ⚠️ **Important**: It is recommended to consult with a lawyer before publishing documents to ensure full compliance with legal requirements - ---- - -## ✅ Application Ready to Work! - -After completing all steps, your application is fully configured and ready to use. - -**Next Steps:** -- 📖 AI Assistant Setup (see document: `setup-ai-assistant.md`) -- 🔐 Smart Contract Management (see document: `manage-smart-contracts.md`) - ---- - -## 🆘 Security Recommendations - -✓ Keep contract addresses and encryption keys in a secure place -✓ Use strong passwords for DB -✓ Regularly create configuration backups -✓ Never share wallet private keys -✓ Use HTTPS for application access in production - ---- - -## 📝 What's Next? - -After completing basic setup, you can: -1. Add users and manage their permissions -2. Create groups for collaboration -3. Configure AI assistant for task automation -4. Manage smart contracts to extend functionality -5. Integrate external services and bots - ---- - -## 📚 Additional Documentation - -### Explore DLE Capabilities -- 🤖 **[AI Assistant](./ai-assistant.md)** - learn how AI can become a second pilot for your team -- 💼 **[Blockchain for Business](./blockchain-for-business.md)** - how asset tokenization solves business tasks -- 🛡️ **[Security](./security.md)** - multi-level protection for your business - -### Technical Information -- 🔗 **[Blockchain Technical Documentation](./blockchain-integration-technical.md)** - for developers -- 📋 **[FAQ](./FAQ.md)** - frequently asked questions -- 📝 **[Application Description](./application-description.md)** - functionality overview - -### Support -- 💬 **Support Chat**: https://hb3-accelerator.com/ -- 📧 **Email**: info@hb3-accelerator.com - diff --git a/docs-en/system-messages-management.md b/docs-en/system-messages-management.md deleted file mode 100644 index 6e07486..0000000 --- a/docs-en/system-messages-management.md +++ /dev/null @@ -1,132 +0,0 @@ -# Technical Specification: System Messages Management - -## 1. Goal and Context -- Provide managed display of system messages on the main page (`/`, component `HomeView.vue`) and add an administrative interface for their creation and moderation in the content section (`/content`, component `ContentListView.vue`). -- System messages must support "draft" and "published" statuses, be stored in the database, and be accessible via REST API. - -## 2. Current State -- The main page is built by component `HomeView.vue` and displays the assistant chat (`ChatInterface.vue`), in which system messages (`Message.vue`) are highlighted by the `message.role === 'system'` attribute. -- The content section (`ContentListView.vue`) contains navigation cards: "Create Page", "Templates", "Public", "Settings", "Internal". Cards lead to existing routes `content-create`, `content-templates`, `content-published`, `content-settings`, `content-internal`. -- The project lacks entities and API for system messages; current `pagesService.js` works only with pages (`/pages`). - -## 3. New User Scenarios -- **Viewing System Messages (main page, `/`):** - - Published system messages are loaded into the assistant chat and displayed as collapsed cards with clickable headers. - - When clicking the header, the message expands: the chat feed displays the full message text **or** sends a pre-prepared response from the AI assistant (the "response" content is stored with the message and selected by the `reply_type` flag). - - Messages must be explicitly marked as system (color, icon). When reopened, the user sees the last expansion state; local "read" memory is possible. -- **"System Messages" Section (`/content`):** - - On the `/content` page, a new "System Messages" card appears with a "Details" button. Navigation leads to a page with a user table (`/content/system-messages/table`), built on existing table components (see `UserTablesList.vue`), without a separate dashboard of cards. - - The table displays system messages row by row, with multiple selection via checkboxes; available bulk actions: publish, unpublish, move to drafts, delete. - - For each message, clicking "Details" (within the row) opens view/edit with a form (see below). -- **Create/Edit (`/content/system-messages/create`, `/content/system-messages/:id/edit`):** - - Form with fields: title, brief description, main text (Markdown/HTML), response type (`inline` — show content, `assistant_reply` — send prepared assistant response), "Assistant Reply" field (active when `assistant_reply`), importance tag (info/warning/danger), publication start date (optional), end date (optional), flag for guest display. - - Buttons: "Save as Draft", "Publish". When editing — "Update", "Unpublish", "Delete". - - Validations: title and main text required (or assistant reply in corresponding mode); date validation (end ≥ start). -- **Working with System Messages Table:** - - Columns: selection checkbox, title (clickable), status, response type, active period, target audience (guests/authenticated/all), creation date, author. - - Bulk actions are performed for selected rows; single actions available via context menu/buttons in row (edit, publish, unpublish, delete). - -## 4. Interface Requirements -- In `ContentListView.vue`, add "System Messages" card to the `management-blocks` grid with a `Details` button. The card design should match existing blocks (header, description, button). -- System messages table page: - - Use `BaseLayout` and local styles (`scoped`). - - Table supports sorting, filtering by status, and search by title. - - Checkboxes in header and rows for bulk selection; action panel appears when selection exists. - - "Create Message" button opens creation form. -- Create/Edit Form: - - Rich-text (minimum Markdown) with preview and character/word counters. - - Display mode toggle (`inline`/`assistant_reply`) with conditional display of "Assistant Reply" field (can use ``). - - Field for icon/color selection by `severity` (static presets). -- Main Page: - - System messages are displayed in the chat block as collapsed cards (`system-message-collapsed`). Clicking the header expands the card (`system-message-expanded`) or initiates assistant sending (UI shows "message from assistant"). - - For expanded messages, provide "Collapse" button and (optionally) "Mark as Read". Store state in `localStorage`. - -## 5. Routing and Components -- Add routes in `router/index.js`: -- - `/content/system-messages/table` → `SystemMessagesTableView.vue` -- - `/content/system-messages/create` → `SystemMessageCreateView.vue` -- - `/content/system-messages/:id` → `SystemMessageDetailsView.vue` (view) -- - `/content/system-messages/:id/edit` → `SystemMessageEditView.vue` -- If needed for modal/nested routes, child routes or named views can be used. -- Create corresponding Vue components in `src/views/content/system-messages/` and a common set of reusable elements (table, form, filters, bulk actions) in `src/components/system-messages/`. -- Create service `src/services/systemMessagesService.js` with methods for the new API. - -## 6. API and Data Requirements -- **New Table** `system_messages` (PostgreSQL): - - `id` (uuid, pk) - - `title` (text, not null) - - `summary` (text, nullable) - - `content` (text, not null) - - `reply_type` (enum: inline, assistant_reply; default inline) - - `assistant_reply_content` (text, nullable; required when `reply_type = assistant_reply`) - - `severity` (enum: info, warning, danger; default info) - - `status` (enum: draft, published; not null) - - `visible_for` (enum: all, authenticated, guests; default all) - - `publish_at` (timestamp, nullable) - - `expire_at` (timestamp, nullable) - - `created_at`, `updated_at` - - `created_by`, `updated_by` (references users/identities, nullable) - - `slug` (text, unique, for addressing by link if needed) -- **REST API (Express):** - - `GET /system-messages` (pagination, filters by status, search) - - `GET /system-messages/published` (filtering by date/audience; public) - - `GET /system-messages/:id` (access only for authorized editors) - - `POST /system-messages` (creation; `MANAGE_LEGAL_DOCS` permission) - - `PATCH /system-messages/:id` (editing; status checks) - - `DELETE /system-messages/:id` (soft delete or physical) - - `POST /system-messages/:id/publish` and `POST /system-messages/:id/unpublish` (optional, if not using PATCH) -- All protected endpoints must require authorization and permissions (see `permissions.js`, `usePermissions`). -- Add new migration (`backend/scripts/run-migrations.js`) and ORM/SQL files in the project's existing format. -- Update logging and error handling `winston`, add input validation (e.g., `Joi` or custom). - -## 7. Frontend Display Logic -- `HomeView.vue`: - - On initialization, request published system messages (considering current audience) via `systemMessagesService.getPublished({ includeExpired: false })`. - - Cache response in store or local state; when subscribing to WebSocket, can provide `system_message_updated` event. - - Add expansion handler: on header click, either substitute full message text (`inline`), or initiate sending `assistant_reply_content` to chat (without user participation). - - Add message hiding handler, saving identifier in `localStorage` and filtering locally. -- `ContentListView.vue`: - - Add new "System Messages" card to the `management-blocks` grid, without breaking the adaptive grid (update `grid-template-columns` if needed). -- List Pages: - - Implement pagination (lazy loading or regular), sorting by date. - - For statuses, use color badges (info/warning/danger). -- Creation Form: - - Support submit via `yarn lint`-friendly code; client-side validation (e.g., using `computed`/`watch`). - - On successful publication, redirect to published list; when saving draft — stay on page with notification. - -## 8. Security and Access Requirements -- Creation/editing scenarios available only to roles with `PERMISSIONS.MANAGE_LEGAL_DOCS`. -- Public list (`GET /system-messages/published`) filters by: - - `status === 'published'`. - - `publish_at <= now()` (or null). - - `expire_at > now()` (or null). - - `visible_for` is checked based on context (guest/authenticated). -- When issuing through chat, hide fields `created_by`, `updated_by`, internal tags. -- Consider CSRF, CORS, rate-limit (adopt config from existing routes). - -## 9. Testing -- **Backend:** - - Unit tests for CRUD in `tests/system-messages/*.test.js` (Mocha). - - Check publish/expire filters and role-based access. - - Test migration (rollback/apply). -- **Frontend:** - - Vue unit tests (if configured) for main components (form, list). - - E2E (if available) — scenario: create draft → publish → display on main page. -- **Regression Checks:** - - Ensure existing content list and assistant chat continue to work without errors (`yarn lint`, `yarn test`). - -## 10. Integration and DevOps -- Update `docker-compose.yml` if needed (e.g., add migrations to startup process). -- Ensure new environment variables (if any, e.g., message count limits) are documented in `README.md` and `setup-instruction.md`. -- Add seeding script (optional) for test system messages. - -## 11. Open Questions -- Is publication history (auditing) needed? If yes — provide `system_messages_history` table. -- Is multilingual support required? (If absent — limit to one language, EN). -- Is WebSocket notification needed when new messages appear? (If yes — add event to `wsHub.js`). - -## 12. Final Artifacts -- Backend: new routes, controllers, service, migration. -- Frontend: new pages and service, updated routes and components `HomeView`, `ContentListView`. -- Documentation: update `README.md` (launch section), `application-description.md` or `tables-system.md` when schemas change, this specification. - diff --git a/docs-en/tables-system.md b/docs-en/tables-system.md deleted file mode 100644 index f64dbda..0000000 --- a/docs-en/tables-system.md +++ /dev/null @@ -1,1639 +0,0 @@ -# Electronic Tables System in DLE - -> **Temporary document for internal analysis** - ---- - -## 📋 Table of Contents - -1. [System Overview](#system-overview) -2. [Database Architecture](#database-architecture) -3. [Field Types](#field-types) -4. [Functional Capabilities](#functional-capabilities) -5. [Relations Between Tables](#relations-between-tables) -6. [AI Integration (RAG)](#ai-integration-rag) -7. [API Reference](#api-reference) -8. [Usage Examples](#usage-examples) -9. [Security](#security) - ---- - -## System Overview - -### What is it? - -The electronic tables system in DLE is a **full-featured database with graphical interface**, similar to **Notion Database** or **Airtable**, built into the application. - -### Key Features - -``` -┌─────────────────────────────────────────────────────────┐ -│ DLE Electronic Tables │ -├─────────────────────────────────────────────────────────┤ -│ │ -│ ✅ 6 field types (text, number, relation, lookup, etc.)│ -│ ✅ Relations between tables (1:1, 1:N, N:N) │ -│ ✅ Lookup and data substitution │ -│ ✅ Filtering and sorting │ -│ ✅ Real-time updates (WebSocket) │ -│ ✅ AI integration (RAG for search) │ -│ ✅ Encryption of all data (AES-256) │ -│ ✅ Placeholders for API access │ -│ ✅ Cascading deletion │ -│ ✅ Bulk operations │ -│ │ -└─────────────────────────────────────────────────────────┘ -``` - -### Differences from Excel/Google Sheets - -| Feature | Excel/Sheets | DLE Tables | -|---------|--------------|------------| -| **Data typing** | Weak | Strict (6 types) | -| **Relations between tables** | No | Yes (relation, lookup) | -| **AI search** | No | Yes (RAG, vector search) | -| **Real-time updates** | Partial | Full (WebSocket) | -| **Encryption** | No | AES-256 for all data | -| **API access** | Limited | Full REST API | -| **Access rights** | Basic | Detailed (by roles) | - ---- - -## Database Architecture - -### Table Schema (PostgreSQL) - -```sql -┌──────────────────────────────────────────────────────────┐ -│ user_tables │ -├──────────────────────────────────────────────────────────┤ -│ id SERIAL PRIMARY KEY │ -│ name_encrypted TEXT NOT NULL │ -│ description_encrypted TEXT │ -│ is_rag_source_id INTEGER (link to is_rag_source) │ -│ created_at TIMESTAMP │ -│ updated_at TIMESTAMP │ -└──────────────────────────────────────────────────────────┘ - ↓ -┌──────────────────────────────────────────────────────────┐ -│ user_columns │ -├──────────────────────────────────────────────────────────┤ -│ id SERIAL PRIMARY KEY │ -│ table_id INTEGER → user_tables(id) │ -│ name_encrypted TEXT NOT NULL │ -│ type_encrypted TEXT NOT NULL │ -│ placeholder_encrypted TEXT (for API) │ -│ placeholder TEXT (unencrypted) │ -│ options JSONB (settings) │ -│ order INTEGER (display order) │ -│ created_at TIMESTAMP │ -│ updated_at TIMESTAMP │ -└──────────────────────────────────────────────────────────┘ - ↓ -┌──────────────────────────────────────────────────────────┐ -│ user_rows │ -├──────────────────────────────────────────────────────────┤ -│ id SERIAL PRIMARY KEY │ -│ table_id INTEGER → user_tables(id) │ -│ order INTEGER (row order) │ -│ created_at TIMESTAMP │ -│ updated_at TIMESTAMP │ -└──────────────────────────────────────────────────────────┘ - ↓ -┌──────────────────────────────────────────────────────────┐ -│ user_cell_values │ -├──────────────────────────────────────────────────────────┤ -│ id SERIAL PRIMARY KEY │ -│ row_id INTEGER → user_rows(id) │ -│ column_id INTEGER → user_columns(id) │ -│ value_encrypted TEXT (encrypted value) │ -│ created_at TIMESTAMP │ -│ updated_at TIMESTAMP │ -│ UNIQUE(row_id, column_id) ← One cell = one value │ -└──────────────────────────────────────────────────────────┘ - ↓ -┌──────────────────────────────────────────────────────────┐ -│ user_table_relations │ -├──────────────────────────────────────────────────────────┤ -│ id SERIAL PRIMARY KEY │ -│ from_row_id INTEGER → user_rows(id) │ -│ column_id INTEGER → user_columns(id) │ -│ to_table_id INTEGER → user_tables(id) │ -│ to_row_id INTEGER → user_rows(id) │ -│ created_at TIMESTAMP │ -│ updated_at TIMESTAMP │ -└──────────────────────────────────────────────────────────┘ -``` - -### Cascading Deletion - -``` -Table deletion (user_tables) - ↓ - ├── Deletes all columns (user_columns) - ├── Deletes all rows (user_rows) - │ └── Deletes all cell values (user_cell_values) - └── Deletes all relations (user_table_relations) -``` - -**Important**: Uses `ON DELETE CASCADE` for automatic cleanup. - -### Indexes for Performance - -```sql --- Indexes on relations (user_table_relations) -CREATE INDEX idx_user_table_relations_from_row ON user_table_relations(from_row_id); -CREATE INDEX idx_user_table_relations_column ON user_table_relations(column_id); -CREATE INDEX idx_user_table_relations_to_table ON user_table_relations(to_table_id); -CREATE INDEX idx_user_table_relations_to_row ON user_table_relations(to_row_id); -``` - -**Effect**: Fast filtering and search by related tables. - ---- - -## Field Types - -### 1. Text - -**Description**: Regular text field - -```json -{ - "type": "text", - "options": null -} -``` - -**Usage**: -- Names -- Descriptions -- Email -- URL -- Any text - -### 2. Number - -**Description**: Numeric field - -```json -{ - "type": "number", - "options": null -} -``` - -**Usage**: -- Prices -- Quantities -- Ratings -- Percentages - -### 3. Multiselect - -**Description**: Multiple value selection from list - -```json -{ - "type": "multiselect", - "options": { - "choices": ["Option 1", "Option 2", "Option 3"] - } -} -``` - -**Usage**: -- Tags -- Categories -- Statuses -- Skills - -### 4. Multiselect-Relation - -**Description**: Multiple row selection from another table - -```json -{ - "type": "multiselect-relation", - "options": { - "relatedTableId": 5, - "relatedColumnId": 12 - } -} -``` - -**Usage**: -- Relation Contacts → Tags (N:N) -- Relation Tasks → Assignees (N:N) -- Relation Products → Categories (N:N) - -**Storage**: In `user_table_relations` table, multiple records created: -``` -from_row_id=100, column_id=3, to_table_id=5, to_row_id=20 -from_row_id=100, column_id=3, to_table_id=5, to_row_id=21 -from_row_id=100, column_id=3, to_table_id=5, to_row_id=22 -``` - -### 5. Relation - -**Description**: Relation with one row from another table (1:1 or 1:N) - -```json -{ - "type": "relation", - "options": { - "relatedTableId": 3, - "relatedColumnId": 8 - } -} -``` - -**Usage**: -- Task → Project (N:1) -- Contact → Company (N:1) -- Order → Client (N:1) - -**Storage**: In `user_table_relations`, one record created: -``` -from_row_id=50, column_id=2, to_table_id=3, to_row_id=15 -``` - -### 6. Lookup - -**Description**: Automatic value substitution from related table - -```json -{ - "type": "lookup", - "options": { - "relatedTableId": 4, - "relatedColumnId": 10, - "lookupColumnId": 11 // Which field to substitute - } -} -``` - -**Example**: -``` -Table "Orders" -├── order_id (text) -├── product (relation → Products) -└── product_price (lookup → Products.price) - -When you select product, price is automatically substituted! -``` - -**Usage**: -- Prices from catalog -- Email from contacts -- Statuses from related tasks - ---- - -## Functional Capabilities - -### 1. CRUD Operations - -#### Create Table - -```javascript -// Frontend -await tablesService.createTable({ - name: "Contacts", - description: "Customer database", - isRagSourceId: 2 // Source for AI -}); - -// Backend: POST /tables -// Encrypts name and description with AES-256 -``` - -#### Add Column - -```javascript -await tablesService.addColumn(tableId, { - name: "Email", - type: "text", - order: 2, - purpose: "contact" // For special fields -}); - -// Backend: POST /tables/:id/columns -// Generates unique placeholder: "email", "email_1", ... -``` - -#### Add Row - -```javascript -await tablesService.addRow(tableId); - -// Backend: POST /tables/:id/rows -// Automatically indexes in vector store for AI -``` - -#### Update Cell (Upsert) - -```javascript -await tablesService.saveCell({ - row_id: 123, - column_id: 5, - value: "new@email.com" -}); - -// Backend: POST /tables/cell -// INSERT ... ON CONFLICT ... DO UPDATE -// Automatically updates vector store -``` - -#### Delete Row - -```javascript -await tablesService.deleteRow(rowId); - -// Backend: DELETE /tables/row/:rowId -// Rebuilds vector store (rebuild) -``` - -#### Delete Column - -```javascript -await tablesService.deleteColumn(columnId); - -// Backend: DELETE /tables/column/:columnId -// Cascading deletion: -// 1. All relations (user_table_relations) -// 2. All cell values (user_cell_values) -// 3. Column itself -``` - -#### Delete Table - -```javascript -await tablesService.deleteTable(tableId); - -// Backend: DELETE /tables/:id -// Required: req.session.userAccessLevel?.hasAccess -// Cascading deletion of all related data -``` - -### 2. Data Filtering - -#### By Product - -```javascript -GET /tables/5/rows?product=Premium - -// Backend filters rows: -filtered = rows.filter(r => r.product === 'Premium'); -``` - -#### By Tags - -```javascript -GET /tables/5/rows?tags=VIP,B2B - -// Backend filters rows with any of tags: -filtered = rows.filter(r => - r.userTags.includes('VIP') || r.userTags.includes('B2B') -); -``` - -#### By Relations - -```javascript -GET /tables/5/rows?relation_12=45,46 - -// Filter rows related to to_row_id = 45 or 46 -// through column column_id = 12 -``` - -#### By Multiselect - -```javascript -GET /tables/5/rows?multiselect_8=10,11,12 - -// All selected values must be present -``` - -### 3. Placeholder System - -**Automatic generation**: - -```javascript -// Function: generatePlaceholder(name, existingPlaceholders) - -"Customer Name" → "customer_name" -"Email" → "email" -"Email" (2nd time) → "email_1" -"123" → "column" (fallback) -"Price-$" → "price" -``` - -**Transliteration**: -```javascript -const cyrillicToLatinMap = { - а: 'a', б: 'b', в: 'v', г: 'g', д: 'd', - е: 'e', ё: 'e', ж: 'zh', з: 'z', и: 'i', - // ... full map -}; -``` - -**Usage**: -```javascript -// API access to data via placeholder -GET /tables/5/data?fields=email,phone,customer_name -``` - -### 4. Row Order - -```javascript -// Change row order (drag-n-drop) -await tablesService.updateRowsOrder(tableId, [ - { rowId: 100, order: 0 }, - { rowId: 101, order: 1 }, - { rowId: 102, order: 2 } -]); - -// Backend: PATCH /tables/:id/rows/order -// Updates "order" field for each row -``` - -### 5. Real-Time Updates (WebSocket) - -```javascript -// Backend sends notifications on changes -broadcastTableUpdate(tableId); // Table update -broadcastTableRelationsUpdate(); // Relations update -broadcastTagsUpdate(null, rowId); // Tags update - -// Frontend subscribes to events -socket.on('table-update', (data) => { - if (data.tableId === currentTableId) { - reloadTableData(); - } -}); -``` - -### 6. Bulk Operations - -```javascript -// Select multiple rows (checkbox) -const selectedRows = [100, 101, 102]; - -// Bulk deletion -for (const rowId of selectedRows) { - await tablesService.deleteRow(rowId); -} - -// After deletion: automatic rebuild vector store -``` - ---- - -## Relations Between Tables - -### Relation Types - -#### 1. One-to-Many (N:1) - Relation - -**Example**: Tasks → Projects - -``` -Table "Tasks" Table "Projects" -├── task_1 → project_id=5 ├── project_5 (Website) -├── task_2 → project_id=5 └── project_6 (API) -└── task_3 → project_id=6 -``` - -**Storage**: -```sql -user_table_relations -├── from_row_id=task_1, column_id=3, to_table_id=2, to_row_id=project_5 -├── from_row_id=task_2, column_id=3, to_table_id=2, to_row_id=project_5 -└── from_row_id=task_3, column_id=3, to_table_id=2, to_row_id=project_6 -``` - -#### 2. Many-to-Many (N:N) - Multiselect-Relation - -**Example**: Contacts → Tags - -``` -Table "Contacts" Table "Tags" -├── contact_1 → [VIP, B2B] ├── tag_1 (VIP) -├── contact_2 → [VIP] ├── tag_2 (B2B) -└── contact_3 → [B2B, Local] └── tag_3 (Local) -``` - -**Storage**: -```sql -user_table_relations -├── from_row_id=contact_1, column_id=5, to_table_id=3, to_row_id=tag_1 -├── from_row_id=contact_1, column_id=5, to_table_id=3, to_row_id=tag_2 -├── from_row_id=contact_2, column_id=5, to_table_id=3, to_row_id=tag_1 -├── from_row_id=contact_3, column_id=5, to_table_id=3, to_row_id=tag_2 -└── from_row_id=contact_3, column_id=5, to_table_id=3, to_row_id=tag_3 -``` - -#### 3. Lookup (Substitution) - -**Example**: Orders → Product Price - -``` -Table "Orders" -├── order_id (text) -├── product (relation → Products) -└── price (lookup → Products.price) - -Table "Products" -├── product_name (text) -└── price (number) -``` - -**How it works**: -1. Select `product = "Laptop"` (relation to product) -2. `price` automatically substituted from `Products.price` -3. If product price changes, lookup updates - -### API for Working with Relations - -```javascript -// Get all row relations -GET /tables/:tableId/row/:rowId/relations - -// Add relation -POST /tables/:tableId/row/:rowId/relations -Body: { - column_id: 12, - to_table_id: 5, - to_row_id: 45 -} - -// Add multiple relations (multiselect) -POST /tables/:tableId/row/:rowId/relations -Body: { - column_id: 12, - to_table_id: 5, - to_row_ids: [45, 46, 47] -} - -// Delete relation -DELETE /tables/:tableId/row/:rowId/relations/:relationId -``` - ---- - -## AI Integration (RAG) - -### Vector Search - -Tables are used as **knowledge base for AI assistant**. - -#### Automatic Indexing - -**On row creation/modification**: - -```javascript -// Backend: POST /tables/:id/rows -const rows = await getTableRows(tableId); -const upsertRows = rows - .filter(r => r.row_id && r.text) - .map(r => ({ - row_id: r.row_id, - text: r.text, // Question (question column) - metadata: { - answer: r.answer, // Answer (answer column) - product: r.product, // Product filter - userTags: r.userTags, // Tags filter - priority: r.priority // Priority - } - })); - -if (upsertRows.length > 0) { - await vectorSearchClient.upsert(tableId, upsertRows); -} -``` - -**On row deletion**: - -```javascript -// Backend: DELETE /tables/row/:rowId -const rows = await getTableRows(tableId); -const rebuildRows = /* ... */; - -if (rebuildRows.length > 0) { - await vectorSearchClient.rebuild(tableId, rebuildRows); -} -``` - -#### Special Fields for RAG - -```javascript -// Columns with purpose -{ - "type": "text", - "options": { - "purpose": "question" // Question for AI - } -} - -{ - "type": "text", - "options": { - "purpose": "answer" // AI Answer - } -} - -{ - "type": "multiselect", - "options": { - "purpose": "product" // Product filter - } -} - -{ - "type": "multiselect", - "options": { - "purpose": "userTags" // Tags filter - } -} -``` - -#### Manual Index Rebuild - -```javascript -// Frontend (admins only) -await tablesService.rebuildIndex(tableId); - -// Backend: POST /tables/:id/rebuild-index -// Required: req.session.userAccessLevel?.hasAccess -const { questionCol, answerCol } = await getQuestionAnswerColumnIds(tableId); -const rows = await getRowsWithQA(tableId, questionCol, answerCol); - -if (rows.length > 0) { - await vectorSearchClient.rebuild(tableId, rows); -} -``` - -#### How AI Uses Tables - -``` -1. User asks AI question: - "How to return product?" - -2. AI does vector search: - vectorSearch.search(tableId, query, top_k=3) - -3. Finds similar questions in table: - - row_id: 123 - - text: "How to process product return?" - - score: -250 (close to threshold 300) - - metadata: { answer: "Return within 14 days..." } - -4. AI returns answer from metadata.answer - -5. If not found (score > 300): - AI generates answer via LLM (Ollama) -``` - -#### Filtering by Products and Tags - -```javascript -// Search only by product "Premium" -const results = await vectorSearch.search(tableId, query, 3); -const filtered = results.filter(r => r.metadata.product === 'Premium'); - -// Search only by tags "VIP" or "B2B" -const filtered = results.filter(r => - r.metadata.userTags.includes('VIP') || - r.metadata.userTags.includes('B2B') -); -``` - ---- - -## API Reference - -### Tables - -#### GET /tables - -Get list of all tables - -**Response**: -```json -[ - { - "id": 1, - "name": "Contacts", - "description": "Customer database", - "is_rag_source_id": 2, - "created_at": "2025-01-15T10:00:00Z", - "updated_at": "2025-01-15T10:00:00Z" - } -] -``` - -#### POST /tables - -Create new table - -**Request**: -```json -{ - "name": "Contacts", - "description": "Customer database", - "isRagSourceId": 2 -} -``` - -**Response**: Created table object - -#### GET /tables/:id - -Get table structure and data - -**Response**: -```json -{ - "name": "Contacts", - "description": "Customer database", - "columns": [ - { - "id": 1, - "table_id": 1, - "name": "Email", - "type": "text", - "placeholder": "email", - "options": null, - "order": 0 - } - ], - "rows": [ - { - "id": 100, - "table_id": 1, - "order": 0, - "created_at": "2025-01-15T10:00:00Z" - } - ], - "cellValues": [ - { - "id": 500, - "row_id": 100, - "column_id": 1, - "value": "user@example.com" - } - ] -} -``` - -#### PATCH /tables/:id - -Update table metadata - -**Request**: -```json -{ - "name": "Customers", - "description": "Updated description" -} -``` - -#### DELETE /tables/:id - -Delete table (admins only) - -**Requirements**: `req.session.userAccessLevel?.hasAccess === true` - -### Columns - -#### POST /tables/:id/columns - -Add column - -**Request**: -```json -{ - "name": "Email", - "type": "text", - "order": 2, - "purpose": "contact" -} -``` - -#### PATCH /tables/column/:columnId - -Update column - -**Request**: -```json -{ - "name": "New name", - "type": "text", - "order": 5 -} -``` - -#### DELETE /tables/column/:columnId - -Delete column (cascading deletion of all values) - -### Rows - -#### POST /tables/:id/rows - -Add row - -**Response**: Created row object - -#### DELETE /tables/row/:rowId - -Delete row - -#### PATCH /tables/:id/rows/order - -Change row order - -**Request**: -```json -{ - "order": [ - { "rowId": 100, "order": 0 }, - { "rowId": 101, "order": 1 } - ] -} -``` - -### Cells - -#### POST /tables/cell - -Create or update cell value (upsert) - -**Request**: -```json -{ - "row_id": 100, - "column_id": 5, - "value": "new@email.com" -} -``` - -**Logic**: -```sql -INSERT INTO user_cell_values (row_id, column_id, value_encrypted) -VALUES ($1, $2, encrypt_text($3, $4)) -ON CONFLICT (row_id, column_id) -DO UPDATE SET value_encrypted = encrypt_text($3, $4), updated_at = NOW() -``` - -### Filtering - -#### GET /tables/:id/rows - -Get filtered rows - -**Parameters**: -``` -?product=Premium // Filter by product -&tags=VIP,B2B // Filter by tags -&relation_12=45,46 // Filter by relation (column_id=12) -&multiselect_8=10,11 // Filter by multiselect (column_id=8) -&lookup_15=100 // Filter by lookup (column_id=15) -``` - -### RAG Index - -#### POST /tables/:id/rebuild-index - -Rebuild vector index (admins only) - -**Requirements**: `req.session.userAccessLevel?.hasAccess === true` - -**Response**: -```json -{ - "success": true, - "count": 150 -} -``` - -### Relations - -#### GET /tables/:tableId/row/:rowId/relations - -Get all row relations - -**Response**: -```json -[ - { - "id": 1000, - "from_row_id": 100, - "column_id": 12, - "to_table_id": 5, - "to_row_id": 45 - } -] -``` - -#### POST /tables/:tableId/row/:rowId/relations - -Add relation or relations - -**Single relation**: -```json -{ - "column_id": 12, - "to_table_id": 5, - "to_row_id": 45 -} -``` - -**Multiple relations** (multiselect): -```json -{ - "column_id": 12, - "to_table_id": 5, - "to_row_ids": [45, 46, 47] -} -``` - -**Logic**: -- Deletes old relations for column_id -- Adds new relations - -#### DELETE /tables/:tableId/row/:rowId/relations/:relationId - -Delete relation - -### Placeholders - -#### GET /tables/:id/placeholders - -Get placeholders for table columns - -**Response**: -```json -[ - { - "id": 1, - "name": "Email", - "placeholder": "email" - }, - { - "id": 2, - "name": "Customer Name", - "placeholder": "customer_name" - } -] -``` - -#### GET /tables/placeholders/all - -Get all placeholders across all tables - -**Response**: -```json -[ - { - "column_id": 1, - "column_name": "Email", - "placeholder": "email", - "table_id": 1, - "table_name": "Contacts" - } -] -``` - ---- - -## Usage Examples - -### Example 1: FAQ Knowledge Base for AI - -#### Create Table - -```javascript -const table = await tablesService.createTable({ - name: "FAQ", - description: "Frequently asked questions for AI", - isRagSourceId: 2 // RAG source -}); -``` - -#### Add Columns - -```javascript -// Question (for vector search) -await tablesService.addColumn(table.id, { - name: "Question", - type: "text", - order: 0, - purpose: "question" -}); - -// Answer (for AI) -await tablesService.addColumn(table.id, { - name: "Answer", - type: "text", - order: 1, - purpose: "answer" -}); - -// Product (for filtering) -await tablesService.addColumn(table.id, { - name: "Product", - type: "multiselect", - order: 2, - purpose: "product", - options: { - choices: ["Basic", "Premium", "Enterprise"] - } -}); - -// Tags (for filtering) -await tablesService.addColumn(table.id, { - name: "Tags", - type: "multiselect", - order: 3, - purpose: "userTags", - options: { - choices: ["Payment", "Delivery", "Return", "Warranty"] - } -}); -``` - -#### Add Data - -```javascript -// Add row -const row = await tablesService.addRow(table.id); - -// Fill cells -await tablesService.saveCell({ - row_id: row.id, - column_id: 1, // Question - value: "How to return product?" -}); - -await tablesService.saveCell({ - row_id: row.id, - column_id: 2, // Answer - value: "Product return is possible within 14 days of purchase..." -}); - -// Automatically indexed in vector store! -``` - -#### Search via AI - -```javascript -// User asks AI -const userQuestion = "can I return my purchase?"; - -// AI does vector search -const results = await vectorSearch.search(table.id, userQuestion, 3); - -// Finds similar question "How to return product?" (score: -200) -// Returns answer from metadata.answer -``` - -### Example 2: CRM System - -#### Structure - -```javascript -// Table "Companies" -const companies = await tablesService.createTable({ - name: "Companies", - description: "Company database" -}); - -await tablesService.addColumn(companies.id, { - name: "Name", - type: "text", - order: 0 -}); - -await tablesService.addColumn(companies.id, { - name: "Website", - type: "text", - order: 1 -}); - -await tablesService.addColumn(companies.id, { - name: "Industry", - type: "multiselect", - order: 2, - options: { choices: ["IT", "Finance", "Retail", "Manufacturing"] } -}); - -// Table "Contacts" -const contacts = await tablesService.createTable({ - name: "Contacts", - description: "Contact database" -}); - -await tablesService.addColumn(contacts.id, { - name: "Name", - type: "text", - order: 0 -}); - -await tablesService.addColumn(contacts.id, { - name: "Email", - type: "text", - order: 1 -}); - -// Relation: Contact → Company -await tablesService.addColumn(contacts.id, { - name: "Company", - type: "relation", - order: 2, - options: { - relatedTableId: companies.id, - relatedColumnId: 1 // Company name - } -}); - -// Lookup: Company Website -await tablesService.addColumn(contacts.id, { - name: "Company Website", - type: "lookup", - order: 3, - options: { - relatedTableId: companies.id, - relatedColumnId: 2, // Relation through "Company" - lookupColumnId: 2 // Substitute "Website" - } -}); -``` - -#### Usage - -```javascript -// Add company -const company = await tablesService.addRow(companies.id); -await tablesService.saveCell({ - row_id: company.id, - column_id: 1, - value: "Microsoft" -}); -await tablesService.saveCell({ - row_id: company.id, - column_id: 2, - value: "https://microsoft.com" -}); - -// Add contact -const contact = await tablesService.addRow(contacts.id); -await tablesService.saveCell({ - row_id: contact.id, - column_id: 1, - value: "John Doe" -}); - -// Link contact to company -await api.post(`/tables/${contacts.id}/row/${contact.id}/relations`, { - column_id: 3, // "Company" - to_table_id: companies.id, - to_row_id: company.id -}); - -// Lookup automatically substitutes "https://microsoft.com"! -``` - -### Example 3: Task Management - -#### Structure - -```javascript -// Table "Projects" -const projects = await tablesService.createTable({ - name: "Projects", - description: "Active projects" -}); - -await tablesService.addColumn(projects.id, { - name: "Name", - type: "text", - order: 0 -}); - -await tablesService.addColumn(projects.id, { - name: "Status", - type: "multiselect", - order: 1, - options: { choices: ["Planning", "In Progress", "Completed"] } -}); - -// Table "Tasks" -const tasks = await tablesService.createTable({ - name: "Tasks", - description: "Project tasks" -}); - -await tablesService.addColumn(tasks.id, { - name: "Name", - type: "text", - order: 0 -}); - -await tablesService.addColumn(tasks.id, { - name: "Project", - type: "relation", - order: 1, - options: { - relatedTableId: projects.id, - relatedColumnId: 1 - } -}); - -await tablesService.addColumn(tasks.id, { - name: "Priority", - type: "number", - order: 2 -}); - -await tablesService.addColumn(tasks.id, { - name: "Status", - type: "multiselect", - order: 3, - options: { choices: ["To Do", "In Progress", "Review", "Done"] } -}); -``` - -#### Filter Tasks by Project - -```javascript -// Get all tasks for project with ID = 5 -const tasks = await api.get(`/tables/${tasks.id}/rows?relation_2=5`); - -// Get tasks with priority > 5 -const highPriority = tasks.filter(task => { - const priority = cellValues.find( - cell => cell.row_id === task.id && cell.column_id === 3 - )?.value; - return parseInt(priority) > 5; -}); -``` - ---- - -## Security - -### Data Encryption - -**All sensitive data encrypted with AES-256**: - -```javascript -// Encrypted: -name_encrypted // Table name -description_encrypted // Description -value_encrypted // Cell values -placeholder_encrypted // Placeholders - -// NOT encrypted (for indexes and performance): -placeholder // Unencrypted placeholder -options // JSONB settings -order // Order -``` - -**Encryption functions in PostgreSQL**: - -```sql --- Encryption -encrypt_text(plain_text, encryption_key) - --- Decryption -decrypt_text(encrypted_text, encryption_key) - --- Usage example -INSERT INTO user_tables (name_encrypted) -VALUES (encrypt_text('Contacts', $1)); - -SELECT decrypt_text(name_encrypted, $1) as name -FROM user_tables; -``` - -### Access Rights - -```javascript -// View: all authorized users -GET /tables -GET /tables/:id -GET /tables/:id/rows - -// Editing: users with rights -if (!canEditData) { - return res.status(403).json({ error: 'Access denied' }); -} -POST /tables/:id/columns -POST /tables/:id/rows -POST /tables/cell -PATCH /tables/column/:columnId - -// Deletion: administrators only -if (!req.session.userAccessLevel?.hasAccess) { - return res.status(403).json({ error: 'Administrators only' }); -} -DELETE /tables/:id -DELETE /tables/column/:columnId -DELETE /tables/row/:rowId -POST /tables/:id/rebuild-index -``` - -### Token-Based Rights Verification - -```javascript -// Backend checks token balance -const address = req.session.address; -const dleContract = new ethers.Contract(dleAddress, dleAbi, provider); -const balance = await dleContract.balanceOf(address); - -if (balance === 0n) { - return res.status(403).json({ - error: 'Access denied: no tokens' - }); -} - -// Determine access level -const accessLevel = determineAccessLevel(balance); -req.session.userAccessLevel = accessLevel; -``` - -### SQL Injection Protection - -**Parameterized queries**: - -```javascript -// ✅ Safe (parameters) -await db.getQuery()( - 'SELECT * FROM user_tables WHERE id = $1', - [tableId] -); - -// ❌ DANGEROUS (concatenation) -await db.getQuery()( - `SELECT * FROM user_tables WHERE id = ${tableId}` -); -``` - -### Input Validation - -```javascript -// Type check -if (typeof name !== 'string') { - return res.status(400).json({ error: 'Invalid name' }); -} - -// Existence check -const exists = await db.getQuery()( - 'SELECT id FROM user_tables WHERE id = $1', - [tableId] -); -if (!exists.rows[0]) { - return res.status(404).json({ error: 'Table not found' }); -} - -// Uniqueness check (placeholder) -const duplicate = await db.getQuery()( - 'SELECT id FROM user_columns WHERE placeholder = $1 AND id != $2', - [placeholder, columnId] -); -if (duplicate.rows.length > 0) { - placeholder = generateUniquePlaceholder(); -} -``` - -### Cascading Deletion (Protection from Orphaned Data) - -```sql --- All relations with ON DELETE CASCADE -CREATE TABLE user_columns ( - table_id INTEGER NOT NULL - REFERENCES user_tables(id) ON DELETE CASCADE -); - -CREATE TABLE user_rows ( - table_id INTEGER NOT NULL - REFERENCES user_tables(id) ON DELETE CASCADE -); - -CREATE TABLE user_cell_values ( - row_id INTEGER NOT NULL - REFERENCES user_rows(id) ON DELETE CASCADE, - column_id INTEGER NOT NULL - REFERENCES user_columns(id) ON DELETE CASCADE -); - --- Result: table deletion automatically deletes EVERYTHING -``` - -### Rate Limiting - -```javascript -// Can be added in backend/routes/tables.js -const rateLimit = require('express-rate-limit'); - -const tablesLimiter = rateLimit({ - windowMs: 15 * 60 * 1000, // 15 minutes - max: 100, // 100 requests - message: 'Too many requests to tables' -}); - -router.use(tablesLimiter); -``` - ---- - -## Performance - -### Optimizations - -#### 1. Parallel Queries - -```javascript -// Instead of sequential queries: -const tableMeta = await db.query('SELECT ...'); -const columns = await db.query('SELECT ...'); -const rows = await db.query('SELECT ...'); -const cellValues = await db.query('SELECT ...'); - -// Use parallel: -const [tableMeta, columns, rows, cellValues] = await Promise.all([ - db.query('SELECT ...'), - db.query('SELECT ...'), - db.query('SELECT ...'), - db.query('SELECT ...') -]); - -// Speedup: 4x -``` - -#### 2. Indexes on Relations - -```sql -CREATE INDEX idx_user_table_relations_from_row - ON user_table_relations(from_row_id); - -CREATE INDEX idx_user_table_relations_to_table - ON user_table_relations(to_table_id); - --- Result: fast filtering by relations -``` - -#### 3. UNIQUE Constraint - -```sql -CREATE TABLE user_cell_values ( - ... - UNIQUE(row_id, column_id) -); - --- Advantages: --- 1. Prevents duplicate cells --- 2. Speeds up upsert (ON CONFLICT) --- 3. Automatic index -``` - -#### 4. WebSocket Instead of Polling - -```javascript -// ❌ Polling (slow) -setInterval(async () => { - const data = await fetchTableData(); - updateUI(data); -}, 5000); - -// ✅ WebSocket (instant) -socket.on('table-update', (data) => { - if (data.tableId === currentTableId) { - updateUI(data); - } -}); - -// Result: real-time updates, no server load -``` - -#### 5. Caching - -```javascript -// Backend can add cache for frequently requested tables -const NodeCache = require('node-cache'); -const tableCache = new NodeCache({ stdTTL: 300 }); // 5 minutes - -router.get('/:id', async (req, res) => { - const cacheKey = `table_${req.params.id}`; - const cached = tableCache.get(cacheKey); - - if (cached) { - return res.json(cached); - } - - const data = await fetchTableData(req.params.id); - tableCache.set(cacheKey, data); - res.json(data); -}); -``` - -### Metrics - -**Typical response times**: -``` -GET /tables → 50-100ms (all tables) -GET /tables/:id → 150-300ms (with data, Promise.all) -POST /tables/cell → 100-200ms (upsert + vector update) -DELETE /tables/row/:id → 200-400ms (deletion + rebuild vector) -POST /tables/:id/rebuild-index → 1-5s (depends on size) -``` - -**Optimal table sizes**: -``` -Rows: up to 10,000 → Excellent -Rows: 10,000-50,000 → Good -Rows: >50,000 → Need additional optimizations (pagination, lazy load) -``` - ---- - -## Limitations and Future Improvements - -### Current Limitations - -1. **No pagination**: All rows loaded at once - - For large tables (>1000 rows) may be slow - -2. **No formulas**: Cannot create calculated fields - - Workaround: use lookup - -3. **No grouping**: Cannot group rows - - Workaround: filtering on frontend - -4. **No change history**: Not tracked who and when changed - - Can add audit trail - -5. **Limited sorting**: Only through order field - - No column sorting on backend - -### Possible Improvements - -```javascript -// 1. Pagination -GET /tables/:id/rows?page=1&limit=50 - -// 2. Sorting -GET /tables/:id/rows?sort_by=column_id&order=asc - -// 3. Formulas -{ - "type": "formula", - "options": { - "formula": "{{price}} * {{quantity}}" - } -} - -// 4. Change history -CREATE TABLE user_cell_history ( - id SERIAL PRIMARY KEY, - cell_id INTEGER REFERENCES user_cell_values(id), - old_value TEXT, - new_value TEXT, - changed_by INTEGER, - changed_at TIMESTAMP -); - -// 5. Export/import -POST /tables/:id/export → CSV/Excel -POST /tables/:id/import ← CSV/Excel - -// 6. Table templates -POST /tables/templates/crm → Create CRM from template -POST /tables/templates/tasks → Create Kanban from template -``` - ---- - -## Conclusion - -The electronic tables system in DLE is a **powerful tool** for managing structured data with: - -✅ **Flexible structure** (6 field types) -✅ **Relations between tables** (relation, lookup) -✅ **AI integration** (RAG, vector search) -✅ **Real-time updates** (WebSocket) -✅ **Security** (AES-256, access rights) -✅ **Performance** (indexes, parallel queries) - -This is **not just Excel**, but a **full-featured database** with convenient interface and AI assistant! - ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - -**Document version**: 1.0.0 -**Creation date**: October 25, 2025 -**Status**: Temporary (for internal use) - diff --git a/docs/FAQ.md b/docs/FAQ.md deleted file mode 100644 index 1aa5185..0000000 --- a/docs/FAQ.md +++ /dev/null @@ -1,1213 +0,0 @@ -# FAQ - Часто задаваемые вопросы по Digital Legal Entity (DLE) - -## 📋 Содержание - -1. [Общие вопросы](#общие-вопросы) -2. [Лицензирование и оплата](#лицензирование-и-оплата) -3. [Установка и развертывание](#установка-и-развертывание) -4. [Блокчейн и смарт-контракты](#блокчейн-и-смарт-контракты) -5. [Токенизация активов](#токенизация-активов) -6. [Система голосования](#система-голосования) -7. [AI Ассистент](#ai-ассистент) -8. [Техническая поддержка](#техническая-поддержка) -9. [Функциональность](#функциональность) -10. [Безопасность](#безопасность) -11. [Обновления](#обновления) -12. [Экономический эффект](#экономический-эффект) - ---- - -## Общие вопросы - -### Что такое Digital Legal Entity (DLE)? - -**Digital Legal Entity (DLE)** — микросервисная IT-инфраструктура с веб-приложением для локального развёртывания на серверах компании. - -**Включает:** -- Инструменты настройки ИИ-агентов -- Систему смарт-контрактов с поддержкой: - - Реквизитов юридических лиц - - Идентификаторов для финансовых операций, установленных регулятором - -**Преимущества:** -- Управление и автоматизация бизнес-процессов -- Замена разрозненных SaaS-сервисов с ежемесячными подписками -- Соответствие требованиям регуляторов к хранению и обработке данных - -**Основные компоненты:** - -- **CRM и управление контактами** - централизованная база клиентов с историей взаимодействий -- **AI ассистент с векторным поиском** - локальный ИИ для автоматизации бизнес-процессов -- **Омниканальную систему коммуникаций** - Telegram, Email, Web чат, SMS в едином интерфейсе -- **Блокчейн интеграцию** - мультичейн поддержка (Ethereum, Polygon, BSC, Arbitrum, Optimism, Avalanche, Base) -- **Блокчейн-управление** - через смарт-контракты и голосование токен-холдеров -- **Токенизацию активов** - превращение любых активов в цифровые токены -- **Группы и пространства для команд** - настраиваемые пространства для проектов с системой разрешений - -### Для кого предназначено DLE? - -DLE создано для **всех типов организаций**, нуждающихся в прозрачном коллективном управлении: - -- **Коммерческие организации** (ООО, АО, ИП, холдинги) -- **Некоммерческие организации** (НКО, фонды, ассоциации) -- **Государственные структуры** (муниципалитеты, ведомства) -- **Международные организации** (межправительственные, глобальные) -- **Инвестиционные фонды** и **венчурные компании** -- **Стартапы** и **малый бизнес** -- **Кооперативы** и **объединения** -- **Любые другие организации** с потребностью в коллективном управлении - -### В чем отличие от SaaS решений? - -| Параметр | DLE | Обычные SaaS | -|----------|-----|--------------| -| **Владение данными** | Полное (на вашей инфраструктуре) | Данные у провайдера | -| **Контроль** | 100% контроль | Ограниченный | -| **Оплата** | Единоразово (бессрочная лицензия) | Ежемесячная подписка | -| **Кастомизация** | Полная | Ограниченная | -| **Соответствие законам** | Под ваш регион | Зависит от провайдера | -| **AI без лимитов** | Бесплатно | $200+/месяц | -| **Блокчейн** | Встроен | Нет или доп. плата | -| **Обновления** | Бесплатно 5 лет (для держателей токенов) | Зависит от тарифа | - -### Какие технологии используются? - -- **Frontend**: Vue.js 3 + Vite + Element Plus -- **Backend**: Node.js + Express -- **База данных**: PostgreSQL + pgvector -- **AI**: Ollama (локальные LLM модели) + FAISS Vector Search (RAG) -- **Блокчейн**: Ethers.js v6, Hardhat, OpenZeppelin -- **Контейнеризация**: Docker Compose -- **Пакетный менеджер**: Yarn - ---- - -## Лицензирование и оплата - -### Сколько стоит DLE? - -**Краткая справка по ценам:** - -| Тип лицензии | Цена | Токенов управления | Голосов | -|--------------|------|-------------------|---------| -| **Standard** | $1,000 USDT | 1 токен | 1 голос | -| **Priority** | $10,000 USDT | 10 токенов | 10 голосов | - -**⚠️ Важно**: -- Все цены указаны БЕЗ УЧЕТА НАЛОГОВ -- Комиссии за платежи и конвертацию несет покупатель -- Условия обслуживания одинаковы для обеих лицензий - -### Что входит в лицензию? - -✅ **Все лицензии включают:** -- Пожизненный доступ к приложению -- Все будущие обновления бесплатно 5 лет (для держателей токенов) -- **Бесплатная настройка подрядчиками в течение 5 лет** (персонализация под ваш вид деятельности, интеграция с бизнес-процессами, настройка ИИ-ассистента, настройка блокчейн-учёта, доработка функционала при необходимости) -- Техническую поддержку через портал -- AI ассистент 24/7 без лимитов -- Участие в голосовании за новые функции -- Онлайн-сессии обучения (групповые и индивидуальные) -- Полный исходный код с документацией - -**Единственное различие** - количество голосов в системе управления. - -### Есть ли подписка или ежемесячные платежи? - -**Нет!** DLE использует модель **бессрочной лицензии** (Perpetual License): -- Оплата один раз -- Доступ навсегда -- Все обновления бесплатно 5 лет для держателей лицензионных токенов (см. [legal/service-terms.md](../legal/service-terms.md)) -- **Бесплатная настройка подрядчиками в течение 5 лет** после покупки лицензии -- Никаких скрытых платежей -- AI работает без лимитов на запросы - -### Какие есть типы лицензий? - -**Два типа лицензий** (различие только в количестве голосов): - -| Тип лицензии | Цена | Токенов | Голосов | Влияние | -|--------------|------|---------|---------|---------| -| **Standard** | $1,000 USDT | 1 токен | 1 голос | Базовое | -| **Priority** | $10,000 USDT | 10 токенов | 10 голосов | Усиленное | - -**Условия обслуживания одинаковые** для обеих лицензий. - -### Что такое токены управления? - -**Токены управления** - это ERC20 токены на блокчейне, которые дают: -- **Право голоса** за развитие продукта (1 токен = 1 голос) -- **Участие в голосовании** за новые функции -- **Влияние на приоритеты** разработки -- **Доступ к управлению** : https://hb3-accelerator.com/ - -### Можно ли использовать несколько видов деятельности? - -**Нет, одна лицензия = один вид деятельности**: -- Каждая лицензия привязана к одному виду бизнеса -- Для разных видов деятельности нужны отдельные лицензии -- Можно переопределить вид деятельности, но только один одновременно - -### Что входит в техническую поддержку? - -**Все держатели лицензий получают**: -- 🌐 **Портал поддержки**: https://hb3-accelerator.com/ -- 💬 **Чат с поддержкой** 24/7 -- 🤖 **AI ассистент** для консультаций -- 🎓 **Онлайн-сессии обучения** (групповые и индивидуальные) -- 📚 **Библиотека записей** всех сессий -- 📧 **Email поддержка** -- ✅ **Бесплатная настройка подрядчиками в течение 5 лет** (персонализация, интеграция, настройка ИИ, доработка функционала) - -### Как работает система голосования? - -**Демократическое управление продуктом**: -1. **Предложения** - сообщество предлагает новые функции -2. **Голосование** - токен-холдеры голосуют (1 токен = 1 голос) -3. **Кворум** - решения принимаются при 51%+ голосов -4. **Реализация** - одобренные функции берутся в разработку - -**Веб приложение для голосования**: https://hb3-accelerator.com/ - -### Есть ли гарантия возврата денег? - -**Да, программа возврата 70%** в течение 5 лет, если: -- Накопилось свыше 51% отрицательных голосов -- Жалобы касаются отсутствия обновлений -- Голосование проведено через блокчейн -- Запрос подан в течение 5 лет с покупки - -### Включены ли налоги в цену? - -**НЕТ! Все цены указаны БЕЗ УЧЕТА НАЛОГОВ**: -- Покупатель самостоятельно уплачивает все налоги -- НДС (VAT) - 15-25% в зависимости от страны -- Налог на продажу (Sales Tax) - в США и других странах -- Налог на доход (Income Tax) - зависит от налогового статуса -- Таможенные пошлины - при импорте в определенные страны - -### Кто платит комиссии за платежи? - -**ВСЕ КОМИССИИ НЕСЕТ ПОКУПАТЕЛЬ**: -- **Конвертация валют**: 1-5% от суммы -- **Банковские переводы**: $10-50+ за операцию -- **Gas fees блокчейна**: $1-50+ в зависимости от сети -- **Комиссии платежных систем**: 2-5% от суммы - -**Пример итоговых затрат**: -- USDT напрямую: $1,000 + $15-80 = $1,015-1,080 -- SWIFT перевод: $1,000 + $25-80 = $1,025-1,080 -- Карта в EUR: €899 + €30-45 = €929-944 - -### Как можно оплатить лицензию? - -**Доступные методы оплаты**: -- 💵 **USDT** - директно на адреса авторизованных партнеров -- 💳 **Местная валюта** - эквивалент в валюте страны покупателя -- 🏦 **Банковский перевод** - через авторизованных дилеров -- 💳 **Кредитные карты** - через платежные системы партнеров - -### Где можно купить лицензию? - -**Официальные каналы**: -- 📧 **Прямо у автора**: info@hb3-accelerator.com -- 🌐 **Веб приложение**: https://hb3-accelerator.com/ -- 🤝 **Авторизованные дилеры** - компании с официальным разрешением - -## Установка и развертывание - -### Какие системные требования? - -**Минимальные требования**: -- **CPU**: 4 ядра -- **RAM**: 12 GB (4 GB приложение + 6 GB AI + 2 GB Vector Search) -- **Хранилище**: 100 GB SSD -- **ОС**: Ubuntu 20.04+, Debian 11+, CentOS 8+, любая Linux с Docker - -**Рекомендуемые**: -- **CPU**: 8+ ядер -- **RAM**: 32 GB+ -- **Хранилище**: 500 GB+ NVMe SSD -- **GPU**: NVIDIA (ускоряет AI в 5-10 раз) - -### Как развернуть DLE? - -**Простая установка через Docker**: -1. Клонировать репозиторий -2. Запустить `docker-compose up -d` -3. Открыть http://localhost:9000 -4. Подключить кошелек -5. Настроить RPC провайдеров -6. Задеплоить смарт-контракты - -### Можно ли развернуть в облаке? - -**Да, поддерживаются все варианты**: -- **Собственный сервер** - полный контроль -- **Облачные платформы** - AWS, Google Cloud, Azure -- **Локальная инфраструктура** - для соответствия регуляторным требованиям -- **Docker Compose** - развертывание одной командой - -### Как подключить крипто кошелек? - -**Пошаговая инструкция**: -1. Установите браузерный кошелек (MetaMask, WalletConnect или аналог) -2. Создайте или импортируйте аккаунт с токеном управления -3. В веб-приложении нажмите **"Подключить кошелек"** -4. Выберите тип кошелька и подтвердите подключение -5. После успешного подключения увидите адрес аккаунта в верхнем углу - -### Как настроить RPC провайдеров? - -**Настройка блокчейн-сетей**: -1. Перейдите в **Настройки** → вкладка **Безопасность** -2. Найдите раздел **"RPC провайдеры"** и нажмите **"Добавить"** -3. Заполните форму для каждой сети: - - **Название сети** (Ethereum, Polygon, BSC) - - **RPC URL** (например: `https://eth-mainnet.g.alchemy.com/v2/YOUR-API-KEY`) - - **ID сети** (Chain ID) -4. Нажмите **"Сохранить"** для каждого провайдера -5. Система автоматически проверит корректность подключения - -### Как задеплоить смарт-контракты? - -**Мультичейн деплой**: -1. Перейдите в **Настройки** → вкладка **Блокчейн** -2. Заполните форму -3. Нажмите **"Запустить деплой"** -4. Ожидайте завершения (30-120 секунд) -5. Скопируйте адрес развернутого контракта -6. Настройте аутентификацию через смарт-контракт - -### Как настроить аутентификацию через смарт-контракт? - -**Настройка доступа**: -1. Перейдите в **Настройки** → вкладка **Аутентификация** -2. Вставьте адрес смарт-контракта -3. Установите пороги: - - **Минимальное количество токенов для редактирования** (например: 100 токенов) - - **Минимальное количество токенов для просмотра** (например: 1 токен) - -### Как настроить AI и базу данных? - -**Настройка ИИ**: -1. Перейдите в **Настройки** → вкладка **ИИ** -2. Откройте подраздел **"База данных"** -3. Замените дефолтные пароли -4. Нажмите **"Сгенерировать новый ключ шифрования"** -5. **Сохраните ключ в безопасном месте** (понадобится для восстановления данных) - -### Как настроить доступ через интернет? - -**Публикация приложения**: -1. Перейдите в **Настройки** → вкладка **Сервер** -2. Выберите **WEB SSH** или подходящий сервис -3. Заполните форму для миграции на VDS с: - - **Публичным IP адресом** - - **Подключением к доменному имени** -4. Нажмите **"Опубликовать"** -5. Дождитесь завершения миграции - -**ℹ️ Требуется**: Зарегистрированное доменное имя и доступ к DNS настройкам - -### Как настроить юридические документы? - -**Заполнение юридической информации**: -1. Перейдите в **CRM** → раздел **Контент** -2. Откройте форму **"Юридическая информация компании"** -3. Заполните поля. Нажмите **"Сохранить"** - -**Работа с шаблонами**: -1. В разделе **Контент** → **"Шаблоны"** -2. Выберите необходимые документы: - - Политика конфиденциальности - - Пользовательское соглашение - - Согласие на обработку персональных данных - - Политика использования cookies -3. Нажмите **"Предварительный просмотр"** для проверки -4. Выберите действие: - - **"Опубликовать для публичного использования"** - - **"Опубликовать для внутреннего использования"** - - **"Распечатать"** (экспорт в PDF) - -**⚠️ Рекомендация**: Проконсультируйтесь с юристом перед публикацией документов - ---- - -## Функциональность - -### Что такое AI ассистент в DLE? - -**AI Ассистент** - это встроенный интеллектуальный помощник, который использует: -- 🧠 **Ollama** - локальные open-source модели AI (qwen2.5:7b) -- 🔍 **Векторный поиск** - FAISS для семантического поиска -- 📚 **RAG** (Retrieval-Augmented Generation) - поиск по базе знаний -- 💾 **Кэширование** - мгновенные ответы на частые вопросы - -**Ключевые преимущества**: -1. **🏠 100% локальный** - все данные на вашем сервере -2. **🔒 Полная конфиденциальность** - ничего не уходит в облако -3. **⚡ Молниеносные ответы** - кэширование и векторный поиск -4. **💰 Нулевые затраты на API** - нет оплаты за токены -5. **📈 Обучается на ваших данных** - персонализированные ответы -6. **🌍 Многоязычный** - поддержка русского, английского и др. -7. **🔄 24/7 доступность** - работает круглосуточно - -### Какие возможности у AI ассистента? - -**15 ключевых областей применения**: - -1. **📞 Клиентский сервис и поддержка** - автоматические ответы 24/7, анализ настроения клиентов, эскалация сложных вопросов -2. **📊 Аналитика и бизнес-интеллект** - анализ больших данных, прогнозирование продаж, сегментация клиентов -3. **💰 Финансовое планирование и учет** - автоматическая бухгалтерия, прогнозирование денежных потоков, анализ рентабельности -4. **🎯 Маркетинг и продажи** - генерация контента, персонализация сообщений, A/B тестирование, управление воронкой продаж -5. **👥 HR и управление персоналом** - скрининг резюме, собеседования с чат-ботом, планирование обучения, анализ производительности -6. **📋 Управление проектами и задачами** - автоматическое планирование проектов, отслеживание прогресса, оптимизация процессов -7. **🔍 Исследования и разработка** - анализ рынка, исследование технологий, генерация идей для новых продуктов -8. **🛡️ Безопасность и комплаенс** - мониторинг безопасности, выявление угроз, анализ соответствия требованиям -9. **📈 Операционная эффективность** - оптимизация цепочек поставок, планирование производства, автоматизация процессов -10. **🎓 Обучение и развитие** - персонализированные программы обучения, создание интерактивных курсов, оценка знаний -11. **🌐 Международная деятельность** - автоматический перевод, анализ культурных особенностей, адаптация контента -12. **🔮 Стратегическое планирование** - анализ макроэкономических трендов, сценарное планирование, оценка инвестиций -13. **📱 Мобильные и цифровые решения** - разработка мобильных приложений, создание чат-ботов, голосовые ассистенты -14. **🏭 Отраслевые решения** - специализированные решения для здравоохранения, финансов, ритейла, производства -15. **🔄 Интеграция и автоматизация** - API-интеграции, автоматизация рабочих процессов, создание единой экосистемы - -**Экономический эффект**: $507,600-519,600/год при ROI 50,760-51,960% - -### Как работает AI ассистент? - -**Философия**: AI не заменяет людей, а становится их вторым пилотом, высвобождая 85% времени для стратегии и креатива. - -**Архитектура работы**: -1. **Пользователь задает вопрос** → "Как вернуть товар?" -2. **Векторизация вопроса** → Ollama mxbai-embed-large:latest (Текст → Вектор [768 чисел]) -3. **Векторный поиск (FAISS)** → Поиск похожих вопросов в базе (Top-3 результата по семантике) -4. **Контекстный поиск (RAG)** → Извлечение ответов из базы знаний, фильтрация по тегам/продуктам -5. **Генерация ответа (LLM)** → Ollama qwen2.5:7b (Контекст + Вопрос → Ответ) -6. **Кэширование** → Сохранение в кэш на 1 час (следующий такой же вопрос < 50ms) -7. **Ответ пользователю** → "Товар можно вернуть в течение..." - -**Технологический стек**: -- **LLM модель**: Ollama qwen2.5:7b (генерация текста, диалог) -- **Embedding модель**: mxbai-embed-large (векторизация текста) -- **Векторная БД**: FAISS (быстрый семантический поиск) -- **Основная БД**: PostgreSQL (хранение базы знаний) -- **Кэш**: Node.js Map + TTL (ускорение повторных запросов) -- **Очередь**: AI Queue (обработка задач по приоритету) - -### Что такое омниканальные коммуникации? - -**Единый интерфейс для всех каналов**: -- 💬 **Telegram бот** - интеграция через Bot API -- 📧 **Email** - SMTP/IMAP, Gmail, Outlook -- 🌐 **Web чат** - виджет для сайта -- 📱 **SMS** - интеграция через провайдеров -- 📋 **Веб-формы** - конструктор форм - -**Преимущества**: -- Один контекст для клиента на всех каналах -- Автоматическая маршрутизация сообщений -- AI автоответы с обучением на ваших данных -- Аналитика по каналам и времени ответа - -### Что такое система электронных таблиц? - -**Полнофункциональная база данных** с графическим интерфейсом: -- ✅ **6 типов полей** (text, number, relation, lookup, etc.) -- ✅ **Связи между таблицами** (1:1, 1:N, N:N) -- ✅ **Lookup и подстановка** данных -- ✅ **Фильтрация и сортировка** -- ✅ **Real-time обновления** (WebSocket) -- ✅ **Интеграция с AI** (RAG для поиска) -- ✅ **Шифрование** всех данных (AES-256) - -### Что такое группы и пространства? - -**Организация работы команды**: -- Создание пространств для проектов -- Приглашение участников -- Распределение ролей и разрешений (20+ типов) -- Изолированные данные между группами -- Роли: Editor, ReadOnly, User - ---- - -## AI Ассистент - -### Какие модели AI установлены по умолчанию? - -**LLM модели**: -- **qwen2.5:7b** (рекомендуется) — для русского языка, 4.7 GB - -**Embedding модели**: -- **mxbai-embed-large:latest** (рекомендуется) — 670 MB - -### Как создать базу знаний для AI? - -**Создание таблицы FAQ**: -1. Перейдите в **Таблицы** → **"+ Создать таблицу"** -2. Заполните: - - **Название**: `FAQ - Часто задаваемые вопросы` - - **Описание**: `База знаний для AI ассистента по работе с клиентами` - -**Настройка столбцов** (обязательные): -- **Вопрос** (Текст, назначение: "Вопрос для AI") ⭐ -- **Ответ** (Текст, назначение: "Ответ AI") ⭐ -- **Продукт** (Множественный выбор, фильтр по продукту) -- **Теги** (Множественный выбор, теги пользователя) -- **Приоритет** (Число, приоритет) - -**Активация для AI**: -1. В настройках таблицы включите **"Использовать как источник для AI"** ✅ -2. Нажмите **"Сохранить"** - -### Как настроить системный промт? - -**Базовый промт**: -``` -Вы — профессиональный ассистент службы поддержки компании. - -Правила: -1. Отвечайте вежливо и профессионально -2. Используйте информацию из базы знаний -3. Если информации нет — предложите связаться с оператором -4. Отвечайте кратко и по существу -5. Всегда заканчивайте вопросом "Чем еще могу помочь?" -``` - -**Продвинутый промт** (с персонализацией): -``` -Вы — профессиональный ассистент службы поддержки компании "Название вашей компании". - -О компании: -- Мы занимаемся [краткое описание бизнеса] -- Наши ценности: качество, надежность, клиентоориентированность - -Стиль общения: -- Дружелюбный, но профессиональный -- Обращайтесь к клиенту на "Вы" -- Используйте эмодзи умеренно (1-2 на сообщение) - -Правила ответа: -1. Сначала ищите ответ в базе знаний (RAG) -2. Если нашли — отвечайте на основе найденной информации -3. Если не нашли — честно скажите и предложите помощь оператора -4. Не придумывайте информацию о ценах, сроках, условиях -5. При сложных вопросах предлагайте связаться с менеджером - -Всегда заканчивайте: "Чем еще могу помочь? 😊" -``` - -### Как настроить правила AI? - -**Создание набора правил**: -1. Нажмите **"Создать"** рядом с полем "Набор правил" -2. Заполните: - - **Название**: `Гибридный режим (RAG + генерация)` - - **Описание**: `AI сначала ищет в базе знаний, если не находит — генерирует ответ` - -**Правила (JSON)**: -```json -{ - "checkUserTags": true, - "searchRagFirst": true, - "generateIfNoRag": true, - "temperature": 0.7, - "maxTokens": 500 -} -``` - -**Параметры**: -- `checkUserTags: true` — учитывать теги пользователя при поиске -- `searchRagFirst: true` — сначала искать в базе знаний -- `generateIfNoRag: true` — генерировать ответ, если ничего не найдено -- `temperature: 0.7` — баланс между точностью и креативностью (0.0-1.0) -- `maxTokens: 500` — максимальная длина ответа - -### Как настроить RAG поиск? - -**Базовые настройки**: -- **Метод поиска**: `Гибридный поиск` (рекомендуется) -- **Максимальное количество результатов**: `5` -- **Порог релевантности**: `0.1` (от 0.01 до 1.0) - -**Извлечение ключевых слов**: -- ✅ **Включить извлечение ключевых слов** -- **Минимальная длина слова**: `3` -- **Максимальное количество ключевых слов**: `10` -- ✅ **Удалять стоп-слова** - -**Веса поиска (для гибридного)**: -- **Семантический поиск**: `70%` (точность) -- **Поиск по ключевым словам**: `30%` (скорость) - -**Дополнительные настройки**: -- ✅ **Нечеткий поиск** (для опечаток) -- ✅ **Стемминг слов** (находит разные формы слова) -- ☐ **Поиск синонимов** (пока отключен) - -### Как протестировать AI ассистента? - -**Встроенный тестер**: -1. В настройках AI ассистента найдите **"🧠 Тест RAG-функциональности"** -2. Выберите таблицу `FAQ - Часто задаваемые вопросы` -3. Введите тестовый вопрос: `Как оплатить заказ?` -4. Нажмите **"Тестировать RAG"** -5. Проверьте результат: - - **Score -300 до 0** ✅ — отличное совпадение - - **Score 0 до 300** ⚠️ — среднее совпадение - - **Score >300** ❌ — совпадение не найдено - -**Тестирование через Web Chat**: -1. Найдите виджет **"💬 Чат с AI"** на главной странице -2. Введите вопрос: `Сколько стоит доставка?` -3. Проверьте ответ AI - -### Как интегрировать с Telegram и Email? - -**Настройка Telegram бота**: -1. Создайте бота через [@BotFather](https://t.me/botfather) в Telegram -2. Скопируйте **Bot Token** -3. В настройках DLE введите токен и username бота -4. В настройках AI ассистента выберите этот Telegram бот - -**Настройка Email интеграции**: -1. Перейдите в **Настройки** → **Интеграции** → **Email** -2. Заполните IMAP настройки (для получения писем) -3. Заполните SMTP настройки (для отправки писем) -4. Нажмите **"Тест IMAP"** и **"Тест SMTP"** для проверки -5. В настройках AI ассистента выберите этот Email - -## Экономический эффект - -### Сколько можно сэкономить с DLE? - -**Сравнение с SaaS за 5 лет**: - -**Типичный стек SaaS**: -- CRM (HubSpot): $200/мес × 60 мес = $12,000 -- Чат-бот (Intercom): $150/мес × 60 мес = $9,000 -- Email (SendGrid): $100/мес × 60 мес = $6,000 -- AI (ChatGPT API): $200/мес × 60 мес = $12,000 -- **ИТОГО**: $39,000 - -**DLE**: -- Лицензия (один раз): $1,000 -- Обновления (5 лет): $0 -- AI без лимитов: $0 -- **ИТОГО**: $1,000 -- **ЭКОНОМИЯ**: $38,000 - -### Какой ROI от AI ассистента? - -**Сравнение с облачными решениями**: - -| Характеристика | DLE AI (Локальный) | ChatGPT API | Claude API | -|----------------|-------------------|-------------|------------| -| **Стоимость** | $0 | ~$0.02/запрос | ~$0.03/запрос | -| **Конфиденциальность** | ✅ 100% | ❌ Данные в OpenAI | ❌ Данные в Anthropic | -| **Скорость (кэш)** | 50ms | 500-2000ms | 500-2000ms | -| **Offline работа** | ✅ Да | ❌ Нет | ❌ Нет | -| **Настройка под бизнес** | ✅ Полная | ⚠️ Ограниченная | ⚠️ Ограниченная | -| **Лимиты API** | ❌ Нет | ✅ Есть | ✅ Есть | - -**Экономия при использовании облачных API**: -- При 10,000 запросов/месяц: ChatGPT $2,400/год, Claude $3,600/год, DLE $0/год -- При 50,000 запросов/месяц: ChatGPT $12,000/год, Claude $18,000/год, DLE $0/год -- При 100,000 запросов/месяц: ChatGPT $24,000/год, Claude $36,000/год, DLE $0/год - -**Суммарная экономия по всем направлениям**: -- Обслуживание клиентов: $57,600 -- Работа с поставщиками + AI закупщик: $64,800 -- Работа с партнерами: $43,200 -- Обучение персонала: $30,000 -- Управление персоналом: $57,600 -- Отчетность и анализ: $144,000 -- Контент-маркетинг: $86,400 -- Экономия на API токенах: $24,000-36,000 -- **ИТОГО**: $507,600-519,600/год - -**ROI**: 50,760-51,960% или 507-519x окупаемость - -### Какие дополнительные выгоды от AI ассистента? - -**Неизмеримые преимущества**: -- 📈 **Повышение качества работы** - AI работает без усталости и ошибок -- 😊 **Удовлетворенность клиентов +19%** - быстрые и точные ответы -- 👥 **Удержание сотрудников +15%** - меньше рутины, больше интересных задач -- 🚀 **Скорость принятия решений +300%** - мгновенный доступ к информации -- 💡 **Больше времени на стратегию** - AI освобождает 85% времени от рутины -- 🎯 **Меньше рутины, больше креатива** - фокус на развитии бизнеса - -### Сколько экономии на токенизации активов? - -**Традиционная сделка с недвижимостью ($1M)**: -- Комиссия риелтора: 3-5% = $30,000-50,000 -- Юридические услуги: $5,000-10,000 -- Регистрация права: $2,000-5,000 -- Время: 2-6 месяцев -- **ИТОГО**: $37,000-65,000 - -**Токенизированная сделка через DLE**: -- Gas fees: $50-200 -- Смарт-контракт (один раз): $500 -- Время: 5-10 минут -- **ИТОГО**: $550-700 - -**Экономия**: 99% затрат и 99% времени - ---- - -## Вопросы по веб-приложению - -### Как получить доступ к веб-приложению DLE? - -**Требования для доступа**: -- Наличие токенов управления DLE на вашем кошельке -- Подключение кошелька (MetaMask, WalletConnect и др.) -- Стабильное интернет-соединение - -**Процесс входа**: -1. Откройте веб-приложение: https://hb3-accelerator.com/ -2. Нажмите "Подключить кошелек" -3. Выберите ваш кошелек (MetaMask, WalletConnect) -4. Подтвердите подключение -5. Система проверит баланс токенов в смарт-контракте -6. При наличии токенов - доступ предоставляется - -**Уровни доступа**: -- **0 токенов**: Нет доступа (только страница "Нет доступа") -- **1+ токенов**: ReadOnly (просмотр данных) -- **100+ токенов**: Editor (редактирование, создание) -- **Любое количество**: Голосование (1 токен = 1 голос) - -### Какие браузеры поддерживает веб-приложение? - -**Рекомендуемые браузеры**: -- ✅ Chrome 90+ (лучшая совместимость) -- ✅ Firefox 88+ -- ✅ Safari 14+ -- ✅ Edge 90+ -- ✅ Brave (с поддержкой Web3) - -**Требования**: -- JavaScript включен -- Web3 совместимость (для подключения кошелька) -- Поддержка современных веб-стандартов - -### Как работает аутентификация в веб-приложении? - -**Sign-In with Ethereum (SIWE)**: -- Приватный ключ **никогда** не покидает ваш кошелек -- Каждый nonce используется **один раз** и истекает через 5 минут -- Подделать подпись невозможно без приватного ключа -- Полная безопасность аутентификации - -**Процесс**: -1. Генерация одноразового nonce -2. Сохранение в БД с шифрованием -3. Подпись сообщения вашим кошельком -4. Проверка подписи на сервере -5. Создание сессии при успешной проверке - -### Что делать, если веб-приложение недоступно? - -**Альтернативные способы управления**: - -1. **Через блокчейн-сканеры**: - - Etherscan (Ethereum): https://etherscan.io - - Polygonscan (Polygon): https://polygonscan.com - - BscScan (BSC): https://bscscan.com - - Arbiscan (Arbitrum): https://arbiscan.io - -2. **Функции через Etherscan**: - - Проверка баланса токенов - - Создание предложений - - Голосование за предложения - - Исполнение одобренных предложений - -3. **Преимущества**: - - Полная независимость от веб-приложения - - Невозможно подделать данные - - Доступ 24/7 из любой точки мира - -## Вопросы по условиям использования - -### Какие типы лицензий доступны? - -**Единственный тип лицензии - Бессрочная (Perpetual License)**: -- ⏳ **Срок действия**: Пожизненная (без ограничения по времени) -- 🔄 **Обновления**: БЕСПЛАТНЫ для всех держателей лицензий -- 🚫 **Отмена**: Лицензия не может быть отменена компанией -- ⚖️ **Условия обслуживания**: Одинаковые для всех лицензий - -**Варианты по количеству токенов**: -- **Standard Support**: $1,000 USDT (1 токен = 1 голос) -- **Priority Support**: $10,000 USDT (10 токенов = 10 голосов) - -### Что включено в лицензию? - -**Все держатели лицензий получают**: -- ✅ Все обновления веб-приложения (бесплатно 5 лет для держателей токенов) -- ✅ **Бесплатная настройка подрядчиками в течение 5 лет** (персонализация, интеграция, настройка ИИ, доработка функционала) -- ✅ Доступ к документации и базе знаний -- ✅ Техническая поддержка через приложение -- ✅ AI ассистент 24/7 -- ✅ Все интеграции и возможности развертывания -- ✅ Участие в голосовании за новые фичи -- ✅ Ранний доступ к beta функциям -- ✅ SLA 99% uptime гарантия -- ✅ Онлайн-сессии обучения и внедрения - -### Как работает система голосования? - -**Процесс голосования**: -1. **Создание предложения**: Любой токен-холдер может создать предложение -2. **Регистрация на блокчейне**: Голосование создается в смарт-контракте -3. **Голосование токен-холдеров**: Каждый токен = 1 голос -4. **Реализация**: Если проголосовало 51%+ токенов - фича берется в разработку - -**Веб-приложение для голосования**: https://hb3-accelerator.com/ -- Создание предложений (proposals) -- Голосование за или против предложений -- Просмотр результатов голосований -- Отслеживание статуса разработки - -### Какие есть ограничения использования? - -**✅ Разрешено**: -- Использование для управления собственным бизнесом -- Развертывание на собственной инфраструктуре -- Использование выбранного вида деятельности (1 вид на лицензию) -- Резервное копирование данных -- Локальная модификация конфигурации -- Голосование за развитие новых функций -- Передача лицензии наследникам - -**❌ Запрещено**: -- Перепродажа или сублицензирование -- Использование более одного вида деятельности одной лицензией -- Reverse engineering и модификация исходного кода -- Удаление авторских прав и лицензионных уведомлений -- Совместное использование между независимыми организациями -- Использование в образовательных целях без разрешения -- Развертывание SaaS на основе приложения - -### Как работает программа возврата 70%? - -**Условия возврата**: -Вы можете потребовать возврат **70% от стоимости лицензии** в течение **5 лет** с момента покупки, если: - -1. ✋ **Порог жалоб**: Накопилось свыше **51% отрицательных голосов** -2. 📋 **Причина**: Жалобы касаются **отсутствия выпусков обновлений** -3. 🗳️ **Голосование**: Жалобы были **приняты через механизм голосования токен-холдеров на блокчейне** -4. ⏱️ **Сроки**: Запрос подан в течение **5 лет** с момента лицензирования - -**Процесс возврата**: -1. Запрос подается на hb3-accelerator.com с приложением блокчейн-доказательства -2. Подтверждение условий на смарт-контракте (51%+ голосов за возврат) -3. Возврат **70% от суммы покупки** в течение 30 дней - -### Как получить техническую поддержку? - -**Единый портал поддержки**: https://hb3-accelerator.com/ - -**Доступные каналы**: -- 🌐 Портал поддержки (все лицензии) -- 💬 Чат с support team (все лицензии) -- 🤖 AI ассистент 24/7 (все лицензии) -- 🎓 Онлайн-сессии обучения (все лицензии) -- 📚 Библиотека записей (все лицензии) -- 📧 Email поддержка (все лицензии) -- ✅ Бесплатная настройка подрядчиками в течение 5 лет (все лицензии) - -**SLA (время первого ответа)**: -- 🔴 Критическая: 4 часа -- 🟠 Высокая: 8 часов -- 🟡 Средняя: 24 часа -- 🟢 Низкая: 48 часов - -### Как работают обновления приложения? - -**Бесплатные обновления для всех держателей лицензий**: -- Исправления ошибок (Bug Fixes) -- Улучшения производительности -- Новые функции (одобренные голосованием) -- Обновления безопасности - -**Частота**: -- Security Patches: Немедленно (при обнаружении) -- Regular Updates: Еженедельно (по средам) -- Major Features: По результатам голосования - -**Платформа скачивания**: https://hb3-accelerator.com/ -- Скачивание всех выпущенных версий -- Подробные заметки о релизах -- Календарь запланированных обновлений -- Автоматические уведомления о новых версиях - -### Как работает система безопасности веб-приложения? - -**Многоуровневая защита**: -- 🔐 **TLS 1.3** для всех соединений -- 🔐 **AES-256** для критичных данных в хранилище -- 🔐 **Rate limiting** и защита от DDoS -- 🔐 **CSRF токены** для всех форм -- 🔐 **XSS защита** (DOMPurify) -- 🔐 **Helmet.js** для защиты заголовков - -**Аутентификация через SIWE**: -- Приватный ключ никогда не покидает кошелек -- Каждый nonce используется один раз и истекает через 5 минут -- Подделать подпись невозможно без приватного ключа - -## Вопросы по установке и настройке - -### Какие системные требования для установки DLE? - -**Минимальные требования**: -- **ОС**: Linux, Windows, macOS -- **RAM**: 8 GB (рекомендуется 16 GB) -- **Диск**: 50 GB свободного места -- **Docker**: версия 20.10+ -- **Docker Compose**: версия 2.0+ - -**Рекомендуемые требования**: -- **RAM**: 32 GB -- **Диск**: 100 GB SSD -- **CPU**: 8+ ядер -- **Интернет**: стабильное соединение - -### Как установить DLE? - -**Автоматическая установка (рекомендуется)**: -```bash -curl -fsSL https://raw.githubusercontent.com/VC-HB3-Accelerator/DLE/main/setup-template.sh | bash -``` - -**Ручная установка**: -1. Клонирование репозитория -2. Импорт Docker образов -3. Создание и импорт томов -4. Запуск приложения - -**Доступ к приложению**: -- Frontend: http://localhost:9000 (HTTP) или https://localhost:9443 (HTTPS) -- Backend API: http://localhost:9000/api - -### Как настроить блокчейн интеграцию? - -**Требования**: -- Криптовалютный кошелек (MetaMask, WalletConnect) -- RPC провайдер (Infura, Alchemy, или собственный узел) -- USDT для деплоя смарт-контракта - -**Процесс настройки**: -1. Подключение кошелька -2. Настройка RPC провайдера -3. Деплой смарт-контракта DLE - -## Вопросы по функциональности - -### Какие основные функции доступны в DLE? - -**Блокчейн функции**: -- Создание и управление смарт-контрактами -- Система голосования токен-холдеров -- Токенизация активов -- Мультивалютная казна -- Автоматические выплаты - -**AI ассистент**: -- Локальный AI без лимитов -- База знаний на основе электронных таблиц -- Анализ данных и прогнозирование -- Автоматизация бизнес-процессов -- Омниканальные коммуникации - -**Электронные таблицы**: -- Полнофункциональная база данных -- Связи между таблицами (Relation) -- Автоматические подстановки (Lookup) -- Реальное время обновления -- Интеграция с AI - -### Как работает система электронных таблиц? - -**Типы полей**: -- **Text** - текстовые данные -- **Number** - числовые значения -- **Date** - даты и время -- **Boolean** - да/нет -- **Relation** - связи с другими таблицами -- **Lookup** - автоматические подстановки -- **File** - файлы и изображения - -**Функциональность**: -- CRUD операции (создание, чтение, обновление, удаление) -- Фильтрация и сортировка -- Поиск по всем полям -- Экспорт в различные форматы -- Интеграция с AI для анализа - -## Вопросы по безопасности - -### Как защищены данные в DLE? - -**Шифрование**: -- **TLS 1.3** для всех соединений -- **AES-256** для данных в хранилище -- **Управление ключами** под контролем пользователя - -**Блокчейн защита**: -- Токены нельзя украсть (заблокированы переводы) -- Все операции записаны на блокчейне -- Невозможно подделать историю -- Независимость от веб-приложения - -**Веб-приложение защита**: -- Rate limiting от DDoS -- CSRF и XSS защита -- Clean logs (очистка чувствительных данных) -- Helmet.js для заголовков - -### Что делать при подозрении на взлом? - -**Защита токенов**: -- Токены DLE заблокированы от переводов -- Единственный способ перевода - через голосование -- Даже при взломе кошелька токены защищены - -### Как работает система аудита? - -**Прозрачность на блокчейне**: -- Все действия записаны навсегда -- Невозможно скрыть или удалить -- Публичная проверка через Etherscan - -**Мониторинг в реальном времени**: -- Отслеживание всех событий смарт-контракта -- Автоматические алерты при подозрительной активности -- Уведомления токен-холдеров - ---- - -## Вопросы по экономике и ROI - -### Сколько денег сэкономит DLE моему бизнесу? - -**Для бизнеса с оборотом $1M/год**: -- **Банковские комиссии**: экономия $25,750/год (96%) -- **Корпоративное управление**: экономия $42,000/год (78%) -- **Привлечение инвестиций**: экономия $49,400 на сделку (99%) -- **AI без лимитов**: экономия $36,000/год (локальный vs облачный) -- **ИТОГО**: $117,150/год + дополнительная прибыль ~$1,000,000 - -**ROI**: 1,117% на инвестиции в DLE -**Окупаемость**: < 1 месяца - -### Какие скрытые расходы есть у DLE? - -**Единоразовые расходы**: -- Лицензия: $1,000-10,000 USDT -- Деплой смарт-контракта: $100-500 (gas fees) -- Настройка: $0 (бесплатная настройка подрядчиками в течение 5 лет включена в лицензию) - -**Ежемесячные расходы**: -- Хостинг: $50-200/месяц -- RPC провайдер: $0-100/месяц (можно бесплатно) -- Gas fees: $10-100/месяц (зависит от активности) - -**Сравнение с традиционными решениями**: -- Традиционный бизнес: $54,000+/год -- SaaS решения: $12,000-60,000/год -- DLE: $1,200-3,000/год - -### Как рассчитать экономию для моего бизнеса? - -**Формула расчета**: -``` -Экономия = (Оборот × 0.03) + (Сотрудники × 2000) + (Инвестиции × 0.1) - -Где: -- 0.03 = 3% банковских комиссий -- 2000 = $2,000/год на сотрудника (управление) -- 0.1 = 10% от суммы привлеченных инвестиций -``` - -**Пример для малого бизнеса** (оборот $100,000, 3 сотрудника): -- Банковские комиссии: $3,000 -- Управление: $6,000 -- **ИТОГО**: $9,000/год экономии -- **ROI**: 900% на лицензию $1,000 - ---- - -## Вопросы по практическому применению - -### С чего начать внедрение DLE? - -**Первый месяц**: -1. **Неделя 1**: Установка и настройка -2. **Неделя 2**: Создание базы знаний для AI -3. **Неделя 3**: Настройка электронных таблиц -4. **Неделя 4**: Тестирование и обучение команды - -**Приоритетные задачи**: -1. Настроить CRM для клиентов -2. Создать базу знаний для поддержки -3. Настроить автоматизацию закупок -4. Подключить омниканальные коммуникации - -### Как DLE поможет с клиентами? - -**Автоматизация поддержки**: -- AI отвечает на 80% вопросов клиентов -- Работает 24/7 без выходных -- Анализирует настроение клиентов -- Создает тикеты автоматически - -**Управление клиентской базой**: -- Полная история взаимодействий -- Автоматические напоминания -- Сегментация клиентов -- Прогнозирование потребностей - -**Каналы коммуникации**: -- Telegram бот -- Email поддержка -- Web чат на сайте - -### Как DLE поможет с поставщиками? - -**База поставщиков**: -- Каталог всех поставщиков -- Сравнение цен и условий -- Рейтинг и отзывы -- История сотрудничества - -**AI закупщик**: -- Поиск лучших предложений -- Анализ условий договоров -- Контроль сроков поставок -- Автоматические уведомления - -**Экономия**: -- Снижение закупочных цен на 5-15% -- Ускорение процесса выбора поставщиков -- Снижение рисков - -### Как DLE поможет с финансами? - -**Автоматизация учета**: -- Ведение бухгалтерии -- Формирование отчетов -- Контроль расходов -- Планирование бюджета - -**Блокчейн-финансы**: -- Мгновенные платежи 24/7 -- Комиссии в 50-100 раз ниже -- Нет географических ограничений -- Прозрачность всех операций - -**Аналитика**: -- Прогнозирование денежных потоков -- Анализ рентабельности -- Выявление финансовых рисков -- KPI и метрики - ---- - -## Вопросы по интеграции с существующими системами - -### Как перенести данные из существующих систем? - -**Пошаговый процесс**: -1. **Экспорт данных** из текущей системы -2. **Очистка и форматирование** данных -3. **Импорт в DLE** через веб-интерфейс -4. **Проверка корректности** данных -5. **Настройка связей** между таблицами - -**Поддерживаемые форматы**: -- Excel (.xlsx, .xls) -- CSV -- JSON - -## Вопросы по масштабированию - -### Как DLE масштабируется с ростом бизнеса? - -**Горизонтальное масштабирование**: -- Добавление новых серверов -- Распределение нагрузки -- Кластеризация баз данных -- CDN для статики - -**Вертикальное масштабирование**: -- Увеличение RAM и CPU -- SSD диски -- Оптимизация запросов -- Кэширование - -**Ограничения**: -- **Пользователи**: до 10,000 одновременных -- **Данные**: до 1TB на таблицу -- **API запросы**: до 10,000/минуту -- **Файлы**: до 100GB общий размер - -### Сколько пользователей может работать одновременно? - -**Рекомендуемые лимиты**: -- **Малый бизнес** (до 50 пользователей): стандартная конфигурация -- **Средний бизнес** (до 500 пользователей): увеличенная RAM (32GB+) -- **Крупный бизнес** (до 5,000 пользователей): кластерная конфигурация -- **Корпорации** (10,000+ пользователей): распределенная архитектура - -**Производительность**: -- **Отклик интерфейса**: < 200ms -- **Загрузка страниц**: < 2 секунды -- **API запросы**: < 500ms -- **Поиск**: < 1 секунды - -### Как DLE справляется с большими объемами данных? - -**Оптимизации**: -- **Индексирование**: автоматические индексы для поиска -- **Пагинация**: загрузка данных по частям -- **Кэширование**: Redis для часто используемых данных -- **Сжатие**: сжатие данных в базе - -**Рекомендации**: -- Используйте фильтры для больших таблиц -- Настройте архивирование старых данных -- Регулярно очищайте неиспользуемые файлы -- Мониторьте производительность - ---- - -## Дополнительные ресурсы - -### Документация -- 📋 [FAQ](./FAQ.md) - этот документ -- 🔧 [Установка](./setup-instruction.md) - пошаговая настройка -- 🤖 [AI Ассистент](./ai-assistant.md) - полные возможности ИИ -- 🔗 [Блокчейн для бизнеса](./blockchain-for-business.md) - практические кейсы -- 📝 [Описание приложения](./application-description.md) - обзор функций - -### Обучение -- 🎓 **Онлайн-сессии** (групповые и индивидуальные) -- 🗳️ **Портал голосования**: https://hb3-accelerator.com/ - -### Поддержка -- 💬 **Чат с поддержкой**: https://hb3-accelerator.com/ -- 📧 **Email**: info@hb3-accelerator.com -- 🌐 **Сайт**: https://hb3-accelerator.com - ---- - -**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.** - -**Последнее обновление**: October 2025 diff --git a/docs/MULTICHAIN_GOVERNANCE_TOKEN_TRANSFER.md b/docs/MULTICHAIN_GOVERNANCE_TOKEN_TRANSFER.md deleted file mode 100644 index 46c3952..0000000 --- a/docs/MULTICHAIN_GOVERNANCE_TOKEN_TRANSFER.md +++ /dev/null @@ -1,661 +0,0 @@ -# Мультичейн-управление переводом токенов DLE - -## Обзор системы - -Система мультичейн-управления DLE позволяет холдерам токенов создавать предложения по переводу токенов со своего кошелька на другой адрес (или в казну) через процесс голосования во всех сетях, где развернут контракт DLE. Каждая сеть имеет независимый кворум, но предложения координируются и отображаются как единое целое. - -## Архитектура - -### Мультичейн-контракты DLE -- Один DLE может быть развернут в нескольких блокчейн-сетях (например, Sepolia, Arbitrum Sepolia, Base Sepolia) -- Каждый контракт DLE в каждой сети работает независимо -- Предложения создаются, голосуются и выполняются в каждой сети отдельно -- ID предложений уникальны для каждой сети (предложение с ID=1 в Sepolia и предложение с ID=1 в Arbitrum Sepolia - это разные предложения) - -### Группировка предложений -- Предложения с одинаковым описанием и инициатором группируются в одну карточку -- Карточка отображает статус предложения во всех сетях DLE -- Каждая сеть в карточке имеет свой собственный ID предложения, состояние и результаты голосования - -## Процесс перевода токенов - -### Этап 1: Создание предложения - -#### Описание процесса -1. Пользователь заполняет форму перевода токенов: - - **Описание предложения** - текстовое описание цели перевода - - **Адрес получателя** - адрес кошелька или казны, на который будут переведены токены - - **Количество токенов** - количество DLE токенов для перевода - - **Длительность голосования** - период времени, в течение которого можно голосовать - - **Ваш подключенный кошелек** - автоматически заполняется адресом подключенного кошелька (токены будут отправлены с этого адреса) - -2. Система определяет все сети, где развернут контракт DLE - -3. **Последовательное создание предложений в каждой сети:** - - Для каждой сети DLE: - - Переключение MetaMask на соответствующую сеть - - Задержка 1 секунда после переключения - - Создание предложения в контракте DLE этой сети - - Получение уникального ID предложения для этой сети - - Задержка 3 секунды после подтверждения транзакции (5 секунд для Base Sepolia) - - При ошибках RPC выполняется автоматический retry с экспоненциальной задержкой (до 3 попыток) - -4. **Подписи в MetaMask:** - - Пользователь должен подписать транзакцию создания предложения в каждой сети DLE - - Количество подписей = количество сетей DLE - - Каждая подпись создает отдельное предложение в соответствующей сети - -#### Технические детали -- **Функция контракта:** `createProposal(description, duration, operation, targetChains, timelockDelay)` - - **Порядок параметров:** `description`, `duration`, `operation`, `targetChains` (массив), `timelockDelay` - - **targetChains:** Массив ID сетей, где будет выполнена операция (обычно `[chainId]` для текущей сети) -- **Операция:** `_transferTokens(sender, recipient, amount)` - где `sender` = адрес инициатора предложения - - **Сигнатура:** `_transferTokens(address,address,uint256)` - **все три параметра обязательны!** - - `sender` получается автоматически из `signer.getAddress()` при создании предложения -- **ID предложения:** Генерируется автоматически контрактом в каждой сети (начинается с 0, инкрементируется) -- **Группировка:** Предложения с одинаковым `description` и `initiator` группируются в одну карточку - -#### Кодирование операции - -Операция для выполнения должна быть закодирована в формате ABI (Application Binary Interface) перед передачей в `createProposal`. - -**Для операции перевода токенов `_transferTokens(address,address,uint256)`:** -1. **Сигнатура функции:** `_transferTokens(address,address,uint256)` -2. **Селектор функции:** Первые 4 байта от `keccak256(signature)` -3. **Параметры:** - - `sender` - адрес отправителя (инициатора предложения) - - `recipient` - адрес получателя токенов - - `amount` - количество токенов (в wei, т.е. количество * 10^18) - -**Пример кодирования (JavaScript/ethers.js):** -```javascript -// Способ 1: Использование Interface (рекомендуется) -const functionSignature = '_transferTokens(address,address,uint256)'; -const iface = new ethers.Interface([`function ${functionSignature}`]); -const encodedOperation = iface.encodeFunctionData('_transferTokens', [ - senderAddress, // адрес инициатора - recipientAddress, // адрес получателя - ethers.parseUnits(amount.toString(), 18) // количество в wei -]); - -// Способ 2: Ручное кодирование -const functionSignature = '_transferTokens(address,address,uint256)'; -const selectorBytes = ethers.keccak256(ethers.toUtf8Bytes(functionSignature)); -const selector = '0x' + selectorBytes.slice(2, 10); // первые 4 байта - -const abiCoder = ethers.AbiCoder.defaultAbiCoder(); -const encodedParams = abiCoder.encode( - ['address', 'address', 'uint256'], - [senderAddress, recipientAddress, ethers.parseUnits(amount.toString(), 18)] -); - -const encodedOperation = ethers.concat([selector, encodedParams]); -``` - -**Важные моменты:** -- `sender` должен совпадать с адресом инициатора предложения (проверяется в контракте при выполнении) -- `amount` **ОБЯЗАТЕЛЬНО** передается в wei (1 токен = 10^18 wei) - используйте `ethers.parseUnits(amount.toString(), 18)` -- **КРИТИЧЕСКИ ВАЖНО:** `sender` должен определяться из `signer.getAddress()` при создании предложения в каждой сети отдельно, а не один раз до цикла -- Операция кодируется для каждой сети отдельно с актуальным адресом signer для этой сети -- Контракт декодирует операцию при выполнении и проверяет соответствие `sender` и `initiator` - -**КРИТИЧЕСКИ ВАЖНО - Правильная реализация:** -```javascript -// ✅ ПРАВИЛЬНО: Кодирование внутри цикла с актуальным адресом signer для каждой сети -async function createProposalsInAllChains(allChains, formData) { - const results = []; - - for (let index = 0; index < allChains.length; index++) { - const chainId = allChains[index]; - - // 1. Переключаемся на нужную сеть - await switchToVotingNetwork(chainId.toString()); - await new Promise(resolve => setTimeout(resolve, 1000)); // Задержка после переключения - - // 2. КРИТИЧЕСКИ ВАЖНО: Получаем адрес signer для текущей сети - const provider = new ethers.BrowserProvider(window.ethereum); - const signer = await provider.getSigner(); - const senderAddress = await signer.getAddress(); // Адрес инициатора из signer! - - // 3. Кодируем операцию с актуальным адресом signer для этой сети - const transferCallData = encodeTransferTokensCall( - senderAddress, // адрес инициатора из signer (обязательно!) - formData.recipient, // адрес получателя - formData.amount // количество (будет сконвертировано в wei) - ); - - // 4. Создаем предложение - const proposalData = { - description: formData.description, - duration: formData.duration, - operation: transferCallData, - targetChains: [chainId], - timelockDelay: 0 - }; - - await createProposal(contractAddress, proposalData); - } -} - -function encodeTransferTokensCall(sender, recipient, amount) { - const functionSignature = '_transferTokens(address,address,uint256)'; - const iface = new ethers.Interface([`function ${functionSignature}`]); - - // КРИТИЧЕСКИ ВАЖНО: конвертируем amount в wei - const amountInWei = ethers.parseUnits(amount.toString(), 18); - - const encodedCall = iface.encodeFunctionData('_transferTokens', [ - sender, // адрес инициатора (обязательно! должен быть из signer.getAddress()) - recipient, // адрес получателя - amountInWei // количество в wei (обязательно!) - ]); - - return encodedCall; -} - -// ❌ НЕПРАВИЛЬНО: Кодирование один раз до цикла -// const transferCallData = encodeTransferTokensCall(formData.sender, ...); // НЕПРАВИЛЬНО! -// for (const chainId of allChains) { -// await createProposal(contractAddress, { operation: transferCallData, ... }); // sender может не совпасть! -// } - -// ❌ НЕПРАВИЛЬНО: Отсутствует sender или amount не в wei -// const transferFunctionSelector = ethers.id("_transferTokens(address,uint256)"); // НЕПРАВИЛЬНО! -// const amount = transferData.amount; // НЕПРАВИЛЬНО! Нужна конвертация в wei -``` - -**Другие поддерживаемые операции:** -- `_addModule(bytes32,address)` - добавление модуля -- `_removeModule(bytes32)` - удаление модуля -- `_addSupportedChain(uint256)` - добавление поддерживаемой сети -- `_removeSupportedChain(uint256)` - удаление поддерживаемой сети -- `_updateVotingDurations(uint256,uint256)` - обновление времени голосования -- `_updateQuorumPercentage(uint256)` - обновление процента кворума -- `_updateDLEInfo(...)` - обновление информации DLE -- `_setLogoURI(string)` - обновление URI логотипа - -#### Результат -- Создано N предложений (по одному в каждой сети DLE) -- Каждое предложение имеет уникальный ID в своей сети -- Все предложения отображаются как одна карточка в интерфейсе -- Карточка показывает статус предложения в каждой сети - ---- - -### Этап 2: Голосование - -#### Описание процесса -1. Пользователь видит карточку предложения с информацией о всех сетях DLE - -2. Пользователь выбирает голос "За" или "Против" - -3. **Последовательное голосование во всех активных сетях:** - - Система определяет все активные цепочки (state === 0 или 'active', не выполнены, не отменены) - - Для каждой активной сети: - - Переключение MetaMask на соответствующую сеть - - Задержка 1 секунда после переключения - - **Проверка баланса токенов в этой сети** (балансы могут отличаться в разных сетях) - - Если баланс отсутствует, сеть пропускается с предупреждением - - Голосование продолжается в других сетях - - Голосование с использованием **уникального ID предложения для этой сети** - - Задержка 3 секунды после подтверждения транзакции (5 секунд для Base Sepolia) - -4. **Подписи в MetaMask:** - - Пользователь должен подписать транзакцию голосования в каждой активной сети DLE - - Количество подписей = количество активных сетей DLE - - Каждая подпись регистрирует голос в соответствующей сети - -#### Технические детали -- **Функция контракта:** `vote(proposalId, support)` - где `proposalId` уникален для каждой сети -- **Проверка ID:** Система использует `chain.id` (ID предложения из конкретной сети), а не общий ID группы -- **Проверка баланса:** Баланс токенов проверяется **в каждой сети отдельно** перед голосованием - - В мультичейн-системе балансы могут отличаться в разных сетях - - Если в сети нет токенов, голосование в этой сети пропускается - - Контракт также проверяет баланс через `getPastVotes()` и вернет ошибку, если токенов нет -- **Вес голоса:** Зависит от баланса токенов голосующего в соответствующей сети -- **Независимые кворумы:** Каждая сеть имеет свой собственный кворум - -#### Результат -- Голос зарегистрирован во всех активных сетях DLE -- Каждая сеть обновляет свои счетчики голосов (forVotes, againstVotes) -- Карточка предложения обновляется с новыми данными голосования - ---- - -### Этап 3: Выполнение предложения - -#### Условия выполнения -**КРИТИЧЕСКИ ВАЖНО:** Предложение может быть выполнено только при условии, что кворум достигнут **во всех сетях DLE**, где предложение активно. - -Условия для каждой сети: -- Состояние предложения: `ReadyForExecution` (state === 5) -- Кворум достигнут: `forVotes >= quorumRequired` -- Большинство голосов "За": `forVotes > againstVotes` -- Предложение не выполнено: `executed === false` -- Предложение не отменено: `canceled === false` -- Истек период голосования (если применимо) -- Истек период timelock (если применимо) - -#### Описание процесса -1. Система проверяет, что предложение готово к выполнению во всех активных сетях DLE - -2. **Последовательное выполнение во всех готовых сетях:** - - Для каждой сети, где предложение готово к выполнению: - - Переключение MetaMask на соответствующую сеть - - Задержка 1 секунда после переключения - - Выполнение предложения с использованием **уникального ID предложения для этой сети** - - Задержка 3 секунды после подтверждения транзакции (5 секунд для Base Sepolia) - -3. **Подписи в MetaMask:** - - Пользователь должен подписать транзакцию выполнения в каждой готовой сети DLE - - Количество подписей = количество готовых сетей DLE - - Каждая подпись выполняет перевод токенов в соответствующей сети - -#### Технические детали -- **Функция контракта:** `executeProposal(proposalId)` - где `proposalId` уникален для каждой сети -- **Операция перевода:** `_transferTokens(sender, recipient, amount)` - - `sender` = адрес инициатора предложения (проверяется в контракте) - - `recipient` = адрес получателя из предложения - - `amount` = количество токенов из предложения -- **Проверка безопасности:** Контракт проверяет, что `sender` совпадает с `initiator` предложения -- **Перевод токенов:** Токены переводятся с кошелька инициатора, а не с баланса контракта - -#### Результат -- Перевод токенов выполнен во всех готовых сетях DLE -- Каждая сеть независимо выполняет перевод с кошелька инициатора -- Карточка предложения обновляется, показывая статус "Выполнено" во всех сетях - ---- - -## Отмена предложения - -### Условия отмены -- Только инициатор предложения может отменить его -- Предложение должно быть активным (не выполнено, не отменено) -- Отмена возможна в любой момент до выполнения - -### Процесс отмены -1. **Последовательная отмена во всех активных сетях:** - - Для каждой активной сети: - - Переключение MetaMask на соответствующую сеть - - Задержка 1 секунда после переключения - - Отмена предложения с использованием **уникального ID предложения для этой сети** - - Задержка 3 секунды после подтверждения транзакции - -2. **Подписи в MetaMask:** - - Пользователь должен подписать транзакцию отмены в каждой активной сети DLE - - Количество подписей = количество активных сетей DLE - -### Технические детали -- **Функция контракта:** `cancelProposal(proposalId, reason)` -- **Проверка прав:** Контракт проверяет, что вызывающий является инициатором предложения - ---- - -## Важные особенности системы - -### 1. Уникальность ID предложений -- **Каждая сеть имеет свой собственный счетчик предложений** -- Предложение с ID=1 в Sepolia и предложение с ID=1 в Arbitrum Sepolia - это **разные предложения** -- При группировке система сохраняет ID из каждой сети отдельно -- При голосовании/выполнении/отмене используется правильный ID для каждой сети - -### 2. Группировка предложений -- Предложения группируются по ключу: `${description}_${initiator}` -- Одна карточка = одно логическое предложение во всех сетях -- Карточка отображает: - - Общее описание - - Инициатора - - Список сетей с их статусами - - Результаты голосования по каждой сети - - Общий статус (активно/выполнено/отменено) - -### 3. Независимые кворумы -- **Каждая сеть имеет свой собственный кворум** -- Кворум рассчитывается на основе общего предложения токенов в соответствующей сети -- Голосование в одной сети не влияет на кворум в другой сети -- Для выполнения предложения кворум должен быть достигнут **во всех сетях** - -### 4. Последовательное выполнение операций -- Все операции (создание, голосование, выполнение, отмена) выполняются **последовательно**, а не параллельно -- Это необходимо, так как MetaMask может работать только с одной сетью одновременно -- Между операциями есть задержки для стабилизации MetaMask -- **КРИТИЧЕСКИ ВАЖНО:** Использование `Promise.all` для параллельного выполнения недопустимо и приведет к ошибкам - -### 5. Обработка ошибок -- **Retry для временных ошибок RPC:** - - Автоматический retry до 3 попыток - - Экспоненциальная задержка (2s, 4s, 8s) - - Только для retryable ошибок (Internal JSON-RPC error, rate limiting) -- **Ошибки в отдельных сетях:** - - Если операция не удалась в одной сети, процесс продолжается для других сетей - - Пользователь получает сводку успешных и неудачных операций -- **Обработка отсутствия баланса:** - - Перед голосованием в каждой сети проверяется баланс токенов - - Если в сети нет токенов, голосование в этой сети пропускается с предупреждением - - Голосование продолжается в других сетях, где баланс есть - - Контракт также проверяет баланс и вернет ошибку `ErrNoPower`, если токенов нет - -### 6. Безопасность -- **Проверка инициатора:** При выполнении контракт проверяет, что `sender` совпадает с `initiator` -- **Проверка баланса:** Перед голосованием проверяется наличие токенов **в каждой сети отдельно** - - Балансы могут отличаться в разных сетях - - Если в сети нет токенов, голосование в этой сети пропускается - - Контракт также проверяет баланс через `getPastVotes()` и вернет ошибку `ErrNoPower`, если токенов нет -- **Проверка состояния:** Перед каждой операцией проверяется актуальное состояние предложения -- **Валидация данных:** Все данные предложения валидируются перед отправкой в контракт - -### 7. Перевод токенов -- **Источник токенов:** Токены переводятся с кошелька инициатора предложения, а не с баланса контракта -- **Получатель:** Может быть любой адрес (кошелек или казна) -- **Количество:** Указывается инициатором при создании предложения -- **Проверка баланса:** Контракт проверяет достаточность баланса инициатора перед выполнением - ---- - -## Пользовательский интерфейс - -### Карточка предложения -- **Заголовок:** Описание предложения -- **Инициатор:** Адрес создателя предложения -- **Список сетей:** - - Название сети - - Статус (Активно/Выполнено/Отменено/Истекло) - - ID предложения в этой сети - - Результаты голосования (За/Против) - - Кворум (достигнут/не достигнут) -- **Действия:** - - Голосовать "За" / "Против" (если активно) - - Выполнить (если готово к выполнению) - - Отменить (если инициатор) - -### Индикаторы статуса -- **Активно:** Предложение открыто для голосования -- **Готово к выполнению:** Кворум достигнут во всех сетях -- **Выполнено:** Перевод токенов выполнен во всех сетях -- **Отменено:** Предложение отменено инициатором -- **Истекло:** Истек период голосования - ---- - -## Технические детали реализации - -### Кодирование операций - -Подробное описание процесса кодирования операций для создания предложений см. в разделе [Кодирование операции](#кодирование-операции) (Этап 1: Создание предложения). - -### Структура данных предложения -```javascript -{ - id: number, // ID группы (из первой сети) - description: string, // Описание предложения - initiator: address, // Адрес инициатора - deadline: number, // Дедлайн голосования - chains: [ // Массив данных по каждой сети - { - id: number, // УНИКАЛЬНЫЙ ID для этой сети - chainId: number, // ID сети (11155111, 421614, 84532) - networkName: string, // Название сети - contractAddress: address, // Адрес контракта DLE в этой сети - state: number, // Состояние (0=Active, 3=Executed, 4=Canceled, 5=ReadyForExecution) - forVotes: bigint, // Голоса "За" - againstVotes: bigint, // Голоса "Против" - quorumRequired: bigint, // Требуемый кворум - executed: boolean, // Выполнено - canceled: boolean, // Отменено - transactionHash: string // Хеш транзакции создания - } - ], - createdAt: number, // Время создания - uniqueId: string // Уникальный ключ группировки -} -``` - -### Функции контракта DLE - -#### createProposal -```solidity -function createProposal( - string memory _description, - uint256 _duration, - bytes memory _operation, - uint256[] memory _targetChains, - uint256 _timelockDelay -) public returns (uint256 proposalId) -``` - -#### vote -```solidity -function vote(uint256 _proposalId, bool _support) public -``` - -#### executeProposal -```solidity -function executeProposal(uint256 _proposalId) public -``` - -#### cancelProposal -```solidity -function cancelProposal(uint256 _proposalId, string memory _reason) public -``` - -#### _transferTokens (internal) -```solidity -function _transferTokens( - address _sender, - address _recipient, - uint256 _amount -) internal -``` - ---- - -## Примеры использования - -### Пример 0: Кодирование операции перевода токенов - -Перед созданием предложения необходимо закодировать операцию. **КРИТИЧЕСКИ ВАЖНО:** Используйте правильную сигнатуру и конвертируйте amount в wei. - -```javascript -import { ethers } from 'ethers'; - -// Получаем адрес инициатора из signer -const signer = await provider.getSigner(); -const sender = await signer.getAddress(); // Адрес инициатора (обязательно!) - -// Параметры перевода -const recipient = '0x1234567890123456789012345678901234567890'; // Получатель -const amount = 100; // 100 токенов (в обычных единицах, не в wei) - -// Кодирование операции -const functionSignature = '_transferTokens(address,address,uint256)'; -const iface = new ethers.Interface([`function ${functionSignature}`]); - -// КРИТИЧЕСКИ ВАЖНО: конвертируем amount в wei -const amountInWei = ethers.parseUnits(amount.toString(), 18); // 100 * 10^18 wei - -const encodedOperation = iface.encodeFunctionData('_transferTokens', [ - sender, // адрес инициатора (обязательно!) - recipient, // адрес получателя - amountInWei // количество в wei (обязательно!) -]); - -// encodedOperation теперь можно использовать в createProposal -// Результат: 0x... (селектор функции + закодированные параметры) - -// Создание предложения с правильным порядком параметров -const tx = await dle.createProposal( - "Перевод 100 токенов в казну", // description - 86400, // duration (1 день в секундах) - encodedOperation, // operation - [chainId], // targetChains (массив!) - 0 // timelockDelay -); -``` - -**Результат:** Закодированная операция в формате bytes, готовая для передачи в `createProposal`. - -**Частые ошибки:** -- ❌ Использование `_transferTokens(address,uint256)` - неправильная сигнатура -- ❌ Отсутствие параметра `sender` - контракт не сможет проверить инициатора -- ❌ Передача `amount` без конвертации в wei - неправильное количество токенов -- ❌ Неправильный порядок параметров в `createProposal` - ошибка вызова контракта - -### Пример 1: Создание предложения в 3 сетях -1. Пользователь создает предложение "Перевод 100 токенов в казну" -2. Система определяет 3 сети: Sepolia, Arbitrum Sepolia, Base Sepolia -3. Создаются 3 предложения: - - Sepolia: ID=5 - - Arbitrum Sepolia: ID=3 - - Base Sepolia: ID=7 -4. Все 3 предложения отображаются как одна карточка - -### Пример 2: Голосование -1. Пользователь голосует "За" за предложение -2. Система голосует в 3 сетях: - - Sepolia: vote(5, true) - - Arbitrum Sepolia: vote(3, true) - - Base Sepolia: vote(7, true) -3. Каждое голосование требует отдельной подписи в MetaMask - -### Пример 3: Выполнение -1. Кворум достигнут во всех 3 сетях -2. Система выполняет предложение в 3 сетях: - - Sepolia: executeProposal(5) - - Arbitrum Sepolia: executeProposal(3) - - Base Sepolia: executeProposal(7) -3. В каждой сети токены переводятся с кошелька инициатора на адрес получателя - ---- - -## Ограничения и особенности - -### Ограничения -- MetaMask может работать только с одной сетью одновременно -- Операции выполняются последовательно, что может занять время при большом количестве сетей -- Ошибки RPC могут потребовать ручного retry - -### Особенности -- Если предложение не создано в одной из сетей (из-за ошибки), оно все равно может быть создано в других сетях -- Голосование возможно только в тех сетях, где предложение активно -- Выполнение возможно только если кворум достигнут во всех активных сетях - ---- - -## Безопасность - -### Защита от атак -- Проверка инициатора при выполнении -- Проверка баланса перед переводом -- Независимые кворумы в каждой сети -- Валидация всех входных данных - -### Рекомендации -- Всегда проверяйте адрес получателя перед созданием предложения -- Убедитесь, что у вас достаточно токенов для перевода -- Проверяйте статус предложения перед голосованием/выполнением -- Следите за транзакциями в каждой сети - ---- - -## Известные проблемы и исправления - -### Исправленные критические ошибки - -#### 1. Отсутствие конвертации amount в wei -**Проблема:** Параметр `amount` передавался без конвертации в wei, что приводило к неправильному количеству токенов при выполнении. - -**Исправление:** Добавлена обязательная конвертация через `ethers.parseUnits(amount.toString(), 18)` перед кодированием операции. - -**Файл:** `frontend/src/views/smartcontracts/TransferTokensFormView.vue` - -**Статус:** ✅ Исправлено - -#### 2. Неправильная сигнатура функции _transferTokens -**Проблема:** Использовалась неправильная сигнатура `_transferTokens(address,uint256)` вместо `_transferTokens(address,address,uint256)`, что приводило к ошибкам декодирования в контракте. - -**Исправление:** Исправлена сигнатура функции и добавлен обязательный параметр `sender` (адрес инициатора). - -**Файл:** `frontend/src/utils/dle-contract.js` (функция `createTransferTokensProposal`) - -**Статус:** ✅ Исправлено - -#### 3. Неправильный порядок параметров в createProposal -**Проблема:** В функцию `createProposal` передавался `governanceChainId` вместо `targetChains` в 4-м параметре, что нарушало сигнатуру контракта. - -**Исправление:** Исправлен порядок параметров согласно сигнатуре контракта: `description`, `duration`, `operation`, `targetChains`, `timelockDelay`. - -**Файл:** `frontend/src/utils/dle-contract.js` (функция `createTransferTokensProposal`) - -**Статус:** ✅ Исправлено - -#### 4. Неправильное кодирование операции при создании предложений (КРИТИЧЕСКАЯ) -**Проблема:** Операция перевода токенов кодировалась один раз до цикла по сетям, используя адрес из `formData.value.sender`. По документации, `sender` должен определяться из `signer.getAddress()` при создании предложения в каждой сети, что гарантирует совпадение с инициатором предложения. - -**Исправление:** -- Кодирование операции перемещено внутрь цикла по сетям -- Добавлено получение адреса signer для каждой сети через `await signer.getAddress()` -- Добавлена проверка соответствия адреса signer адресу из формы -- Операция теперь кодируется с актуальным адресом signer для каждой сети отдельно - -**Файл:** `frontend/src/views/smartcontracts/TransferTokensFormView.vue` (функция `submitForm`) - -**Статус:** ✅ Исправлено (2025-01-XX) - -#### 5. Параллельное выполнение в executeMultichainProposal (КРИТИЧЕСКАЯ) -**Проблема:** Функция `executeMultichainProposal` использовала `Promise.all` для параллельного выполнения операций во всех сетях одновременно. Это не работает с MetaMask, который может работать только с одной сетью одновременно. - -**Исправление:** -- Заменен `Promise.all` на последовательный цикл `for` -- Добавлено переключение сетей через `switchToVotingNetwork` для каждой сети -- Добавлены задержки после переключения сетей (1 секунда) и после подтверждения транзакций (3 секунды, 5 секунд для Base Sepolia) -- Добавлена фильтрация только готовых к выполнению цепочек - -**Файл:** `frontend/src/composables/useProposals.js` (функция `executeMultichainProposal`) - -**Статус:** ✅ Исправлено (2025-01-XX) - -#### 6. Отсутствие переключения сетей в voteOnMultichainProposal -**Проблема:** Функция `voteOnMultichainProposal` не использовала переключение сетей и проверку баланса токенов, что требовалось по документации для корректной работы в мультичейн-среде. - -**Исправление:** -- Добавлено переключение сетей через `switchToVotingNetwork` для каждой сети -- Добавлена проверка баланса токенов перед голосованием в каждой сети через `checkTokenBalance` -- Добавлены задержки после переключения сетей (1 секунда) и после подтверждения транзакций (3 секунды, 5 секунд для Base Sepolia) -- Добавлена фильтрация только активных цепочек -- Добавлена обработка ошибок с пропуском сетей при отсутствии баланса - -**Файл:** `frontend/src/composables/useProposals.js` (функция `voteOnMultichainProposal`) - -**Статус:** ✅ Исправлено (2025-01-XX) - -### Текущая корректная реализация - -Все функции кодирования операций и мультичейн-операции теперь используют: -- ✅ Правильную сигнатуру: `_transferTokens(address,address,uint256)` -- ✅ Все три параметра: `sender`, `recipient`, `amount` -- ✅ Конвертацию amount в wei: `ethers.parseUnits(amount.toString(), 18)` -- ✅ Правильный порядок параметров в `createProposal` -- ✅ Определение `sender` из `signer.getAddress()` при создании предложения в каждой сети -- ✅ Последовательное выполнение операций во всех мультичейн-функциях (не параллельное) -- ✅ Переключение сетей перед каждой операцией в мультичейн-функциях -- ✅ Проверку баланса токенов перед голосованием в каждой сети - -### Проверка корректности - -Перед развертыванием убедитесь, что: -1. Функция `_transferTokens` кодируется с **тремя** параметрами (sender, recipient, amount) -2. `amount` всегда конвертируется в wei перед кодированием -3. `sender` получается из `signer.getAddress()` при создании предложения в каждой сети и совпадает с инициатором предложения -4. Порядок параметров в `createProposal` соответствует сигнатуре контракта -5. Все мультичейн-операции (создание, голосование, выполнение) используют последовательное выполнение с переключением сетей -6. При голосовании проверяется баланс токенов в каждой сети отдельно - ---- - -## Заключение - -Система мультичейн-управления DLE обеспечивает децентрализованное управление переводом токенов через независимые кворумы в каждой сети, при этом предоставляя единый интерфейс для управления предложениями во всех сетях одновременно. - -**Важно:** Все критические ошибки в кодировании операций исправлены. Код соответствует документации и контракту. - diff --git a/docs/README.md b/docs/README.md index 74e077b..78dcf9e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,13 +4,12 @@ ## 📖 Определение продукта -**Digital Legal Entity (DLE)** — микросервисная IT-инфраструктура с веб-приложением для локального развёртывания на серверах компании. +**Digital Legal Entity (DLE)** — микросервисная платформа с веб-приложением для локальной установки на серверах компании. **Включает:** - Инструменты настройки ИИ-агентов - Систему смарт-контрактов с поддержкой: - - Реквизитов юридических лиц - - Идентификаторов для финансовых операций, установленных регулятором + - Налоговых, бухгалтерских, банковских и иных идентификаторов, установленных регулятором **Преимущества:** - Управление и автоматизация бизнес-процессов @@ -26,17 +25,21 @@ | Файл | Краткое описание | | --- | --- | | [application-description.md](./application-description.md) | Обзор назначения платформы, ключевых преимуществ и экономического эффекта. | -| [ai-assistant.md](./ai-assistant.md) | Подробное описание возможностей AI-ассистента и cases для бизнеса. | -| [setup-ai-assistant.md](./setup-ai-assistant.md) | Пошаговая настройка локального AI-ассистента с векторным поиском. | -| [setup-instruction.md](./setup-instruction.md) | Основная инструкция по установке и первичной конфигурации приложения. | +| [ai-assistant.md](./ai-assistant.md) | ИИ-агенты: архитектура, создание агентов под бизнес-процессы, примеры и экономический эффект. | | [blockchain-for-business.md](./blockchain-for-business.md) | Бизнес-обоснование и кейсы использования блокчейна в DLE. | -| [blockchain-integration-technical.md](./blockchain-integration-technical.md) | Техническая архитектура блокчейн-интеграции и смарт-контрактов. | | [security.md](./security.md) | Модель безопасности, контроль доступа и защитные механизмы. | | [service-terms.md](./service-terms.md) | Подробные условия приобретения и обслуживания лицензии. | -| [FAQ.md](./FAQ.md) | Ответы на частые вопросы по лицензированию, установке и функциям. | -| [system-messages-management.md](./system-messages-management.md) | Техническое задание по управлению системными сообщениями. | -| [tables-system.md](./tables-system.md) | Описание системы электронных таблиц, архитектуры и интеграций. | -| [commercial-proposal-entrepreneurs.md](./commercial-proposal-entrepreneurs.md) | Готовое коммерческое предложение для предпринимателей из СНГ. | + +### 📂 Техническая документация (back-docs/) + +| Файл | Краткое описание | +| --- | --- | +| [setup-instruction.md](./back-docs/setup-instruction.md) | Основная инструкция по установке и первичной конфигурации приложения. | +| [setup-ai-assistant.md](./back-docs/setup-ai-assistant.md) | Пошаговая настройка локального AI-ассистента с векторным поиском. | +| [blockchain-integration-technical.md](./back-docs/blockchain-integration-technical.md) | Техническая архитектура блокчейн-интеграции и смарт-контрактов. | +| [tables-system.md](./back-docs/tables-system.md) | Описание системы электронных таблиц, архитектуры и интеграций. | +| [multi-agent-architecture.md](./back-docs/multi-agent-architecture.md) | Архитектура множественных ИИ-агентов. | +| [system-messages-management.md](./back-docs/system-messages-management.md) | Техническое задание по управлению системными сообщениями. | --- diff --git a/docs/TASK_REQUIREMENTS.md b/docs/TASK_REQUIREMENTS.md deleted file mode 100644 index ad545c1..0000000 --- a/docs/TASK_REQUIREMENTS.md +++ /dev/null @@ -1,217 +0,0 @@ -# Задание: Реализация мульти-чейн governance системы для DLE - -## Статус выполнения -- ✅ Форма создания предложения работает -- ✅ Предложение создается во всех цепочках DLE -- ✅ Голосование происходит отдельно в каждой цепочке -- ✅ Кворум считается отдельно для каждой цепочки -- ✅ Личный перевод токенов от инициатора предложения -- ✅ Группировка предложений по description + initiator -- ✅ Серверная координация с криптографическими доказательствами -- ✅ Убрана хардкод цепочек - используются deployedNetworks из API - -## Контекст -DLE (Digital Legal Entity) - децентрализованная юридическая сущность с контрактами в нескольких блокчейн-сетях. Необходимо реализовать систему управления токенами через мульти-чейн governance, где холдеры токенов могут переводить токены через голосование с кворумом. - -## Архитектура системы - -### Мульти-чейн компоненты -- **Frontend**: Vue.js приложение с Web3 интеграцией -- **Backend**: Node.js сервер для координации и API -- **Smart Contracts**: DLE контракты в каждой поддерживаемой сети -- **Database**: PostgreSQL для хранения метаданных -- **WebSocket**: Real-time синхронизация между сетями - -### Поддерживаемые сети -- Ethereum Sepolia (chainId: 11155111) -- Arbitrum Sepolia (chainId: 421614) -- Base Sepolia (chainId: 84532) - -## Требования к функционалу - -### 1. Форма создания предложения о переводе токенов -**URL:** `/management/transfer-tokens?address=` - -**Поля формы:** -- Адрес получателя (обязательное, address) -- Сумма перевода (обязательное, number в токенах) -- Описание предложения (опциональное, string) -- Время голосования (обязательное, number в днях) - -### 2. Логика создания предложений -1. **Определение сетей:** Получение списка `deployedNetworks` через API `/dle-v2` -2. **Параллельное создание:** Предложения создаются одновременно во ВСЕХ сетях DLE -3. **Кодирование операции:** `_transferTokens(address,uint256)` для перевода токенов от инициатора - -### 3. Логика голосования -1. **Независимое голосование:** Каждая сеть голосует отдельно -2. **Локальный кворум:** Кворум считается по формуле `(forVotes / totalSupply) >= quorumPercentage` -3. **Голосование токенами:** Вес голоса = баланс токенов избирателя - -### 4. Логика исполнения -1. **Локальное исполнение:** Каждый контракт проверяет свой локальный кворум -2. **Серверная координация:** Backend собирает результаты кворумов из всех сетей -3. **Криптографические доказательства:** Сервер подписывает глобальный статус кворума -4. **Глобальное исполнение:** Контракт проверяет подпись и выполняет операцию - -## Техническая спецификация - -### Smart Contract (DLE.sol) - -#### Структура Proposal -```solidity -struct Proposal { - uint256 id; - string description; - uint256 forVotes; - uint256 againstVotes; - bool executed; - bool canceled; - uint256 deadline; - address initiator; // Создатель предложения - bytes operation; // Закодированная операция - uint256[] targetChains; // Целевые сети для исполнения - uint256 snapshotTimepoint; // Точка снимка для голосования - mapping(address => bool) hasVoted; -} -``` - -#### Функция _transferTokens -```solidity -function _transferTokens(address _sender, address _recipient, uint256 _amount) internal { - require(balanceOf(_sender) >= _amount, "Insufficient balance"); - _transfer(_sender, _recipient, _amount); - emit TokensTransferredByGovernance(_recipient, _amount); -} -``` - -#### События -```solidity -event ProposalCreated(uint256 proposalId, address initiator, string description); -event QuorumReached(uint256 proposalId, uint256 chainId); -event ProposalExecuted(uint256 proposalId, bytes operation); -``` - -### Backend (Node.js) - -#### Сервис координации кворумов -```javascript -class QuorumCoordinator { - // Сбор результатов голосования из всех сетей - async collectQuorumResults(proposalId) { - // Слушать события QuorumReached из всех сетей - // Сохранять в базу данных - } - - // Генерация криптографических доказательств - async generateGlobalQuorumProof(proposalId) { - // Подписать глобальный статус кворума - // Вернуть подпись для контрактов - } -} -``` - -#### API Endpoints -- `GET /dle-v2` - получение информации о DLE и сетях -- `POST /api/dle-proposals/get-proposals` - получение списка предложений -- `POST /api/dle-proposals/create-proposal` - создание предложения -- `POST /api/dle-proposals/vote-proposal` - голосование -- `POST /api/dle-proposals/execute-proposal` - исполнение - -### Frontend (Vue.js) - -#### Компонент TransferTokensFormView -- Валидация формы -- Кодирование операции перевода -- Параллельное создание предложений во всех сетях -- Обработка ошибок и отображение результатов - -#### Компонент DleProposalsView -- Группировка предложений по `description + initiator` -- Отображение статуса по каждой сети -- Кнопки голосования для каждой активной сети -- Кнопка исполнения при глобальном кворуме - -## Алгоритм работы - -### Сценарий использования - -1. **Пользователь открывает форму** `/management/transfer-tokens?address=0xdD27...9386` -2. **Вводит данные:** - - Получатель: `0x123...abc` - - Сумма: `1000` токенов - - Описание: `"Перевод средств подрядчику"` - - Время: `7` дней -3. **Нажимает "Создать"** -4. **Система:** - - Определяет сети: Sepolia, Arbitrum Sepolia, Base Sepolia - - Создает предложения в каждой сети параллельно - - Кодирует `_transferTokens(инициатор, получатель, сумма)` - -5. **На странице предложений** появляется одна карточка с статусом по сетям -6. **Пользователи голосуют** в каждой сети отдельно -7. **При локальном кворуме** контракт эмитирует `QuorumReached` -8. **Backend собирает** результаты из всех сетей -9. **При глобальном кворуме** сервер подписывает доказательство -10. **Пользователь вызывает** `executeWithGlobalQuorum()` с подписью -11. **Контракт проверяет** подпись и выполняет перевод - -## Безопасность - -### Уровни защиты -1. **On-chain проверки:** Баланс токенов, сроки голосования, кворум -2. **Криптографические доказательства:** Подпись сервера для глобального кворума -3. **Многоуровневая валидация:** Локальный + глобальный кворум -4. **Отказоустойчивость:** Graceful degradation при недоступности сетей - -### Риски и mitigation -- **Сервер скомпрометирован:** Проверка подписи предотвращает подделку -- **Сеть недоступна:** Локальное голосование работает независимо -- **Replay attacks:** Проверка ID предложения и chainId -- **Front-running:** Использование commit-reveal схемы при необходимости - -## Тестирование - -### Критерии приемки -- [x] Форма создания предложения работает -- [x] Предложение создается во всех цепочках DLE -- [x] Голосование происходит отдельно в каждой цепочке -- [x] Кворум считается отдельно для каждой цепочки -- [x] Перевод токенов происходит от инициатора предложения -- [x] Серверная координация с криптографическими доказательствами -- [x] Группировка предложений в интерфейсе -- [x] Обработка ошибок и edge cases - -### Test cases -1. Создание предложения в мульти-чейн среде -2. Голосование в одной сети при недоступности других -3. Исполнение при глобальном кворуме -4. Исполнение при частичном кворуме (должен fail) -5. Перевод токенов от инициатора с достаточным балансом -6. Попытка перевода с недостаточным балансом (должен fail) - -## Развертывание - -### Требования к инфраструктуре -- **Backend сервер** с доступом к RPC всех сетей -- **Database** для хранения метаданных предложений -- **SSL сертификаты** для безопасной коммуникации -- **Monitoring** для отслеживания состояния сетей - -### Переменные окружения -```bash -# RPC URLs -SEPOLIA_RPC_URL=https://1rpc.io/sepolia -ARBITRUM_SEPOLIA_RPC_URL=https://sepolia-rollup.arbitrum.io/rpc -BASE_SEPOLIA_RPC_URL=https://sepolia.base.org - -# Database -DATABASE_URL=postgresql://user:pass@localhost:5432/dle - -# Server keys for signing -SERVER_PRIVATE_KEY=0x... -``` - -## Заключение - -Реализована полнофункциональная мульти-чейн governance система для управления токенами DLE. Система обеспечивает децентрализованное принятие решений с координацией через trusted server с криптографическими доказательствами, обеспечивая баланс между удобством использования и безопасностью. \ No newline at end of file diff --git a/docs/ai-assistant.md b/docs/ai-assistant.md index a7606bd..d8eb5da 100644 --- a/docs/ai-assistant.md +++ b/docs/ai-assistant.md @@ -1,386 +1,370 @@ -# AI Ассистент DLE - Полные возможности для бизнеса +# ИИ-агенты DLE — система создания специализированных агентов для бизнеса -> **Философия**: AI не заменяет людей, а становится их вторым пилотом, высвобождая 85% времени для стратегии и креатива. +> **Концепция**: одна локальная модель — множество специализированных агентов. Каждый агент заточен под конкретный бизнес-процесс: свой промпт, свои правила, своя база знаний, свой интерфейс. -## 📋 Содержание +## Содержание -1. [Введение](#введение) -2. [Технология и архитектура](#технология-и-архитектура) -3. [Полные возможности AI ассистента](#полные-возможности-ai-ассистента) -4. [Экономический эффект](#экономический-эффект) -5. [Настройка и интеграция](#настройка-и-интеграция) +1. [Что это и зачем](#что-это-и-зачем) +2. [Архитектура](#архитектура) +3. [Как создать агента](#как-создать-агента) +4. [Примеры агентов](#примеры-агентов) +5. [Технологический стек](#технологический-стек) +6. [Преимущества перед облачными решениями](#преимущества-перед-облачными-решениями) +7. [Экономический эффект](#экономический-эффект) --- -## Введение +## Что это и зачем -### Что такое AI Ассистент в DLE? +DLE предоставляет **инструменты для создания ИИ-агентов** — специализированных помощников, каждый из которых отвечает за отдельный бизнес-процесс. -**AI Ассистент** - это встроенный интеллектуальный помощник, который использует: -- 🧠 **Ollama** - локальные open-source модели AI (qwen2.5:7b) -- 🔍 **Векторный поиск** - FAISS для семантического поиска -- 📚 **RAG** (Retrieval-Augmented Generation) - поиск по базе знаний -- 💾 **Кэширование** - мгновенные ответы на частые вопросы +Это не один универсальный чат-бот. Это **конструктор**, в котором вы: -### Ключевые преимущества +- Создаёте агента под конкретную задачу (поддержка клиентов, контент, закупки, аналитика) +- Задаёте ему роль через системный промпт +- Подключаете базу знаний (RAG-таблицы) с релевантными данными +- Настраиваете правила поведения (строгий режим, креативный, гибридный) +- Привязываете к каналам (веб-чат, Telegram, Email) +- Получаете изолированного специалиста, который работает 24/7 -1. **🏠 100% локальный** - все данные на вашем сервере -2. **🔒 Полная конфиденциальность** - ничего не уходит в облако -3. **⚡ Молниеносные ответы** - кэширование и векторный поиск -4. **💰 Нулевые затраты на API** - нет оплаты за токены -5. **📈 Обучается на ваших данных** - персонализированные ответы -6. **🌍 Многоязычный** - поддержка русского, английского и др. -7. **🔄 24/7 доступность** - работает круглосуточно +Все агенты используют **одну локальную модель Ollama** на вашем сервере. Различие между ними — в системных промптах, правилах и подключённых данных. Данные не покидают ваш сервер. --- -## Технология и архитектура +## Архитектура -### Как это работает? +### Принцип: одна модель — множество агентов ``` -┌─────────────────────────────────────────────────────────┐ -│ Архитектура AI Ассистента │ -└─────────────────────────────────────────────────────────┘ - -┌─────────────────────────────────────────┐ -│ 1. Пользователь задает вопрос │ -│ "Как вернуть товар?" │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 2. Векторизация вопроса │ -│ Ollama mxbai-embed-large:latest │ -│ Текст → Вектор [768 чисел] │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 3. Векторный поиск (FAISS) │ -│ Поиск похожих вопросов в базе │ -│ Top-3 результата по семантике │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 4. Контекстный поиск (RAG) │ -│ Извлечение ответов из базы знаний │ -│ Фильтрация по тегам/продуктам │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 5. Генерация ответа (LLM) │ -│ Ollama qwen2.5:7b │ -│ Контекст + Вопрос → Ответ │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 6. Кэширование │ -│ Сохранение в кэш на 1 час │ -│ Следующий такой же вопрос < 50ms │ -└────────────────┬────────────────────────┘ - ↓ -┌─────────────────────────────────────────┐ -│ 7. Ответ пользователю │ -│ "Товар можно вернуть в течение..." │ -└─────────────────────────────────────────┘ +┌──────────────────────────────────────────────────────┐ +│ Локальная модель Ollama (qwen2.5:7b) │ +│ Единая для всех агентов │ +└───────────┬──────────────┬───────────────┬───────────┘ + │ │ │ + ↓ ↓ ↓ +┌───────────────┐ ┌────────────────┐ ┌──────────────┐ +│ Агент │ │ Агент │ │ Агент │ +│ поддержки │ │ контент- │ │ закупок │ +│ │ │ редактор │ │ │ +│ Промпт: │ │ Промпт: │ │ Промпт: │ +│ "Вы — │ │ "Вы — │ │ "Вы — │ +│ ассистент │ │ контент- │ │ специалист │ +│ поддержки" │ │ маркетолог" │ │ по закупкам"│ +│ │ │ │ │ │ +│ RAG: FAQ, │ │ RAG: стиль, │ │ RAG: база │ +│ документация │ │ инструкции, │ │ поставщиков, │ +│ │ │ примеры │ │ условия │ +│ │ │ │ │ │ +│ Правила: │ │ Правила: │ │ Правила: │ +│ строгий │ │ креативный │ │ гибридный │ +│ (t=0.3) │ │ (t=0.7) │ │ (t=0.5) │ +│ │ │ │ │ │ +│ Каналы: │ │ Каналы: │ │ Каналы: │ +│ чат, TG, │ │ веб-интерфейс │ │ веб-интерфейс│ +│ email │ │ /content-editor│ │ │ +└───────────────┘ └────────────────┘ └──────────────┘ ``` -### Технологический стек +### Изоляция агентов + +Каждый агент полностью изолирован: + +| Параметр | Изоляция | +|----------|----------| +| Системный промпт | Свой для каждого агента | +| Правила (Rules) | Свой набор: temperature, maxTokens, режим RAG | +| RAG-таблицы | Агент видит только свои подключённые таблицы | +| Каналы | Отдельная привязка к веб-чату, Telegram, Email | +| Интерфейс | Свой маршрут и UI | +| Права доступа | Раздельные permissions | + +Агенты не влияют друг на друга: можно создавать, менять и удалять их независимо. + +### Обработка запроса + +``` +Запрос пользователя + ↓ +Определение агента (по каналу / маршруту) + ↓ +Загрузка настроек агента (промпт, правила, RAG-таблицы) + ↓ +Векторизация запроса (Ollama mxbai-embed-large → вектор [768]) + ↓ +RAG-поиск по подключённым таблицам (FAISS) + ↓ +Генерация ответа (LLM с контекстом из RAG + системный промпт + история) + ↓ +Кэширование ответа (TTL 1 час, повторный запрос < 50ms) + ↓ +Ответ пользователю +``` + +--- + +## Как создать агента + +### Шаг 1. Базовая информация + +- **Название** — «Агент поддержки», «Контент-редактор», «AI-закупщик» +- **Роль** — support, content_editor, analyst, purchaser и т.д. +- **Описание** — для чего агент создан + +### Шаг 2. Системный промпт + +Определяет личность и поведение агента. Примеры: + +**Для агента поддержки:** +``` +Вы — профессиональный ассистент службы поддержки компании "Название". + +Правила: +1. Отвечайте ТОЛЬКО на основе базы знаний +2. Если ответа нет — предложите связаться с оператором +3. Не придумывайте информацию о ценах, сроках, условиях +4. Обращайтесь к клиенту на "Вы" +5. Заканчивайте: "Чем ещё могу помочь?" +``` + +**Для контент-редактора:** +``` +Вы — профессиональный контент-маркетолог и редактор компании "Название". + +Правила: +1. Используйте стиль компании из базы знаний +2. Следуйте инструкциям конкретной платформы (ВК, Telegram, и т.д.) +3. Используйте ключевые слова и хэштеги из базы +4. Добавляйте CTA-блоки из базы +``` + +### Шаг 3. Правила (Rules) + +JSON-конфигурация поведения агента: + +```json +{ + "searchRagFirst": true, + "generateIfNoRag": false, + "checkUserTags": true, + "temperature": 0.3, + "maxTokens": 500 +} +``` + +| Параметр | Что делает | Поддержка | Контент | Аналитика | +|----------|-----------|-----------|---------|-----------| +| `temperature` | Степень креативности (0.0–1.0) | 0.3 | 0.7 | 0.2 | +| `searchRagFirst` | Сначала искать в базе знаний | true | true | true | +| `generateIfNoRag` | Генерировать, если не нашёл в базе | false | true | false | +| `maxTokens` | Максимальная длина ответа | 500 | 2000 | 1000 | +| `checkUserTags` | Учитывать теги пользователя | true | false | true | + +### Шаг 4. База знаний (RAG-таблицы) + +Подключите электронные таблицы, по которым агент будет искать информацию: + +- **Агент поддержки** → таблицы «FAQ», «Документация продукта» +- **Контент-редактор** → таблицы «Инструкции платформ», «Стиль компании», «Примеры контента», «Ключевые слова» +- **AI-закупщик** → таблицы «База поставщиков», «Условия и прайсы» + +Каждая таблица должна иметь столбцы с назначениями «Вопрос для AI» и «Ответ AI» — они автоматически индексируются для векторного поиска. + +### Шаг 5. Каналы и интерфейс + +| Параметр | Описание | +|----------|----------| +| Каналы | веб-чат, Telegram, Email, SMS | +| Маршрут | URL интерфейса агента (например, `/content-editor`) | +| Права доступа | Какие роли пользователей имеют доступ | + +### Шаг 6. Активация + +Включите агента — он начнёт обрабатывать запросы по подключённым каналам. + +--- + +## Примеры агентов + +### 1. Агент поддержки клиентов + +**Задача**: отвечать на вопросы клиентов 24/7 на основе базы знаний. + +| Параметр | Значение | +|----------|----------| +| Режим | Строгий — только из базы знаний | +| temperature | 0.3 | +| RAG-таблицы | FAQ, Документация, База знаний для клиентов | +| Каналы | Веб-чат, Telegram, Email | +| Поведение при отсутствии ответа | Предлагает связаться с оператором | + +**Пример работы:** +``` +Клиент: "Как оплатить заказ?" +Агент: [Ищет в таблице FAQ → находит ответ с Score < 300] + "Мы принимаем оплату банковской картой, через PayPal + или банковским переводом. Чем ещё могу помочь?" +``` + +### 2. Контент-редактор + +**Задача**: создавать контент для соцсетей, блога, рассылок по стилю компании. + +| Параметр | Значение | +|----------|----------| +| Режим | Креативный — генерирует на основе инструкций и примеров | +| temperature | 0.7 | +| RAG-таблицы | Инструкции платформ, Стиль компании, Примеры контента, Ключевые слова, CTA-блоки | +| Каналы | Веб-интерфейс `/content-editor` | +| Доступ | Пользователи с ролью Editor | + +**Интерфейс:** +- Поле ввода задачи +- Выбор типа контента (пост ВК, статья блога, email-рассылка) +- Выбор платформы +- Генерация → редактирование → сохранение/экспорт +- История созданного контента + +### 3. AI-закупщик + +**Задача**: помогать с выбором поставщиков и анализом условий. + +| Параметр | Значение | +|----------|----------| +| Режим | Гибридный | +| temperature | 0.5 | +| RAG-таблицы | База поставщиков, Условия и прайсы | +| Каналы | Веб-интерфейс | +| Доступ | Менеджеры по закупкам | + +**Пример работы:** +``` +Менеджер: "Кто поставляет электронику с доставкой до 3 дней?" +Агент: [Ищет в таблице поставщиков, фильтрует по категории и срокам] + "ТОП-3 поставщика электроники с доставкой до 3 дней: + 1. ООО «Техноснаб» — рейтинг 9/10, доставка 2 дня + 2. ..." +``` + +### 4. Другие возможные агенты + +| Агент | Задача | RAG-таблицы | +|-------|--------|-------------| +| **Аналитик** | Анализ данных, создание отчётов, выявление трендов | Метрики, KPI, Отчёты | +| **HR-ассистент** | Скрининг резюме, ответы сотрудникам, планирование обучения | База знаний для сотрудников, HR-политики | +| **Переводчик** | Перевод документов, локализация контента | Глоссарии, Стиль для разных языков | +| **Юрист-помощник** | Анализ договоров, ответы на правовые вопросы | Шаблоны договоров, Нормативные акты | + +Количество агентов не ограничено. Каждый новый агент — это новая комбинация промпта, правил и подключённых таблиц. + +--- + +## Технологический стек | Компонент | Технология | Назначение | |-----------|------------|------------| -| **LLM модель** | Ollama qwen2.5:7b | Генерация текста, диалог | -| **Embedding модель** | mxbai-embed-large | Векторизация текста | -| **Векторная БД** | FAISS | Быстрый семантический поиск | -| **Основная БД** | PostgreSQL | Хранение базы знаний | -| **Кэш** | Node.js Map + TTL | Ускорение повторных запросов | -| **Очередь** | AI Queue | Обработка задач по приоритету | +| LLM | Ollama (qwen2.5:7b или любая другая) | Генерация ответов, диалог | +| Embedding | mxbai-embed-large | Векторизация текста для поиска | +| Векторная БД | FAISS | Быстрый семантический поиск | +| Основная БД | PostgreSQL | Хранение настроек агентов, баз знаний, истории | +| Кэш | Node.js Map + TTL | Ускорение повторных запросов (< 50ms) | +| Очередь | AI Queue | Обработка задач по приоритету | +| Шифрование | AES-256 | Все промпты и настройки зашифрованы | + +### Методы поиска (RAG) + +| Метод | Описание | Когда использовать | +|-------|----------|-------------------| +| Семантический | Поиск по смыслу через FAISS | Когда важна точность понимания | +| По ключевым словам | Быстрый текстовый поиск | Когда важна скорость | +| Гибридный | 70% семантика + 30% ключевые слова | Рекомендуется по умолчанию | + +Дополнительно: нечёткий поиск (опечатки), стемминг (разные формы слов), извлечение ключевых слов. --- -## Полные возможности AI ассистента +## Преимущества перед облачными решениями -### 1. 📞 Клиентский сервис и поддержка - -**Автоматические ответы на типовые вопросы:** -- Мгновенные ответы 24/7 через Telegram, Email, Web чат -- Автоматическая диагностика проблем по номеру заказа -- Создание тикетов в CRM с приоритизацией -- База знаний с векторным поиском -- Многоязычная поддержка клиентов из разных стран -- Анализ настроения клиентов в реальном времени -- Эскалация сложных вопросов к живым операторам -- Персонализированные рекомендации на основе истории покупок - -**Интеграция с мессенджерами:** -- Telegram бот с AI-ассистентом -- Email поддержка с автоматическим анализом -- Web чат на сайте с умным виджетом -- SMS рассылки и уведомления -- Веб-формы обратной связи - -### 2. 📊 Аналитика и бизнес-интеллект - -**Автоматический анализ данных:** -- Анализ больших данных и выявление трендов -- Прогнозирование продаж и спроса на товары/услуги -- Сегментация клиентов по поведению и предпочтениям -- Анализ эффективности маркетинговых кампаний -- Выявление аномалий в финансовых показателях -- Создание интерактивных дашбордов с ключевыми метриками -- Сравнительный анализ с конкурентами -- Бенчмаркинг и отраслевые сравнения - -### 3. 💰 Финансовое планирование и учет - -**Автоматизация финансовых процессов:** -- Автоматическое ведение бухгалтерии и формирование отчетов -- Прогнозирование денежных потоков и планирование бюджета -- Анализ рентабельности продуктов и услуг -- Выявление финансовых рисков и рекомендации по их снижению -- Автоматическое создание инвойсов и отслеживание платежей -- Оптимизация налогового планирования -- Мониторинг KPI и финансовых показателей -- Консолидированная отчетность по всем подразделениям - -### 4. 🎯 Маркетинг и продажи - -**Контент-маркетинг:** -- Генерация контента для социальных сетей, блогов, email-рассылок -- Персонализация маркетинговых сообщений для каждого клиента -- A/B тестирование различных вариантов рекламы -- Анализ эффективности каналов привлечения клиентов -- Автоматическое создание email-кампаний -- SEO-оптимизация контента и мета-тегов -- Управление репутацией в интернете - -**Продажи:** -- Автоматическое создание коммерческих предложений -- Анализ клиентской базы и выявление возможностей -- Персонализированные рекомендации по продуктам -- Автоматическое отслеживание воронки продаж -- Генерация скриптов для холодных звонков - -### 5. 👥 HR и управление персоналом - -**Подбор и управление персоналом:** -- Автоматический скрининг резюме и первичный отбор кандидатов -- Проведение собеседований с помощью чат-бота -- Анализ производительности сотрудников -- Планирование обучения и развития персонала -- Автоматическое создание должностных инструкций -- Анализ удовлетворенности сотрудников -- Планирование отпусков и смен -- Мониторинг настроения команды - -**Обучение персонала:** -- Персонализированные программы обучения для сотрудников -- Создание интерактивных курсов и материалов -- Адаптивное обучение под индивидуальные потребности -- Оценка знаний и навыков персонала -- Рекомендации по развитию карьеры -- Создание базы знаний и FAQ - -### 6. 📋 Управление проектами и задачами - -**Автоматизация проектной работы:** -- Автоматическое планирование проектов и распределение ресурсов -- Отслеживание прогресса и выявление задержек -- Оптимизация рабочих процессов и устранение узких мест -- Автоматическое создание отчетов по проектам -- Управление рисками и планирование резервов -- Координация работы распределенных команд -- Анализ эффективности методологий управления - -### 7. 🔍 Исследования и разработка - -**Аналитика и исследования:** -- Анализ рынка и конкурентной среды -- Исследование новых технологий и трендов -- Генерация идей для новых продуктов/услуг -- Анализ патентов и интеллектуальной собственности -- Техническая документация и спецификации -- Анализ обратной связи клиентов для улучшения продуктов - -### 8. 🛡️ Безопасность и комплаенс - -**Мониторинг безопасности:** -- Мониторинг безопасности IT-систем -- Выявление подозрительной активности и угроз -- Автоматическое обновление политик безопасности -- Анализ соответствия регулятивным требованиям -- Управление доступом и правами пользователей -- Аудит логов и расследование инцидентов - -### 9. 📈 Операционная эффективность - -**Оптимизация процессов:** -- Оптимизация цепочек поставок и логистики -- Планирование производства и управление запасами -- Автоматизация рутинных процессов -- Анализ качества продукции и услуг -- Управление активами и техническое обслуживание -- Оптимизация энергопотребления и ресурсов - -### 10. 🎓 Обучение и развитие - -**Корпоративное обучение:** -- Персонализированные программы обучения для сотрудников -- Создание интерактивных курсов и материалов -- Адаптивное обучение под индивидуальные потребности -- Оценка знаний и навыков персонала -- Рекомендации по развитию карьеры -- Создание базы знаний и FAQ - -### 11. 🌐 Международная деятельность - -**Глобальные возможности:** -- Автоматический перевод документов и коммуникаций -- Анализ культурных особенностей целевых рынков -- Адаптация контента под локальные требования -- Мониторинг изменений в международном законодательстве -- Управление валютными рисками -- Координация работы с зарубежными партнерами - -### 12. 🔮 Стратегическое планирование - -**Долгосрочное планирование:** -- Анализ макроэкономических трендов и их влияния на бизнес -- Сценарное планирование для различных ситуаций -- Анализ возможностей для слияний и поглощений -- Оценка инвестиционных проектов -- Планирование выхода на новые рынки -- Разработка долгосрочных стратегий развития - -### 13. 📱 Мобильные и цифровые решения - -**Цифровая трансформация:** -- Разработка мобильных приложений с ИИ-функциями -- Создание чат-ботов для различных платформ -- Голосовые ассистенты для бизнес-процессов -- Интеграция с IoT устройствами -- Автоматизация социальных сетей -- Создание виртуальных ассистентов - -### 14. 🏭 Отраслевые решения - -**Специализированные решения:** -- **Здравоохранение**: диагностика, планирование лечения, управление пациентами -- **Финансы**: кредитный скоринг, управление рисками, торговые алгоритмы -- **Ритейл**: персонализация, управление запасами, ценообразование -- **Производство**: контроль качества, предиктивное обслуживание, оптимизация -- **Недвижимость**: оценка, анализ рынка, управление объектами -- **Образование**: адаптивное обучение, оценка знаний, планирование - -### 15. 🔄 Интеграция и автоматизация - -**Системная интеграция:** -- API-интеграции с внешними системами -- Автоматизация рабочих процессов (RPA) -- Синхронизация данных между различными платформами -- Создание единой экосистемы для всех бизнес-процессов -- Миграция данных и систем -- Мониторинг производительности интегрированных решений +| Характеристика | DLE (локальный) | ChatGPT API | Claude API | +|----------------|----------------|-------------|------------| +| **Стоимость** | $0 | ~$0.02/запрос | ~$0.03/запрос | +| **Конфиденциальность** | 100% — данные на вашем сервере | Данные у OpenAI | Данные у Anthropic | +| **Скорость (кэш)** | < 50ms | 500–2000ms | 500–2000ms | +| **Offline-работа** | Да | Нет | Нет | +| **Настройка под бизнес** | Полная: промпты, правила, RAG | Ограниченная | Ограниченная | +| **Лимиты API** | Нет | Есть | Есть | +| **Количество агентов** | Неограничено | Нужен отдельный API-вызов | Нужен отдельный API-вызов | +| **Множественные базы знаний** | Да, изолированные RAG-таблицы | Нет нативной поддержки | Нет нативной поддержки | --- ## Экономический эффект -### Сравнение с облачными решениями +### Экономия на API-запросах -| Характеристика | DLE AI (Локальный) | ChatGPT API | Claude API | -|----------------|-------------------|-------------|------------| -| **Стоимость** | $0 | ~$0.02/запрос | ~$0.03/запрос | -| **Конфиденциальность** | ✅ 100% | ❌ Данные в OpenAI | ❌ Данные в Anthropic | -| **Скорость (кэш)** | 50ms | 500-2000ms | 500-2000ms | -| **Offline работа** | ✅ Да | ❌ Нет | ❌ Нет | -| **Настройка под бизнес** | ✅ Полная | ⚠️ Ограниченная | ⚠️ Ограниченная | -| **Лимиты API** | ❌ Нет | ✅ Есть | ✅ Есть | +| Объём запросов | ChatGPT API | Claude API | DLE | +|---------------|-------------|------------|-----| +| 10,000/мес | $2,400/год | $3,600/год | $0 | +| 50,000/мес | $12,000/год | $18,000/год | $0 | +| 100,000/мес | $24,000/год | $36,000/год | $0 | -### Экономия при использовании облачных API +### Экономия на автоматизации процессов -**При 10,000 запросов в месяц:** -- ChatGPT API: $200/месяц = **$2,400/год** -- Claude API: $300/месяц = **$3,600/год** -- DLE AI: **$0/год** ✅ +Каждый агент заменяет рутинную работу сотрудников. Расчёт для компании среднего размера: -**При 50,000 запросов в месяц:** -- ChatGPT API: $1,000/месяц = **$12,000/год** -- Claude API: $1,500/месяц = **$18,000/год** -- DLE AI: **$0/год** ✅ +| Агент | Что автоматизирует | Экономия в год | +|-------|--------------------|----------------| +| Агент поддержки | Ответы на типовые вопросы 24/7 (вместо 1-2 операторов) | $57,600 | +| AI-закупщик | Поиск и сравнение поставщиков (вместо ручного анализа) | $64,800 | +| HR-ассистент | Скрининг резюме, ответы сотрудникам | $57,600 | +| Контент-редактор | Генерация постов, рассылок, статей | $86,400 | +| Аналитик | Отчётность, анализ данных, мониторинг KPI | $144,000 | +| Агент по работе с партнёрами | Коммуникации, подготовка документов | $43,200 | +| Обучение персонала | Персонализированные программы, тесты знаний | $30,000 | +| Экономия на API | Отсутствие платы за облачные API | $24,000–36,000 | +| **Итого** | | **$507,600–519,600** | -**При 100,000 запросов в месяц:** -- ChatGPT API: $2,000/месяц = **$24,000/год** -- Claude API: $3,000/месяц = **$36,000/год** -- DLE AI: **$0/год** ✅ +**Стоимость DLE**: $1,000 (единоразово) -### Суммарная экономия по всем направлениям +### Сравнение с SaaS за 5 лет -| Направление | Экономия в год | ROI | -|-------------|----------------|-----| -| **Обслуживание клиентов** | $57,600 | 5,760% | -| **Работа с поставщиками + AI закупщик** | $64,800 | 6,480% | -| **Работа с партнерами** | $43,200 | 4,320% | -| **Обучение персонала** | $30,000 | 3,000% | -| **Управление персоналом** | $57,600 | 5,760% | -| **Отчетность и анализ** | $144,000 | 14,400% | -| **Контент-маркетинг** | $86,400 | 8,640% | -| **Экономия на API токенах** | $24,000-36,000 | 2,400-3,600% | -| **ИТОГО:** | **$507,600-519,600** | **50,760-51,960%** | +``` +Типичный SaaS-стек: + CRM (HubSpot): $200/мес × 60 = $12,000 + Чат-бот (Intercom): $150/мес × 60 = $9,000 + Email (SendGrid): $100/мес × 60 = $6,000 + AI (ChatGPT API): $200/мес × 60 = $12,000 + ───────────────────────────────────────────── + Итого SaaS: $39,000 -**Стоимость внедрения DLE**: $1,000 (единоразово, Standard Support) -**ROI**: 50,760-51,960% или **507-519x окупаемость** +DLE: + Лицензия: $1,000 + AI без лимитов: $0 + Обновления 5 лет: $0 + ───────────────────────────────────────────── + Итого DLE: $1,000 -### Дополнительные выгоды - -**Неизмеримые преимущества:** -- 📈 Повышение качества работы -- 😊 Удовлетворенность клиентов +19% -- 👥 Удержание сотрудников +15% -- 🚀 Скорость принятия решений +300% -- 💡 Больше времени на стратегию -- 🎯 Меньше рутины, больше креатива + Экономия за 5 лет: $38,000 +``` --- -## Настройка и интеграция +## Дополнительные материалы -**Что нужно для запуска:** -- ✅ Установить DLE (см. [Инструкцию по установке](./setup-instruction.md)) -- ✅ Запустить Ollama и установить модели -- ✅ Создать базу знаний (FAQ, поставщики, HR) -- ✅ Настроить AI ассистента под ваш бизнес -- ✅ Интегрировать с Telegram/Email (опционально) - -**Время настройки:** -- 🚀 **Быстрый старт**: 20-30 минут (базовый FAQ) -- ⚙️ **Полная настройка**: 1-2 часа (все возможности) - -**Результат:** -- 🤖 Работающий AI ассистент 24/7 -- 📚 База знаний для ответов клиентам -- 🔍 Векторный поиск по вашим данным -- 💰 Экономия до $519,600/год - -### Следующие шаги - -1. 📖 [Установите DLE](./setup-instruction.md) -2. 🤖 [Настройте AI ассистента](./setup-ai-assistant.md) -3. 📚 Загрузите базу знаний -4. 🚀 Начните экономить время и деньги! +- [Архитектура множественных ИИ-агентов](./back-docs/multi-agent-architecture.md) — детальная техническая спецификация +- [Настройка AI-ассистента](./back-docs/setup-ai-assistant.md) — пошаговая инструкция по развёртыванию +- [Система электронных таблиц](./back-docs/tables-system.md) — как устроены RAG-таблицы +- [FAQ](./FAQ.md) — частые вопросы --- ## Поддержка -**Нужна помощь с настройкой AI?** - -📧 **Email**: info@hb3-accelerator.com -💬 **Чат**: https://hb3-accelerator.com -📚 **Документация**: [FAQ](./FAQ.md) -🎓 **Обучение**: Онлайн-сессии для токен-холдеров +- **Email**: info@hb3-accelerator.com +- **Чат**: https://hb3-accelerator.com +- **Документация**: [FAQ](./FAQ.md) --- **© 2024-2025 Тарабанов Александр Викторович. Все права защищены.** -**Последнее обновление**: October 2025 \ No newline at end of file +**Последнее обновление**: Февраль 2026 diff --git a/docs/application-description.md b/docs/application-description.md index d7f74d6..92ba269 100644 --- a/docs/application-description.md +++ b/docs/application-description.md @@ -1,136 +1,82 @@ -# Digital Legal Entity (DLE) - Веб-приложение для управления бизнесом +# Digital Legal Entity (DLE) — описание платформы -> **Полный контроль. Нулевая абонентская плата. AI экономит $507,600-519,600/год.** +## Определение -## 📖 Определение продукта +**Digital Legal Entity (DLE)** — микросервисная платформа с веб-приложением для локальной установки на серверах компании. Включает инструменты настройки ИИ-агентов и систему смарт-контрактов с поддержкой налоговых, бухгалтерских, банковских и иных идентификаторов, установленных регулятором. -**Digital Legal Entity (DLE)** — микросервисная IT-инфраструктура с веб-приложением для локального развёртывания на серверах компании. - -**Включает:** -- Инструменты настройки ИИ-агентов -- Систему смарт-контрактов с поддержкой: - - Реквизитов юридических лиц - - Идентификаторов для финансовых операций, установленных регулятором - -**Преимущества:** -- Управление и автоматизация бизнес-процессов -- Замена разрозненных SaaS-сервисов с ежемесячными подписками -- Соответствие требованиям регуляторов к хранению и обработке данных +Обеспечивает управление и автоматизацию бизнес-процессов, позволяет отказаться от разрозненных SaaS-сервисов с ежемесячными подписками и соответствует требованиям регуляторов к хранению и обработке данных. --- -## 📋 Содержание +## Содержание -1. [Для кого это приложение](#для-кого-это-приложение) -2. [Ключевые преимущества](#ключевые-преимущества) +1. [Для кого](#для-кого) +2. [Почему DLE, а не SaaS](#почему-dle-а-не-saas) 3. [Основные возможности](#основные-возможности) 4. [Экономический эффект](#экономический-эффект) 5. [Технические детали](#технические-детали) 6. [Условия приобретения](#условия-приобретения) -7. [Дополнительная документация](#дополнительная-документация) +7. [Документация](#документация) --- -## 🎯 Для кого это приложение +## Для кого -DLE создано для **всех типов организаций**, нуждающихся в прозрачном коллективном управлении: +DLE создано для организаций, которым нужна собственная ИТ-инфраструктура с прозрачным управлением: -- **Коммерческие организации** (ООО, АО, ИП, холдинги) -- **Некоммерческие организации** (НКО, фонды, ассоциации) -- **Государственные структуры** (муниципалитеты, ведомства) -- **Инвестиционные фонды** и **венчурные компании** -- **Стартапы** и **малый бизнес** -- **Кооперативы** и **объединения** +- Коммерческие организации (ООО, АО, ИП, холдинги) +- Некоммерческие организации (НКО, фонды, ассоциации) +- Государственные структуры (муниципалитеты, ведомства) +- Инвестиционные фонды и венчурные компании +- Стартапы и малый бизнес +- Кооперативы и объединения --- -## 💎 Ключевые преимущества - -### Почему DLE, а не SaaS? +## Почему DLE, а не SaaS | Параметр | DLE | Обычные SaaS | |----------|-----|--------------| -| **💰 Стоимость** | $1,000 один раз | $200-500/месяц | -| **📊 Владение данными** | 100% ваши | У провайдера | -| **🔧 Кастомизация** | Полная | Ограниченная | -| **🌍 Соответствие законам** | Под ваш регион | Зависит от провайдера | -| **🛡️ Соответствие регуляторам** | GDPR, CCPA, 152-ФЗ | Ограниченное | -| **🤖 AI без лимитов** | Бесплатно | $200+/месяц | -| **🔗 Блокчейн** | Встроен | Нет или доп. плата | -| **⚡ Обновления** | Бесплатно 5 лет (для держателей токенов) | Зависит от тарифа | - -### 🎁 Что вы получаете - -✅ **Бессрочная лицензия** - платите один раз, используйте вечно -✅ **Бесплатные обновления** - все улучшения без доп. платы -✅ **Полный исходный код** - полная прозрачность -✅ **AI на своем сервере** - 100% конфиденциальность -✅ **Блокчейн-защита** - активы невозможно украсть -✅ **Токенизация активов** - экономия 99% на сделках -✅ **Право голоса** - влияние на развитие продукта -✅ **Готовый пакет документов для регулятора** - политика конфиденциальности, согласие на обработку ПД, пользовательское соглашение, политика cookies -✅ **Гарантия возврата 70%** - в течение 5 лет при отсутствии обновлений +| Стоимость | $1,000 один раз | $200-500/мес | +| Владение данными | На вашем сервере | У провайдера | +| Кастомизация | Полная (исходный код) | Ограниченная | +| AI | Локальный, без лимитов, $0 | Облачный, платный API | +| Блокчейн | Встроен | Нет | +| Обновления | Бесплатно 5 лет | Зависит от тарифа | +| Соответствие регуляторам | Полное (данные локально) | Зависит от провайдера | --- -## 🚀 Основные возможности +## Основные возможности -### 1. CRM и управление контактами +### 1. ИИ-агенты + +Одна локальная модель Ollama — множество специализированных агентов. Каждый агент заточен под конкретный бизнес-процесс: свой промпт, свои правила, своя база знаний (RAG-таблицы). + +Вы сами создаёте агентов под задачи компании: поддержка клиентов, аналитика, бухгалтерия, HR, маркетинг, закупки и любые другие процессы. Данные не покидают ваш сервер. + +Подробнее: [ИИ-агенты DLE](./ai-assistant.md) + +### 2. CRM и управление контактами -**Полноценная система управления клиентами**: - Централизованная база контактов с историей взаимодействий - Группировка по тегам и категориям - Система задач и напоминаний -- Импорт из CSV, Excel, внешних CRM -- Экспорт в различных форматах +- Импорт/экспорт (CSV, Excel) - Конструктор документов и шаблонов -### 2. AI ассистент с векторным поиском - -**Локальный AI на вашем сервере**: -- Ollama + Vector Search (RAG) -- Модель qwen2.5:7b (или любая другая) -- 100% конфиденциальность (данные не уходят наружу) -- Нулевые затраты на API токены - -**Ключевые возможности**: -- **📞 Обслуживание клиентов** - ответы 24/7, анализ настроения клиентов -- **📊 Аналитика и бизнес-интеллект** - анализ данных, прогнозирование продаж -- **💰 Финансовое планирование** - автоматическая бухгалтерия, анализ рентабельности -- **🎯 Маркетинг и продажи** - генерация контента, персонализация сообщений -- **👥 HR и управление персоналом** - скрининг резюме, планирование обучения -- **📋 Управление проектами** - автоматическое планирование, отслеживание прогресса -- **🔍 Исследования и разработка** - анализ рынка, генерация идей -- **🛡️ Безопасность и комплаенс** - мониторинг безопасности, анализ соответствия -- **📈 Операционная эффективность** - оптимизация процессов, автоматизация -- **🎓 Обучение и развитие** - персонализированные программы обучения -- **🌐 Международная деятельность** - автоматический перевод, адаптация контента -- **🔮 Стратегическое планирование** - анализ трендов, сценарное планирование -- **📱 Мобильные решения** - разработка приложений, создание чат-ботов -- **🏭 Отраслевые решения** - специализированные решения для разных отраслей -- **🔄 Интеграция и автоматизация** - API-интеграции, автоматизация процессов - -**Экономический эффект**: $507,600-519,600/год при ROI 50,760-51,960% - -> 💡 **Подробная информация**: См. [AI Ассистент - полное описание](./ai-assistant.md) - там детально описаны все возможности, кейсы применения, архитектура работы и расчеты экономии. - ### 3. Омниканальные коммуникации -**Единый интерфейс для всех каналов**: -- 💬 Telegram бот, 📧 Email, 🌐 Web чат, 📱 SMS, 📋 Веб-формы -- Один контекст для клиента на всех каналах -- AI автоответы с обучением на ваших данных -- Аналитика по каналам и времени ответа +Единый интерфейс для всех каналов: Telegram-бот, Email, Web-чат, SMS, веб-формы. Один контекст для клиента на всех каналах. AI-автоответы с обучением на ваших данных. ### 4. Блокчейн-управление и токенизация -**Смарт-контракты для бизнеса**: -- Токенизация любых активов (недвижимость, IP, акции) +- Смарт-контракты с поддержкой идентификаторов регулятора +- Токенизация активов (недвижимость, IP, доли) - Управление через голосование токен-холдеров -- Мультичейн поддержка (7+ сетей: Ethereum, Polygon, BSC, Arbitrum, Optimism, Avalanche, Base) -- Прозрачность всех операций на блокчейне +- Мультичейн поддержка (Ethereum, Polygon, BSC, Arbitrum, Optimism, Avalanche, Base) -> 💡 **Подробная информация**: См. [Блокчейн для бизнеса](./blockchain-for-business.md) - практические кейсы использования и [Техническая документация по блокчейну](./blockchain-integration-technical.md) - для разработчиков. +Подробнее: [Блокчейн для бизнеса](./blockchain-for-business.md) ### 5. Группы и пространства для команд @@ -142,206 +88,111 @@ DLE создано для **всех типов организаций**, нуж ### 6. Внутренние инструменты - Электронные таблицы (аналог Excel) -- Система аналитики и отчетов +- Система аналитики и отчётов - Мониторинг метрик - WebSSH для управления серверами -### 7. Безопасность и защита +### 7. Безопасность -**Многоуровневая защита DLE**: -- **Сетевая безопасность** - TLS 1.3, HTTPS, DDoS защита -- **Аутентификация** - SIWE (вход через кошелек), сессии в БД -- **Авторизация** - детальные разрешения (20+ типов), токен-гейтинг -- **Защита данных** - AES-256 шифрование, защита от SQL-инъекций -- **Блокчейн-защита** - токены нельзя украсть без голосования -- **Мониторинг** - логирование, алерты, audit trail +- TLS 1.3, AES-256 шифрование +- SIWE (вход через кошелёк), сессии в БД +- Детальные разрешения (20+ типов), токен-гейтинг +- Соответствие GDPR, CCPA, 152-ФЗ +- Все данные — на вашем сервере -**Соответствие требованиям регуляторов**: -- **GDPR** - соответствие европейским требованиям по защите персональных данных -- **CCPA** - соответствие калифорнийским требованиям -- **Российское законодательство** - соответствие 152-ФЗ "О персональных данных" -- **Локальное хранение** - все данные остаются на вашем сервере -- **Прозрачность** - полный контроль над обработкой персональных данных +Подробнее: [Безопасность DLE](./security.md) -> 💡 **Подробная информация**: См. [Безопасность DLE](./security.md) - там детально описаны все уровни защиты, сценарии атак, рекомендации по безопасности и соответствие регуляторным требованиям. +--- -## 💰 Экономический эффект +## Экономический эффект ### Сравнение с SaaS за 5 лет -**Типичный стек SaaS**: -``` -CRM (HubSpot): $200/мес × 60 мес = $12,000 -Чат-бот (Intercom): $150/мес × 60 мес = $9,000 -Email (SendGrid): $100/мес × 60 мес = $6,000 -AI (ChatGPT API): $200/мес × 60 мес = $12,000 - ───────────────────────────── - ИТОГО: $39,000 -``` +| Расходы | SaaS-стек | DLE | +|---------|-----------|-----| +| CRM | $12,000 | — | +| Чат-бот | $9,000 | — | +| Email-рассылки | $6,000 | — | +| AI (API) | $12,000 | — | +| **Итого** | **$39,000** | **$1,000** | -**DLE**: -``` -Лицензия (один раз): $1,000 -Обновления (5 лет): $0 -AI без лимитов: $0 - ───────────────────────────── - ИТОГО: $1,000 +Экономия: $38,000 за 5 лет. Платите один раз — используете бессрочно. -ЭКОНОМИЯ: $38,000 -``` +### Локальный AI vs облачные API -### ROI от AI ассистента - -**Сравнение с облачными решениями**: - -| Характеристика | DLE AI (Локальный) | ChatGPT API | Claude API | -|----------------|-------------------|-------------|------------| -| **Стоимость** | $0 | ~$0.02/запрос | ~$0.03/запрос | -| **Конфиденциальность** | ✅ 100% | ❌ Данные в OpenAI | ❌ Данные в Anthropic | -| **Скорость (кэш)** | 50ms | 500-2000ms | 500-2000ms | -| **Offline работа** | ✅ Да | ❌ Нет | ❌ Нет | -| **Настройка под бизнес** | ✅ Полная | ⚠️ Ограниченная | ⚠️ Ограниченная | -| **Лимиты API** | ❌ Нет | ✅ Есть | ✅ Есть | - -**Суммарная экономия по всем направлениям**: -- Обслуживание клиентов: $57,600 -- Работа с поставщиками + AI закупщик: $64,800 -- Работа с партнерами: $43,200 -- Обучение персонала: $30,000 -- Управление персоналом: $57,600 -- Отчетность и анализ: $144,000 -- Контент-маркетинг: $86,400 -- Экономия на API токенах: $24,000-36,000 -- **ИТОГО**: $507,600-519,600/год - -**Инвестиция**: $1,000 -**ROI**: 50,760-51,960% или 507-519x окупаемость ✅ - -### Экономия на токенизации активов - -**Традиционная сделка с недвижимостью ($1M)**: -- Комиссия риелтора: 3-5% = $30,000-50,000 -- Юридические услуги: $5,000-10,000 -- Регистрация права: $2,000-5,000 -- Время: 2-6 месяцев -- **Итого**: $37,000-65,000 - -**Токенизированная сделка через DLE**: -- Gas fees: $50-200 -- Смарт-контракт (один раз): $500 -- Время: 5-10 минут -- **Итого**: $550-700 - -**Экономия**: 99% затрат и 99% времени ✅ +| | DLE (локальный) | Облачные API | +|-|-----------------|--------------| +| Стоимость | $0 | ~$0.02-0.03/запрос | +| Конфиденциальность | Данные на вашем сервере | Данные у провайдера | +| Лимиты | Нет | Есть | +| Offline | Да | Нет | +| Настройка под бизнес | Полная (агенты, RAG) | Ограниченная | --- -## 🔧 Технические детали +## Технические детали -### Архитектура +### Стек технологий -**Современный технологический стек**: -- **Frontend**: Vue.js 3 + Vite + Element Plus -- **Backend**: Node.js + Express -- **База данных**: PostgreSQL + pgvector -- **AI**: Ollama (qwen2.5:7b) + FAISS Vector Search -- **Блокчейн**: Ethers.js v6 + Hardhat -- **Контейнеризация**: Docker Compose +| Компонент | Технология | +|-----------|-----------| +| Frontend | Vue.js 3, Vite, Element Plus | +| Backend | Node.js, Express | +| База данных | PostgreSQL, pgvector | +| AI | Ollama (qwen2.5:7b), FAISS Vector Search | +| Блокчейн | Ethers.js v6, Hardhat | +| Контейнеризация | Docker Compose | -### Принципы проектирования +### Минимальные требования -✅ **Микросервисная архитектура** - легко масштабировать -✅ **Полный контроль** - вы владеете приложением и данными -✅ **Модульность** - добавляйте новые функции через модули -✅ **Безопасность** - многоуровневая защита (TLS, AES-256, CSRF) -✅ **API-first** - REST + WebSocket для интеграций +| Параметр | Значение | +|----------|----------| +| CPU | 4 ядра | +| RAM | 12 GB (приложение + AI + Vector Search) | +| Хранилище | 100 GB SSD | +| ОС | Ubuntu 20.04+, Debian 11+, CentOS 8+ (любая Linux с Docker) | -### Развертывание +### Развёртывание -**Гибкие варианты установки**: -- **На своем сервере** - полный контроль -- **В облаке** - AWS, Google Cloud, Azure -- **На локальной инфраструктуре** - соответствие регуляторным требованиям -- **Docker Compose** - развертывание одной командой - -**Минимальные требования**: -- **CPU**: 4 ядра -- **RAM**: 12 GB (4 GB приложение + 6 GB AI + 2 GB Vector Search) -- **Хранилище**: 100 GB SSD -- **ОС**: Ubuntu 20.04+, Debian 11+, CentOS 8+, любая Linux с Docker - -> 💡 **Подробная информация**: См. [Инструкция по установке](./setup-instruction.md) - пошаговая настройка и [Настройка AI ассистента](./setup-ai-assistant.md) - специализированная установка. +Установка одной командой через Docker Compose. Подробнее: [Инструкция по установке](./back-docs/setup-instruction.md) --- -## 💳 Условия приобретения +## Условия приобретения -> 💡 **Подробная информация**: См. [Условия обслуживания](./service-terms.md) - там детально описаны лицензионная модель, тарифы, гарантии и процесс приобретения. +| Пакет | Цена | Токены | Голоса | +|-------|------|--------|--------| +| Standard | $1,000 USDT (единоразово) | 1 | 1 | +| Premium | $10,000 USDT (единоразово) | 10 | 10 | -### Краткий обзор +Бессрочная лицензия, полный исходный код, бесплатные обновления 5 лет, техническая поддержка, токены управления на блокчейне, готовый пакет документов для регулятора. -**Бессрочная лицензия (Perpetual License)**: -- 💰 **Платите один раз** - используйте вечно -- 📄 **Полный исходный код** с документацией -- 🔄 **Бесплатные обновления** 5 лет для держателей лицензионных токенов (см. [legal/service-terms.md](../legal/service-terms.md)) -- 🗳️ **Право голоса** за развитие продукта - -**Тарифы**: -| Пакет | Цена | Голоса | Поддержка | -|-------|------|--------|-----------| -| **Standard Support** | $1,000 USDT | 1 голос | чат 24/7 | -| **Priority Support** | $10,000 USDT | 10 голосов | чат 24/7 | - -**Что включено**: -✅ Бессрочная лицензия на использование -✅ Исходный код с полной документацией -✅ Бесплатные обновления 5 лет для держателей токенов -✅ Техническая поддержка -✅ Токены управления на блокчейне -✅ Готовый пакет документов для регулятора -✅ Гарантия возврата 70% в течение 5 лет - -**Как приобрести**: -1. Свяжитесь с нами: info@hb3-accelerator.com -2. Получите реквизиты для оплаты (USDT) -3. Оплатите лицензию -4. Получите доступ к коду и токены DLE +Подробнее: [Условия приобретения и обслуживания](./service-terms.md) --- -## 📚 Дополнительная документация +## Документация -### 🎯 Быстрый старт -- 📋 **[FAQ](./FAQ.md)** - ответы на 50+ вопросов (11 разделов) -- 🔧 **[Установка](./setup-instruction.md)** - пошаговая настройка за 15 минут -- 🤖 **[Настройка AI](./setup-ai-assistant.md)** - запуск AI ассистента +**Продукт:** +- [ИИ-агенты](./ai-assistant.md) — архитектура, примеры агентов, настройка +- [Блокчейн для бизнеса](./blockchain-for-business.md) — токенизация активов, практические кейсы +- [Безопасность](./security.md) — многоуровневая защита, соответствие регуляторам +- [Условия обслуживания](./service-terms.md) — лицензирование, поддержка, гарантии +- [FAQ](./FAQ.md) — частые вопросы -### 💼 Бизнес и экономика -- 💰 **[Блокчейн для бизнеса](./blockchain-for-business.md)** - токенизация активов, экономия 99% на сделках -- 🤖 **[AI Ассистент](./ai-assistant.md)** - экономия $507,600-519,600/год, философия "AI+Человек" -- 📊 **[Система таблиц](./tables-system.md)** - управление данными и документами +**Техническая:** +- [Установка](./back-docs/setup-instruction.md) — пошаговая настройка +- [Настройка AI](./back-docs/setup-ai-assistant.md) — запуск ИИ-агентов +- [Блокчейн интеграция](./back-docs/blockchain-integration-technical.md) — смарт-контракты, API -### 🔧 Техническая документация -- 🔗 **[Блокчейн интеграция](./blockchain-integration-technical.md)** - смарт-контракты, API, примеры кода -- 🛡️ **[Безопасность](./security.md)** - многоуровневая защита, соответствие GDPR/CCPA/152-ФЗ -- ⚖️ **[Условия обслуживания](./service-terms.md)** - лицензирование, поддержка, гарантии +**Общая:** +- [Главная страница](../README.md) +- [Юридическая документация](../legal/README.md) -### 📖 Общая информация -- 📖 **[Основной README](../README.md)** - полный список всех документов -- ⚖️ **[Юридическая документация](../legal/README.md)** - правовая информация - -### 📞 Поддержка и контакты - -**Основные контакты**: -- 📧 **Email**: info@hb3-accelerator.com -- 🌐 **Сайт**: https://hb3-accelerator.com -- 💬 **Чат поддержки**: https://hb3-accelerator.com/ -- 🐙 **GitHub**: https://github.com/VC-HB3-Accelerator --- +**Контакты:** info@hb3-accelerator.com · https://hb3-accelerator.com · [GitHub](https://github.com/VC-HB3-Accelerator) + **© 2024-2025 Тарабанов Александр Викторович. Все права защищены.** -**Digital Legal Entity (DLE)** - революция в управлении бизнесом через блокчейн и AI. - -**Версия документа**: 2.0.0 -**Последнее обновление**: October 2025 \ No newline at end of file +**Последнее обновление:** 2026-02-19 diff --git a/docs/blockchain-for-business.md b/docs/blockchain-for-business.md index 0cb56be..caf2059 100644 --- a/docs/blockchain-for-business.md +++ b/docs/blockchain-for-business.md @@ -1261,8 +1261,8 @@ Digital Legal Entity на блокчейне решает фундаментал ### Начните сейчас! 1. 📖 **[Изучите FAQ](./FAQ.md)** - ответы на популярные вопросы -2. 🚀 **[Установите DLE](./setup-instruction.md)** - пошаговая инструкция -3. 🔗 **[Настройте блокчейн](./blockchain-integration-technical.md)** - техническая документация +2. 🚀 **[Установите DLE](./back-docs/setup-instruction.md)** - пошаговая инструкция +3. 🔗 **[Настройте блокчейн](./back-docs/blockchain-integration-technical.md)** - техническая документация 4. 💬 **[Получите поддержку](https://hb3-accelerator.com/)** - мы поможем! --- @@ -1271,8 +1271,8 @@ Digital Legal Entity на блокчейне решает фундаментал ### Документация - 📋 [FAQ](./FAQ.md) -- 🔧 [Установка](./setup-instruction.md) -- 🔗 [Техническая документация по блокчейну](./blockchain-integration-technical.md) +- 🔧 [Установка](./back-docs/setup-instruction.md) +- 🔗 [Техническая документация по блокчейну](./back-docs/blockchain-integration-technical.md) - 📝 [Условия обслуживания](./service-terms.md) diff --git a/docs/blockchain-integration-technical.md b/docs/blockchain-integration-technical.md deleted file mode 100644 index fccccb2..0000000 --- a/docs/blockchain-integration-technical.md +++ /dev/null @@ -1,1049 +0,0 @@ -# Блокчейн интеграция Digital Legal Entity (DLE) - -## 📋 Содержание - -1. [Введение](#введение) -2. [Архитектура смарт-контрактов](#архитектура-смарт-контрактов) -3. [Основной контракт DLE](#основной-контракт-dle) -4. [Модульная система](#модульная-система) -5. [Мультичейн архитектура](#мультичейн-архитектура) -6. [Система голосования (Управление)](#система-голосования-управление) -7. [Деплой смарт-контрактов](#деплой-смарт-контрактов) -8. [Аутентификация через кошелек](#аутентификация-через-кошелек) -9. [Интеграция с frontend](#интеграция-с-frontend) -10. [Безопасность](#безопасность) -11. [Практические примеры](#практические-примеры) - ---- - -## Введение - -Digital Legal Entity (DLE) использует блокчейн-технологии для обеспечения **токенизированного управления** (аналогично акционерному обществу на блокчейне) и **прозрачного принятия решений** через смарт-контракты. - -### Зачем блокчейн в DLE? - -1. **🗳️ Управление как в акционерном обществе** - решения принимаются токен-холдерами через голосование на блокчейне -2. **🔒 Прозрачность** - все голосования и операции записаны на блокчейне -3. **🛡️ Защита от цензуры** - смарт-контракт гарантирует права токен-холдеров -4. **📜 Иммутабельность** - история решений неизменна -5. **🌐 Мультичейн поддержка** - работа в нескольких блокчейнах одновременно - -### Модель управления DLE - -DLE использует **гибридную модель управления**: - -| Аспект | Реализация | -|--------|------------| -| **Голосование** | Токен-холдеры (как акционеры) | -| **Кворум** | 51%+ токенов для принятия решений | -| **Распределение активов** | Через голосование (как в АО) | -| **Изменение параметров** | Через голосование токен-холдеров | -| **Код приложения** | Проприетарный (автор) | -| **Обновления** | Автор разрабатывает, токен-холдеры голосуют за приоритеты | - -Это **токенизированное акционерное общество на блокчейне**, где: -- ✅ Управление параметрами - через голосование токен-холдеров (как акционеров) -- ✅ Распределение активов - через голосование (как в АО) -- ⚠️ Разработка кода - централизована (автор) -- ⚠️ Выпуск обновлений - автор (по приоритетам голосования) - -### Поддерживаемые блокчейны - -DLE работает с любыми **EVM-совместимыми** сетями: -- ✅ Ethereum (mainnet & testnets: Sepolia, Holesky) -- ✅ Polygon (mainnet & testnets) -- ✅ Arbitrum (One & Sepolia) -- ✅ Binance Smart Chain (BSC) -- ✅ Base (mainnet & Sepolia) -- ✅ И любые другие EVM-сети - ---- - -## Архитектура смарт-контрактов - -### Обзор системы - -``` -┌─────────────────────────────────────────────────────────────┐ -│ DLE Ecosystem │ -├─────────────────────────────────────────────────────────────┤ -│ │ -│ ┌─────────────────────────────────────────────────────┐ │ -│ │ DLE Core Contract (ERC20Votes) │ │ -│ │ • Токены управления (ERC20) │ │ -│ │ • Голосование (ERC20Votes) │ │ -│ │ • Подписи (ERC20Permit) │ │ -│ │ • Proposals (предложения) │ │ -│ │ • Мультичейн поддержка │ │ -│ └─────────────────────────────────────────────────────┘ │ -│ ↕ │ -│ ┌──────────────────────────────────────────────────────┐ │ -│ │ Модули (Расширения) │ │ -│ ├──────────────────────────────────────────────────────┤ │ -│ │ • HierarchicalVotingModule │ │ -│ │ - Голосование в других DLE │ │ -│ │ - Владение токенами других DLE │ │ -│ │ │ │ -│ │ • TreasuryModule │ │ -│ │ - Управление казной │ │ -│ │ - Хранение токенов │ │ -│ │ │ │ -│ │ • TimelockModule │ │ -│ │ - Отложенное исполнение │ │ -│ │ - Защита от мгновенных изменений │ │ -│ └──────────────────────────────────────────────────────┘ │ -│ ↕ │ -│ ┌──────────────────────────────────────────────────────┐ │ -│ │ DLEReader (Читатель данных) │ │ -│ │ • Batch чтение данных │ │ -│ │ • Оптимизация RPC запросов │ │ -│ └──────────────────────────────────────────────────────┘ │ -└─────────────────────────────────────────────────────────────┘ -``` - -### Стандарты и библиотеки - -DLE использует проверенные стандарты **OpenZeppelin**: - -| Стандарт | Назначение | -|----------|------------| -| **ERC20** | Базовый функционал токена | -| **ERC20Votes** | Голосование с снапшотами | -| **ERC20Permit** | Подписи без gas (meta-transactions) | -| **ReentrancyGuard** | Защита от реентерабельности | -| **ECDSA** | Проверка подписей | - ---- - -## Основной контракт DLE - -### Структура контракта - -Файл: `backend/contracts/DLE.sol` - -```solidity -contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard, IMultichainMetadata { - // Основные данные DLE - struct DLEInfo { - string name; // Название организации - string symbol; // Символ токена - string location; // Местоположение - string coordinates; // Координаты GPS - uint256 jurisdiction; // Юрисдикция - string[] okvedCodes; // Коды ОКВЭД - uint256 kpp; // КПП (для РФ) - uint256 creationTimestamp; - bool isActive; - } - - // Предложение для голосования - struct Proposal { - uint256 id; - string description; - uint256 forVotes; // Голоса "За" - uint256 againstVotes; // Голоса "Против" - bool executed; - bool canceled; - uint256 deadline; - address initiator; - bytes operation; // Операция для исполнения - uint256 governanceChainId; // Сеть голосования - uint256[] targetChains; // Целевые сети для исполнения - uint256 snapshotTimepoint; - mapping(address => bool) hasVoted; - } -} -``` - -### Ключевые возможности - -#### 1. Токены управления (ERC20) - -DLE токены представляют **право голоса** в управлении: -- 1 токен = 1 голос -- Токены **НЕ передаются** обычными методами (только через governance) -- Подписи EIP-712 для meta-transactions - -```solidity -// Переводы токенов ЗАБЛОКИРОВАНЫ -function transfer(address, uint256) public pure override returns (bool) { - revert ErrTransfersDisabled(); -} - -// Одобрения ЗАБЛОКИРОВАНЫ -function approve(address, uint256) public pure override returns (bool) { - revert ErrApprovalsDisabled(); -} -``` - -#### 2. Голосование (ERC20Votes) - -Использует **снапшоты** голосов: -- Защита от flash-loans -- Голоса берутся из прошлого блока -- Делегирование (опционально) - -```solidity -function getPastVotes(address account, uint256 timepoint) public view returns (uint256) -``` - -#### 3. Мультичейн поддержка - -DLE может быть развернут в **нескольких сетях одновременно**: -- Один адрес во всех сетях (детерминированный деплой) -- Голосование в одной сети (governance chain) -- Исполнение в любых целевых сетях - -```solidity -// Поддерживаемые сети -mapping(uint256 => bool) public supportedChains; -uint256[] public supportedChainIds; - -// Добавление сети (только через голосование) -function _addSupportedChain(uint256 _chainId) internal { - require(!supportedChains[_chainId], "Chain already supported"); - supportedChains[_chainId] = true; - supportedChainIds.push(_chainId); - emit ChainAdded(_chainId); -} -``` - -#### 4. Модульная архитектура - -DLE поддерживает **расширения через модули**: - -```solidity -// Модули -mapping(bytes32 => address) public modules; -mapping(bytes32 => bool) public activeModules; - -// Добавление модуля (только через голосование) -function _addModule(bytes32 _moduleId, address _moduleAddress) internal { - if (_moduleAddress == address(0)) revert ErrZeroAddress(); - if (activeModules[_moduleId]) revert ErrProposalExecuted(); - - modules[_moduleId] = _moduleAddress; - activeModules[_moduleId] = true; - - emit ModuleAdded(_moduleId, _moduleAddress); -} -``` - -### Операции доступные через голосование - -| Операция | Описание | -|----------|----------| -| `_addModule` | Добавить новый модуль | -| `_removeModule` | Удалить модуль | -| `_addSupportedChain` | Добавить блокчейн | -| `_removeSupportedChain` | Удалить блокчейн | -| `_transferTokens` | Перевести токены | -| `_updateDLEInfo` | Обновить информацию DLE | -| `_updateQuorumPercentage` | Изменить кворум | -| `_updateVotingDurations` | Изменить длительность голосования | - ---- - -## Модульная система - -### 1. HierarchicalVotingModule - -**Назначение**: Иерархическое голосование - DLE может голосовать в других DLE. - -**Файл**: `backend/contracts/HierarchicalVotingModule.sol` - -**Возможности**: -- ✅ DLE может владеть токенами других DLE -- ✅ Голосовать в других DLE от своего имени -- ✅ Создавать предложения в других DLE -- ✅ Отслеживать цепочку голосований - -```solidity -struct ExternalDLEInfo { - address dleAddress; - string name; - string symbol; - uint256 tokenBalance; // Баланс токенов этого DLE - bool isActive; - uint256 addedAt; -} - -// Добавить внешний DLE -function addExternalDLE( - address dleAddress, - string memory name, - string memory symbol -) external onlyDLE; - -// Создать предложение в внешнем DLE -function createProposalInExternalDLE( - address externalDLE, - string calldata description, - uint256 duration, - bytes calldata operation, - uint256 chainId -) external onlyDLE returns (uint256); -``` - -**Пример использования**: -```javascript -// DLE-A владеет токенами DLE-B -// DLE-A может голосовать в DLE-B автоматически -const hierarchicalModule = await ethers.getContractAt('HierarchicalVotingModule', moduleAddress); -await hierarchicalModule.voteInExternalDLE(dleBAddress, proposalId, true); -``` - -### 2. TreasuryModule - -**Назначение**: Управление казной (treasury) и активами DLE. - -**Файл**: `backend/contracts/TreasuryModule.sol` - -**Возможности**: -- ✅ Хранение токенов и активов -- ✅ Управление через голосование токен-холдеров -- ✅ Отправка платежей -- ✅ Аккумуляция доходов - -```solidity -// Перевести токены из казны (только через голосование в DLE) -function transferTokens( - address token, - address recipient, - uint256 amount -) external onlyDLE; - -// Получить баланс токена в казне -function getTokenBalance(address token) external view returns (uint256); -``` - -**Пример использования**: -```javascript -// Создать предложение на выплату из казны -const operation = treasuryModule.interface.encodeFunctionData('transferTokens', [ - tokenAddress, - recipientAddress, - ethers.parseEther('100') -]); - -await dleContract.createProposal( - 'Выплата 100 токенов для маркетинга', - 86400, // 24 часа - operation, - chainId, - [chainId] -); -``` - -### 3. TimelockModule - -**Назначение**: Отложенное исполнение операций для безопасности. - -**Файл**: `backend/contracts/TimelockModule.sol` - -**Возможности**: -- ✅ Задержка перед исполнением (timelock) -- ✅ Возможность отмены до исполнения -- ✅ Защита от мгновенных изменений - -```solidity -struct TimelockProposal { - uint256 proposalId; - uint256 executionTime; // Время когда можно исполнить - bytes32 operationHash; - bool executed; - bool canceled; -} - -// Создать timelock предложение -function scheduleProposal( - uint256 proposalId, - bytes calldata operation, - uint256 delay -) external onlyDLE returns (bytes32); - -// Исполнить по истечении таймлока -function executeTimelockProposal(bytes32 operationHash) external; -``` - -### 4. DLEReader - -**Назначение**: Оптимизированное чтение данных из контрактов. - -**Файл**: `backend/contracts/DLEReader.sol` - -**Возможности**: -- ✅ Batch чтение нескольких данных за один RPC запрос -- ✅ Получение детальной информации о DLE -- ✅ Список всех предложений с деталями -- ✅ Оптимизация gas для чтения - -```solidity -// Получить полную информацию о DLE за один запрос -function getDLEFullInfo(address dleAddress) external view returns ( - string memory name, - string memory symbol, - uint256 totalSupply, - DLEInfo memory info, - uint256 proposalCount, - // ... и другие данные -); - -// Получить все предложения (batch read) -function getAllProposals(address dleAddress) external view returns (ProposalInfo[] memory); -``` - ---- - -## Мультичейн архитектура - -### Концепция - -DLE поддерживает **детерминированный деплой** - один адрес во всех сетях: - -``` -Ethereum: 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C -Polygon: 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C ← Тот же адрес! -Arbitrum: 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C -BSC: 0x742d35Cc6634C0532925a3b844Bc9377F91cAB6C -``` - -### Как это работает? - -1. **Генерация init code** - одинаковый bytecode для всех сетей -2. **Фиксированный nonce** - деплой с одного и того же nonce -3. **CREATE opcode** - адрес = keccak256(deployerAddress, nonce) -4. **Результат** - одинаковый адрес во всех сетях - -### Голосование в одной сети - -**Голосование** происходит в **одной сети** (сеть голосования), а **исполнение** - в любых целевых сетях: - -``` -┌─────────────────────────────────────────────────────────┐ -│ Ethereum (Сеть голосования) │ -│ 1. Создание предложения │ -│ 2. Голосование │ -│ 3. Подсчет голосов │ -│ 4. Генерация подписи для исполнения │ -└─────────────────────────────────────────────────────────┘ - ↓ - ┌───────────────┴───────────────┐ - ↓ ↓ -┌───────────────────┐ ┌───────────────────┐ -│ Polygon │ │ Arbitrum │ -│ (Target Chain) │ │ (Target Chain) │ -│ 5. Исполнение │ │ 5. Исполнение │ -│ с подписью │ │ с подписью │ -└───────────────────┘ └───────────────────┘ -``` - -### Мультичейн исполнение - -Исполнение через **подписи** (off-chain coordination): - -```solidity -function executeWithSignatures( - uint256 proposalId, - bytes32 operationHash, - address[] calldata signers, - bytes[] calldata signatures -) external nonReentrant; -``` - -**Процесс**: -1. Предложение одобрено в сети голосования -2. Генерируются подписи токен-холдеров -3. Подписи передаются в целевые сети -4. Контракт проверяет подписи и исполняет операцию - ---- - -## Система голосования (Управление) - -### Создание предложения - -```solidity -function createProposal( - string calldata _description, - uint256 _duration, - bytes calldata _operation, - uint256 _chainId, - uint256[] calldata _targetChains, - address _initiator -) external returns (uint256); -``` - -**Параметры**: -- `_description` - описание предложения -- `_duration` - длительность голосования (в секундах) -- `_operation` - операция для исполнения (encoded function call) -- `_chainId` - ID сети для голосования -- `_targetChains` - целевые сети для исполнения -- `_initiator` - адрес инициатора - -**Пример** (backend): -```javascript -const { ethers } = require('ethers'); - -// Операция: добавить модуль -const operation = dleContract.interface.encodeFunctionData('_addModule', [ - ethers.id('TIMELOCK_MODULE'), // moduleId - timelockModuleAddress -]); - -// Создать предложение -const tx = await dleContract.createProposal( - 'Добавить Timelock Module для защиты', - 86400 * 3, // 3 дня - operation, - 1, // Ethereum mainnet - [1, 137, 42161], // Ethereum, Polygon, Arbitrum - walletAddress -); - -const receipt = await tx.wait(); -const proposalId = receipt.events[0].args.proposalId; -``` - -### Голосование - -```solidity -function vote(uint256 _proposalId, bool _support) external; -``` - -**Параметры**: -- `_proposalId` - ID предложения -- `_support` - true = "За", false = "Против" - -**Пример** (frontend): -```javascript -// Подключение к контракту -const dleContract = new ethers.Contract(dleAddress, dleAbi, signer); - -// Голосование "За" -await dleContract.vote(proposalId, true); - -// Голосование "Против" -await dleContract.vote(proposalId, false); -``` - -### Исполнение предложения - -```solidity -function execute(uint256 _proposalId) external nonReentrant; -``` - -**Условия исполнения**: -1. ✅ Голосование завершено (прошел deadline) -2. ✅ Кворум достигнут (например, 10% токенов проголосовало) -3. ✅ Больше голосов "За", чем "Против" -4. ✅ Предложение еще не исполнено - -**Пример**: -```javascript -// Проверить, можно ли исполнить -const proposal = await dleContract.proposals(proposalId); -const canExecute = ( - proposal.deadline < Date.now() / 1000 && - !proposal.executed && - proposal.forVotes > proposal.againstVotes -); - -if (canExecute) { - await dleContract.execute(proposalId); -} -``` - -### Кворум - -Кворум определяет **минимальное количество голосов** для принятия решения: - -```solidity -uint256 public quorumPercentage; // Процент от totalSupply (например, 10%) - -function _hasQuorum(uint256 _forVotes, uint256 _againstVotes) internal view returns (bool) { - uint256 totalVotes = _forVotes + _againstVotes; - uint256 requiredVotes = (totalSupply() * quorumPercentage) / 100; - return totalVotes >= requiredVotes; -} -``` - -**Изменение кворума** (только через голосование): -```javascript -const operation = dleContract.interface.encodeFunctionData('_updateQuorumPercentage', [ - 15 // Новый кворум 15% -]); - -await dleContract.createProposal( - 'Увеличить кворум до 15%', - 86400 * 7, - operation, - chainId, - [chainId] -); -``` - ---- - -## Деплой смарт-контрактов - -### Мультичейн деплой - -**Скрипт**: `backend/scripts/deploy/deploy-multichain.js` - -**Возможности**: -- ✅ Деплой в несколько сетей одновременно (parallel) -- ✅ Детерминированный адрес (один адрес во всех сетях) -- ✅ Автоматическая верификация контрактов -- ✅ Retry логика при ошибках -- ✅ Nonce management для синхронизации - -**Запуск**: -```bash -cd backend -yarn deploy:multichain -``` - -**Конфигурация** (база данных): -Параметры деплоя хранятся в таблице `settings`: -- `supported_chain_ids` - список ID сетей для деплоя -- `rpc_providers` - RPC URLs для каждой сети -- `dle_config` - конфигурация DLE (название, символ, партнеры и т.д.) - -**Пример конфигурации**: -```json -{ - "name": "My Company DLE", - "symbol": "MYCO", - "location": "Moscow, Russia", - "coordinates": "55.7558,37.6173", - "jurisdiction": 643, - "okvedCodes": ["62.01", "62.02"], - "kpp": 770401001, - "quorumPercentage": 10, - "initialPartners": ["0x742d35..."], - "initialAmounts": [1000000], - "supportedChainIds": [1, 137, 42161] -} -``` - -### Деплой модулей - -**Скрипт**: `backend/scripts/deploy/deploy-modules.js` - -**Запуск**: -```bash -cd backend -yarn deploy:modules -``` - -**Процесс**: -1. Загрузка адреса DLE из базы -2. Параллельный деплой всех модулей во всех сетях -3. CREATE2 деплой для детерминированных адресов -4. Автоматическая верификация -5. Сохранение адресов модулей в базу данных - -### Верификация контрактов - -**Автоматическая верификация** через Etherscan API: - -```javascript -async function verifyDLEAfterDeploy(chainId, contractAddress, constructorArgs, apiKey, params) { - await hre.run("verify:verify", { - address: contractAddress, - constructorArguments: constructorArgs, - contract: "contracts/DLE.sol:DLE" - }); -} -``` - -**Поддерживаемые сканеры**: -- Etherscan (Ethereum, Sepolia, Holesky) -- Polygonscan -- Arbiscan -- BSCScan -- Basescan - ---- - -## Аутентификация через кошелек - -### SIWE (Sign-In with Ethereum) - -DLE использует стандарт **SIWE** для аутентификации: - -**Файл**: `backend/routes/auth.js` - -**Процесс аутентификации**: - -``` -┌──────────────┐ ┌──────────────┐ -│ Frontend │ │ Backend │ -└──────┬───────┘ └──────┬───────┘ - │ │ - │ 1. Запрос nonce │ - ├──────────────────────────────────>│ - │ │ - │ 2. Возврат nonce │ - │<──────────────────────────────────┤ - │ │ - │ 3. Подпись сообщения в кошельке │ - │ (приватный ключ НЕ передается!) │ - │ │ - │ 4. Отправка подписи │ - ├──────────────────────────────────>│ - │ │ - │ 5. Проверка подписи - │ 6. Проверка токенов - │ 7. Создание сессии - │ │ - │ 8. Успешная аутентификация │ - │<──────────────────────────────────┤ - │ │ -``` - -### Запрос nonce - -```javascript -// POST /api/auth/nonce -app.post('/api/auth/nonce', async (req, res) => { - const { address } = req.body; - - // Генерируем случайный nonce - const nonce = crypto.randomBytes(32).toString('hex'); - - // Сохраняем в БД с шифрованием - await db.query( - 'INSERT INTO nonces (identity_value_encrypted, nonce_encrypted, expires_at) VALUES ($1, $2, $3)', - [encrypt(address.toLowerCase()), encrypt(nonce), expiresAt] - ); - - res.json({ nonce }); -}); -``` - -### Верификация подписи - -```javascript -// POST /api/auth/verify -app.post('/api/auth/verify', async (req, res) => { - const { address, signature, nonce } = req.body; - - // Формируем SIWE сообщение - const message = new SiweMessage({ - domain: req.get('host'), - address: ethers.getAddress(address), - statement: 'Sign in with Ethereum to the app.', - uri: req.get('origin'), - version: '1', - chainId: 1, - nonce: nonce - }); - - // Проверяем подпись - const isValid = await verifySignature( - message.prepareMessage(), - signature, - address - ); - - if (!isValid) { - return res.status(401).json({ error: 'Invalid signature' }); - } - - // Проверяем токены в смарт-контракте - const userAccessLevel = await getUserAccessLevel(address); - - // Создаем сессию - req.session.userId = userId; - req.session.address = address; - req.session.authenticated = true; - req.session.userAccessLevel = userAccessLevel; - - res.json({ success: true, userAccessLevel }); -}); -``` - -### Проверка уровня доступа - -```javascript -async function getUserAccessLevel(address) { - // Получаем адрес DLE контракта из настроек - const dleAddress = await getSettingValue('contract_address'); - if (!dleAddress) { - return { level: 'user', tokenCount: 0, hasAccess: false }; - } - - // Подключаемся к контракту - const dleContract = new ethers.Contract(dleAddress, dleAbi, provider); - - // Получаем баланс токенов - const tokenCount = await dleContract.balanceOf(address); - - // Пороги доступа из настроек - const editorThreshold = await getSettingValue('editor_token_threshold') || 100; - const readonlyThreshold = await getSettingValue('readonly_token_threshold') || 1; - - // Определяем уровень доступа - if (tokenCount >= editorThreshold) { - return { level: 'editor', tokenCount, hasAccess: true }; - } else if (tokenCount >= readonlyThreshold) { - return { level: 'readonly', tokenCount, hasAccess: true }; - } else { - return { level: 'user', tokenCount: 0, hasAccess: false }; - } -} -``` - ---- - -## Интеграция с frontend - -### Подключение кошелька - -**Файл**: `frontend/src/services/web3Service.js` - -```javascript -import { ethers } from 'ethers'; - -export async function connectWallet() { - if (!window.ethereum) { - throw new Error('MetaMask не установлен'); - } - - // Запрашиваем доступ к кошельку - await window.ethereum.request({ method: 'eth_requestAccounts' }); - - // Создаем provider - const provider = new ethers.BrowserProvider(window.ethereum); - const signer = await provider.getSigner(); - const address = await signer.getAddress(); - - return { provider, signer, address }; -} -``` - -### Подпись сообщения - -```javascript -export async function signMessage(signer, message) { - try { - const signature = await signer.signMessage(message); - return signature; - } catch (error) { - throw new Error('Пользователь отклонил подпись'); - } -} -``` - -### Аутентификация - -```javascript -import axios from 'axios'; - -export async function authenticateWithWallet(address, signer) { - // 1. Получаем nonce - const { data } = await axios.post('/api/auth/nonce', { address }); - const { nonce } = data; - - // 2. Формируем сообщение SIWE - const message = `Sign in with Ethereum to the app.\n\nNonce: ${nonce}`; - - // 3. Подписываем - const signature = await signMessage(signer, message); - - // 4. Отправляем на верификацию - const response = await axios.post('/api/auth/verify', { - address, - signature, - nonce, - issuedAt: new Date().toISOString() - }); - - return response.data; -} -``` - -### Взаимодействие с контрактом - -```javascript -import { ethers } from 'ethers'; -import dleAbi from '@/contracts/DLE.json'; - -export async function getDLEContract(address, signerOrProvider) { - return new ethers.Contract(address, dleAbi.abi, signerOrProvider); -} - -// Создать предложение -export async function createProposal(contract, description, duration, operation, chainId) { - const tx = await contract.createProposal( - description, - duration, - operation, - chainId, - [chainId] - ); - - const receipt = await tx.wait(); - return receipt; -} - -// Голосовать -export async function voteOnProposal(contract, proposalId, support) { - const tx = await contract.vote(proposalId, support); - await tx.wait(); -} - -// Получить информацию о предложении -export async function getProposal(contract, proposalId) { - const proposal = await contract.proposals(proposalId); - return { - id: proposal.id.toString(), - description: proposal.description, - forVotes: ethers.formatEther(proposal.forVotes), - againstVotes: ethers.formatEther(proposal.againstVotes), - executed: proposal.executed, - deadline: new Date(proposal.deadline * 1000) - }; -} -``` - -### Vue компонент для голосования - -```vue - - - {{ proposal.description }} - - За: {{ proposal.forVotes }} - Против: {{ proposal.againstVotes }} - - - Голосовать "За" - Голосовать "Против" - - - - - - - -``` - ---- - -## Безопасность - -> 💡 **Подробная информация**: См. [Безопасность DLE](./security.md) - там детально описаны все уровни защиты, сценарии атак и рекомендации по безопасности. - -### Краткий обзор технических аспектов - -**Ключевые принципы безопасности смарт-контрактов:** -- 🔒 **ReentrancyGuard** - защита от реентерабельности -- 🚫 **Блокировка переводов** - токены передаются только через governance -- 📸 **Снапшоты голосов** - защита от flash-loan атак -- ✍️ **EIP-712 подписи** - поддержка контрактных кошельков -- ✅ **Валидация параметров** - проверка всех входных данных -- 💰 **Custom errors** - экономия gas при ошибках - -**Примеры реализации:** - -```solidity -// Защита от реентерабельности -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; - -contract DLE is ReentrancyGuard { - function execute(uint256 _proposalId) external nonReentrant { - // Операция защищена от реентерабельности - } -} - -// Блокировка переводов токенов -function transfer(address, uint256) public pure override returns (bool) { - revert ErrTransfersDisabled(); -} - -// Снапшоты голосов -uint256 public snapshotTimepoint = block.number - 1; - -function vote(uint256 _proposalId, bool _support) external { - uint256 votingPower = getPastVotes(msg.sender, snapshotTimepoint); - require(votingPower > 0, "No voting power"); -} -``` - ---- - -## Практические примеры - -> 💡 **Подробные примеры и кейсы**: См. [Блокчейн для бизнеса](./blockchain-for-business.md) - там детально описаны реальные бизнес-кейсы, экономические расчеты и практические примеры использования DLE. - -### Краткий обзор технических примеров - -**Основные сценарии использования:** - -1. **Мультичейн деплой** - развертывание DLE в нескольких сетях одновременно -2. **Добавление модулей** - расширение функциональности через голосование -3. **Иерархическое голосование** - DLE может голосовать в других DLE -4. **Управление казной** - распределение средств через голосование токен-холдеров ---- - -## Заключение - -Блокчейн-интеграция в DLE обеспечивает: -- ✅ **Управление как в акционерном обществе** - токен-холдеры голосуют за решения -- ✅ **Прозрачность** всех решений на блокчейне -- ✅ **Мультичейн поддержка** для работы в нескольких сетях -- ✅ **Модульная архитектура** для расширения функциональности -- ✅ **Безопасность** через проверенные стандарты OpenZeppelin - -### Дополнительные ресурсы - -- 📖 [Основной README](../README.md) -- 📋 [FAQ](./FAQ.md) -- 🔧 [Инструкция по установке](./setup-instruction.md) -- 📝 [Условия обслуживания](./service-terms.md) -- ⚖️ [Юридическая документация](../legal/README.md) - -### Контакты и поддержка - -- 🌐 **Портал**: https://hb3-accelerator.com/ -- 📧 **Email**: info@hb3-accelerator.com -- 🐙 **GitHub**: https://github.com/VC-HB3-Accelerator - ---- - -**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.** - -**Последнее обновление**: October 2025 - diff --git a/docs/commercial-proposal-entrepreneurs.md b/docs/commercial-proposal-entrepreneurs.md deleted file mode 100644 index e1ed45b..0000000 --- a/docs/commercial-proposal-entrepreneurs.md +++ /dev/null @@ -1,243 +0,0 @@ -# Коммерческое предложение для предпринимателей - -## Готовый софт для управления бизнесом с бесплатной настройкой - -**Дата:** 2025-01-27 -**Целевая аудитория:** Предприниматели из СНГ -**Тип:** Первичное коммерческое предложение - -## 📨 ТЕЛО ПИСЬМА - -**Тема:** Готовый софт для управления бизнесом с ИИ-ассистентом и бесплатной настройкой - -Здравствуйте, [Имя]! - -Предлагаем софт для бизнеса, включающий технологии **искусственного интеллекта** и **блокчейна**. - -**🤖 Искусственный интеллект** работает локально на вашем сервере — анализирует данные, прогнозирует спрос и принимает операционные решения. Без оплаты за API-токены, без утечки данных. - -**⛓️ Блокчейн и токенизация активов** обеспечивают: -- **Прозрачный учёт** — каждый товар на складе получает токен, все продажи и перемещения фиксируются в неизменяемом реестре, исключая расхождения в учете и манипуляции -- **Безопасность** — криптографическая защита данных об активах, исключение подделок товаров и несанкционированного доступа к учетным записям -- **Мгновенные платежи** — прямые переводы между участниками без посредников, банков и задержек - -**Результат:** клиенты сокращают операционные издержки на 30%+ и экономят время на спорах из‑за документов или задержек оплаты. - ---- - -## 💼 ЧТО ВЫ ПОЛУЧАЕТЕ - -**Digital Legal Entity (DLE)** — микросервисная IT-инфраструктура с веб-приложением для локального развёртывания на серверах компании. Включает инструменты настройки ИИ-агентов и систему смарт-контрактов с поддержкой реквизитов юридических лиц и идентификаторов для финансовых операций, установленных регулятором. Обеспечивает управление и автоматизацию бизнес-процессов, позволяет отказаться от разрозненных SaaS-сервисов с ежемесячными подписками и соответствует требованиям регуляторов к хранению и обработке данных. - -**Готовое веб-приложение для управления бизнесом** — проверенное решение, которое мы используем для управления собственным бизнесом. После покупки вы получите его для настройки под вашу деятельность. - -**Основные возможности:** - -✅ **ИИ-ассистент** — анализ данных, прогнозирование спроса, принятие операционных решений, автоматизация рутины (клиентский сервис 24/7, аналитика, маркетинг, HR) -✅ **Блокчейн и токенизация активов** — каждый товар получает токен для учета на складах и при продажах, неизменяемый реестр операций, криптографическая защита, мгновенные платежи -✅ **CRM и управление контактами** — централизованная база клиентов -✅ **Омниканальные коммуникации** — Telegram, Email, Web чат в едином интерфейсе -✅ **Токенизация для внутреннего учета** — учет продукции, логистика, безопасность (легально) -✅ **Электронные таблицы** — аналог Excel с интеграцией - -**ИИ-ассистент работает локально на вашем сервере** — данные не уходят наружу, бесплатно (нет оплаты за API токены). - ---- - -## 📊 СРАВНЕНИЕ С АНАЛОГАМИ - -Чтобы вы могли принять взвешенное решение, сравните наше предложение с популярными решениями на рынке: - -| Критерий | **DLE (наше решение)** | Битрикс24 | AmoCRM | Мегаплан | Salesforce | SAP/Oracle | -|----------|------------------------|-----------|--------|----------|------------|------------| -| **Цена (разовая)** | $1,000 - $10,000 один раз, бессрочно | ❌ Только подписка | ❌ Только подписка | ❌ Только подписка | ❌ Только подписка | $50,000+ разово + подписка | -| **Подписка (в месяц)** | ✅ Не требуется | $29-299/мес | $15-200/мес | $15-150/мес | $25-300/мес | $100-500+/мес | -| **ИИ-ассистент встроенный** | ✅ Да, локально, бесплатно | ⚠️ Ограниченный, платный | ⚠️ Ограниченный, платный | ❌ Нет | ⚠️ Einstein AI, дорого | ⚠️ Дополнительно, очень дорого | -| **Блокчейн и токенизация** | ✅ Да, для внутреннего учета | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | -| **On-premises (ваш сервер)** | ✅ Да, полный контроль данных | ❌ Только облако | ❌ Только облако | ❌ Только облако | ❌ Только облако | ⚠️ Возможно, очень дорого | -| **Бесплатная настройка** | ✅ 5 лет подрядчиками | ❌ От $500-5,000 | ❌ От $300-3,000 | ❌ От $400-4,000 | ❌ От $5,000+ | ❌ От $50,000+ | -| **Открытый исходный код** | ✅ Да, GitHub | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | -| **Бессрочная лицензия** | ✅ Да | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | ⚠️ Дорого | -| **Обновления** | ✅ 5 лет включено | ✅ В подписке | ✅ В подписке | ✅ В подписке | ✅ В подписке | ⚠️ Дополнительно | -| **Поддержка** | ✅ SLA 4-48 часов, 5 лет | ⚠️ По тарифу | ⚠️ По тарифу | ⚠️ По тарифу | ⚠️ По тарифу | ⚠️ Дорого | -| **Омниканальные коммуникации** | ✅ Telegram, Email, Web | ⚠️ Ограниченно | ⚠️ Ограниченно | ⚠️ Ограниченно | ✅ Да | ⚠️ Дополнительно | -| **Электронные таблицы** | ✅ Встроенные | ❌ Нет | ❌ Нет | ❌ Нет | ⚠️ Дополнительно | ⚠️ Дополнительно | -| **Обучение** | ✅ Групповое + индивидуальное | ⚠️ Платно | ⚠️ Платно | ⚠️ Платно | ⚠️ Очень дорого | ⚠️ Очень дорого | -| **Экосистема и инвестиции** | ✅ Акселератор, доступ к фонду | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет | -| **Стоимость за 5 лет** | **$1,000-10,000** | $1,740-17,940 | $900-12,000 | $900-9,000 | $1,500-18,000 | $56,000+ | - -**💡 Ключевые выводы:** - -- **DLE дешевле в долгосрочной перспективе** — даже самый дорогой тариф ($10,000) дешевле 5 лет подписки у конкурентов -- **Единственное решение с блокчейном и токенизацией** для внутреннего учета -- **Единственное решение с бесплатной настройкой 5 лет** — у конкурентов настройка стоит от $300 до $50,000+ -- **Полный контроль данных** через on-premises развертывание -- **Открытый код** — можете проверить безопасность и функциональность -- **Бессрочная лицензия** — платите один раз, используете навсегда - -*Примечание: Цены конкурентов указаны ориентировочно на 2025 год и могут варьироваться в зависимости от региона и количества пользователей.* - ---- - -## 🎁 КЛЮЧЕВОЕ ПРЕИМУЩЕСТВО - -**Бесплатная настройка подрядчиками в течение 5 лет** - -После покупки подрядчики (наймные специалисты) помогут настроить приложение под вашу деятельность **БЕСПЛАТНО**. Работу подрядчиков оплачивает автор из прибыли от продаж лицензий (15% издержек) — вы не платите за настройку, это входит в лицензию. - -**Что включает настройка:** -- Персонализированная настройка под ваш вид деятельности -- Интеграция с вашими бизнес-процессами -- Настройка ИИ-ассистента под вашу специфику для анализа ваших данных и прогнозирования спроса -- Настройка блокчейн-учета под ваши цепочки поставок -- Доработка функционала при необходимости - ---- - -## 💰 ЦЕНА И УСЛОВИЯ - -**Тарифы:** -- **Standard:** $1,000 USDT — один раз, бессрочно -- **Premium:** $10,000 USDT — один раз, бессрочно - -**Что входит:** -- Софт навсегда (бессрочная лицензия) -- Бесплатная настройка подрядчиками 5 лет -- Обновления 5 лет -- Поддержка (SLA 4-48 часов) -- Онлайн-сессии обучения (групповые + индивидуальные) - -**Разница между тарифами:** Только количество голосов в развитии продукта. Условия использования одинаковые. - -**📋 Полные условия приобретения и обслуживания:** -https://github.com/VC-HB3-Accelerator/DLE/blob/main/docs/service-terms.md - -Изучите детальные условия лицензии, обновлений, поддержки, голосования за развитие продукта и условий возврата средств. - ---- - -## 🔗 ИЗУЧИТЕ ПОДРОБНЕЕ - -**Репозиторий приложения DLE:** -https://github.com/VC-HB3-Accelerator/DLE - -Исходный код открыт — изучите функциональность, техническую реализацию, документацию по установке и использованию. - -**Условия приобретения и обслуживания:** -https://github.com/VC-HB3-Accelerator/DLE/blob/main/docs/service-terms.md - -Полные условия лицензии, обновлений, поддержки, голосования за развитие продукта, условий возврата средств и ограничений ответственности. - -**Информация о фонде VC HB3 Accelerator:** -https://github.com/VC-HB3-Accelerator - -Перспективы развития экосистемы, бизнес-модель, планы на 5 лет, инвестиционные возможности. Подробнее о работе с регуляторами — см. раздел "ПЕРСПЕКТИВЫ И ЭКОСИСТЕМА" ниже. - -**Демо-версия в действии:** -эрайти.рф — проверенное решение, которое мы используем для управления собственным бизнесом. - ---- - -## ⚖️ ЛЕГАЛЬНОСТЬ ИСПОЛЬЗОВАНИЯ - -**Важное уточнение о регуляторных ограничениях:** - -Регуляторы **запрещают:** -- ТОРГОВЫЕ операции с токенизированными активами (продажа/покупка как ценных бумаг) -- Продажу товаров/услуг за криптовалюту - -Но **НЕ запрещают** использовать токенизацию для **ВНУТРЕННЕГО учета**: - -✅ Учет продукции на складе -✅ Логистика и отслеживание перемещений -✅ Безопасность и контроль доступа -✅ Внутреннее управление активами - -**Основной функционал (CRM, ИИ, управление) полностью легален** независимо от токенизации. - -*Подробнее о том, как снимаются регуляторные ограничения через L2 решения, см. раздел "ПЕРСПЕКТИВЫ И ЭКОСИСТЕМА" ниже.* - -Рекомендуем проконсультироваться с юристом о торговых операциях с токенами и криптоплатежах в вашей стране. - ---- - -## 🚀 ПЕРСПЕКТИВЫ И ЭКОСИСТЕМА - -**VC HB3 Accelerator** — венчурный фонд, создающий глобальную экосистему токенизации активов. - -**Как мы снимаем регуляторные ограничения:** - -Фонд предлагает регуляторам внедрить готовое L2 решение за счет собственных инвестиций с участием регулятора. Это позволяет: -- Создать регулируемую инфраструктуру для токенизации активов -- Снять ограничения на торговые операции с токенами в рамках регулируемой экосистемы -- Разрешить продажу товаров/услуг за криптовалюту через регулируемую L2 цепочку -- Обеспечить полный контроль регулятора над инфраструктурой - -**Планы развития:** -- 21,000+ предпринимателей в первом акселераторе -- 600 портфельных компаний за 5 лет -- 100+ представительств в разных странах -- Сотрудничество с регуляторами для внедрения L2 решений -- Инвестиции в участников акселератора - -**Но важно:** Софт можно использовать **независимо от статуса фонда и работы с регуляторами**. Даже если фонд не зарегистрируется или не договорится с регуляторами, софт остается у вас — это гарантировано. Внутренний учет через токенизацию работает легально в любом случае. - -Подробнее о перспективах и работе с регуляторами: https://github.com/VC-HB3-Accelerator - ---- - -## 📋 КАК НАЧАТЬ - -1. **Изучите репозиторий:** https://github.com/VC-HB3-Accelerator/DLE -2. **Изучите условия приобретения:** https://github.com/VC-HB3-Accelerator/DLE/blob/main/docs/service-terms.md -3. **Посмотрите приложение в действии:** эрайти.рф — проверенное решение, которое мы используем для управления собственным бизнесом -4. **Запросите демонстрацию** — можем организовать онлайн-презентацию -5. **Выберите тариф:** Standard ($1,000) или Premium ($10,000) -6. **Приобретите лицензию** через официального продавца -7. **Получите приложение и бесплатную настройку** подрядчиками в течение 5 лет - ---- - -## 📞 КОНТАКТЫ - -**Для клиентов из РФ:** -ООО "ЭРАЙТИ" — официальный продавец -Наше приложение: эрайти.рф -Email: 18900@эрайти.рф -Телефон: +7 (968) 269-92-64 - -**VC HB3 Accelerator:** -Веб3-приложение: https://hb3-accelerator.com -Email: info@hb3-accelerator.com - ---- - -## ✅ ГАРАНТИИ - -- Софт остается у вас даже если фонд не зарегистрируется -- Возврат 70% в течение 5 лет при соблюдении условий программы (детали: [service-terms.md](https://github.com/VC-HB3-Accelerator/DLE/blob/main/docs/service-terms.md)) -- Полный контроль над данными (on-premises развертывание) -- Открытый исходный код для проверки -- Бессрочная лицензия (Perpetual) с правами, определяемыми количеством токенов -- Бесплатные обновления и базовое обслуживание 5 лет с даты приобретения - ---- - -Готовы ответить на вопросы и организовать демонстрацию. - -С уважением, -[Ваше имя] -[Должность] -[Компания] - ---- - -**P.S.** Изучите репозиторий приложения и условия приобретения перед принятием решения. Посмотрите демо на эрайти.рф — это проверенное решение, которое вы получите после покупки. - ---- - -**ℹ️ Информация о персональных данных:** - -Ознакомиться с **политикой конфиденциальности**, **согласием на обработку персональных данных** и **согласием на использование файлов cookie** вы можете на странице: https://эрайти.рф/content/published - -Оператор персональных данных: ООО "ЭРАЙТИ" (официальный продавец для клиентов из РФ) \ No newline at end of file diff --git a/docs/multi-agent-architecture.md b/docs/multi-agent-architecture.md deleted file mode 100644 index 10c6f07..0000000 --- a/docs/multi-agent-architecture.md +++ /dev/null @@ -1,416 +0,0 @@ -# 🏗️ Архитектура множественных ИИ-агентов в DLE - -> **Концепция**: Создание отдельных специализированных агентов для разных задач, использующих одну локальную модель Ollama, но с разными системными промптами, правилами и интерфейсами. - ---- - -## 📋 Содержание - -1. [Концепция архитектуры](#концепция-архитектуры) -2. [Типы агентов](#типы-агентов) -3. [Архитектура системы](#архитектура-системы) -4. [Настройка агентов](#настройка-агентов) -5. [Интерфейсы агентов](#интерфейсы-агентов) -6. [База знаний для агентов](#база-знаний-для-агентов) -7. [Процесс работы агентов](#процесс-работы-агентов) - ---- - -## 🎯 Концепция архитектуры - -### Основные принципы - -1. **Одна модель, множество агентов** - - Все агенты используют одну локальную модель Ollama (qwen2.5:7b) - - Различие между агентами — в системных промптах и правилах - - Каждый агент имеет свою специализацию и роль - -2. **Изоляция агентов** - - Каждый агент имеет свои настройки (системный промпт, правила, RAG таблицы) - - Агенты не влияют друг на друга - - Можно создавать, редактировать и удалять агентов независимо - -3. **Специализация по задачам** - - Агент поддержки — отвечает на вопросы пользователей - - Агент-редактор — создает контент по запросу - - Возможность создания дополнительных агентов (аналитик, переводчик и т.д.) - -4. **Отдельные интерфейсы** - - Каждый агент имеет свой интерфейс доступа - - Интерфейсы адаптированы под задачи агента - - Разные права доступа для разных агентов - ---- - -## 🤖 Типы агентов - -### 1. Агент поддержки (Support Agent) - -**Роль**: Отвечать на сообщения пользователей - -**Задачи**: -- Обработка входящих сообщений от пользователей -- Поиск ответов в базе знаний (FAQ, документация) -- Генерация ответов на основе найденной информации -- Эскалация сложных вопросов к операторам - -**Характеристики**: -- Использует RAG для поиска в FAQ и документах -- Системный промпт: "Вы — профессиональный ассистент службы поддержки" -- Правила: строгий режим (только из базы знаний, минимум генерации) -- Интерфейс: встроен в чат (web, telegram, email) - -**База знаний**: -- FAQ таблицы -- Документация продукта -- База знаний для клиентов - ---- - -### 2. Агент-редактор (Content Editor Agent) - -**Роль**: Создавать контент по запросу пользователя - -**Задачи**: -- Создание постов для социальных сетей -- Написание статей для блога -- Генерация email-рассылок -- Создание рекламных текстов - -**Характеристики**: -- Использует RAG для поиска инструкций платформ и стиля компании -- Системный промпт: "Вы — профессиональный контент-маркетолог и редактор" -- Правила: креативный режим (больше генерации, использование примеров) -- Интерфейс: отдельная страница "Редактор контента" - -**База знаний**: -- Инструкции платформ (ВК, Telegram, Instagram и т.д.) -- Стиль компании (tone of voice, запрещенные слова) -- Примеры контента (референсы) -- Ключевые слова и хэштеги -- CTA блоки - ---- - -### 3. Потенциальные дополнительные агенты - -**Агент-аналитик**: -- Анализ данных и создание отчетов -- Выявление трендов -- Прогнозирование - -**Агент-переводчик**: -- Перевод контента на разные языки -- Локализация материалов -- Адаптация под культурные особенности - -**Агент-закупщик**: -- Поиск поставщиков -- Анализ условий -- Рекомендации по выбору - ---- - -## 🏛️ Архитектура системы - -### Компоненты системы - -``` -┌─────────────────────────────────────────────────────────┐ -│ Единая модель Ollama │ -│ (qwen2.5:7b) │ -└────────────────┬────────────────────────────────────────┘ - │ - ├─────────────────┬───────────────────────┐ - │ │ │ - ↓ ↓ ↓ - ┌────────────────────┐ ┌──────────────────┐ ┌──────────────┐ - │ Агент поддержки │ │ Агент-редактор │ │ Другие агенты│ - │ │ │ │ │ │ - │ • Системный промпт │ │ • Системный │ │ • Свои │ - │ • Правила (строгие)│ │ промпт │ │ настройки │ - │ • RAG: FAQ │ │ • Правила │ │ │ - │ • Интерфейс: чат │ │ (креативные) │ │ │ - │ │ │ • RAG: инструкции │ │ │ - │ │ │ • Интерфейс: │ │ │ - │ │ │ редактор │ │ │ - └────────────────────┘ └──────────────────┘ └──────────────┘ -``` - -### Хранение настроек агентов - -**Таблица `ai_agents`**: -- `id` — уникальный идентификатор агента -- `name` — название агента (например, "Агент поддержки", "Агент-редактор") -- `role` — роль агента (support, content_editor, analyst и т.д.) -- `description` — описание назначения агента -- `system_prompt_encrypted` — системный промпт (зашифрован) -- `rules_id` — ссылка на правила агента (из таблицы `ai_assistant_rules`) -- `selected_rag_tables` — массив ID таблиц для RAG поиска -- `enabled_channels` — на каких каналах активен (web, telegram, email) -- `interface_route` — маршрут для интерфейса агента -- `permissions_required` — требуемые права доступа -- `is_active` — активен ли агент -- `created_at`, `updated_at` — даты создания и обновления - -**Связь с правилами**: -- Каждый агент может использовать набор правил из `ai_assistant_rules` -- Правила определяют поведение: temperature, maxTokens, searchRagFirst и т.д. -- Можно создавать правила специально для каждого агента - -**Связь с RAG таблицами**: -- Каждый агент может использовать свои RAG таблицы -- Агент поддержки: FAQ, документация -- Агент-редактор: инструкции платформ, стиль компании, примеры - ---- - -## ⚙️ Настройка агентов - -### Создание нового агента - -**Шаг 1: Базовая информация** -- Название агента -- Роль (support, content_editor и т.д.) -- Описание назначения - -**Шаг 2: Системный промпт** -- Определяет роль и поведение агента -- Указывает, как агент должен работать -- Содержит контекст о компании и стиле - -**Шаг 3: Правила (Rules)** -- Создание или выбор существующих правил -- Настройка параметров генерации (temperature, maxTokens) -- Настройка поведения RAG (searchRagFirst, generateIfNoRag) - -**Шаг 4: База знаний (RAG таблицы)** -- Выбор таблиц для поиска информации -- Агент поддержки: FAQ, документация -- Агент-редактор: инструкции, стиль, примеры - -**Шаг 5: Интерфейс** -- Определение маршрута для доступа к агенту -- Настройка прав доступа -- Выбор каналов (web, telegram, email) - -**Шаг 6: Активация** -- Включение/выключение агента -- Тестирование работы агента - -### Примеры настроек - -**Агент поддержки**: -- Системный промпт: "Вы — профессиональный ассистент службы поддержки..." -- Правила: строгий режим (temperature: 0.3, searchRagFirst: true, generateIfNoRag: false) -- RAG таблицы: FAQ, Документация продукта -- Интерфейс: встроен в чат -- Каналы: web, telegram, email - -**Агент-редактор**: -- Системный промпт: "Вы — профессиональный контент-маркетолог и редактор..." -- Правила: креативный режим (temperature: 0.7, searchRagFirst: true, generateIfNoRag: true) -- RAG таблицы: Инструкции платформ, Стиль компании, Примеры контента -- Интерфейс: отдельная страница /content-editor -- Каналы: только web (для редакторов) - ---- - -## 🖥️ Интерфейсы агентов - -### Агент поддержки — интерфейс чата - -**Расположение**: Встроен в основной чат (HomeView) - -**Особенности**: -- Автоматическая активация при получении сообщения от пользователя -- Показ статуса генерации ответа -- Возможность отключения AI для конкретного сообщения -- История диалога с контекстом - -**Права доступа**: -- Доступен всем пользователям -- Автоматически отвечает на сообщения - ---- - -### Агент-редактор — интерфейс редактора - -**Расположение**: Отдельная страница `/content-editor` - -**Особенности**: -- Поле для ввода запроса на создание контента -- Выбор типа контента (пост ВК, статья блога, email и т.д.) -- Выбор платформы (ВКонтакте, Telegram, Instagram и т.д.) -- Показ процесса генерации -- Редактирование сгенерированного контента -- Сохранение готового контента -- История созданного контента - -**Права доступа**: -- Только для пользователей с ролью Editor -- Требуется авторизация - -**Функционал интерфейса**: -1. **Форма запроса**: - - Текстовое поле для описания задачи - - Выбор типа контента (выпадающий список) - - Выбор платформы (чекбоксы или выпадающий список) - - Дополнительные параметры (тон, длина, ключевые слова) - -2. **Процесс генерации**: - - Индикатор загрузки - - Показ найденных инструкций - - Показ процесса генерации - -3. **Результат**: - - Готовый контент в редактируемом поле - - Кнопка "Сохранить" - - Кнопка "Перегенерировать" - - Кнопка "Экспортировать" (копировать, скачать) - -4. **История**: - - Список созданного контента - - Фильтры по типу, платформе, дате - - Возможность редактирования и удаления - ---- - -## 📚 База знаний для агентов - -### Структура базы знаний - -**Для агента поддержки**: -- Таблица "FAQ" — часто задаваемые вопросы -- Таблица "Документация" — описание функций продукта -- Таблица "База знаний для клиентов" — расширенная информация - -**Для агента-редактора**: -- Таблица "Инструкции платформ" — правила размещения контента -- Таблица "Стиль компании" — tone of voice, запрещенные слова -- Таблица "Примеры контента" — референсы для разных типов контента -- Таблица "Ключевые слова" — семантическое ядро, хэштеги -- Таблица "CTA блоки" — призывы к действию - -### Как агенты используют базу знаний - -1. **RAG поиск**: - - Пользователь задает вопрос/запрос - - Агент выполняет векторный поиск в своих RAG таблицах - - Находит релевантную информацию - -2. **Контекст для генерации**: - - Найденная информация передается в LLM как контекст - - LLM генерирует ответ/контент на основе контекста - - Системный промпт направляет, как использовать контекст - -3. **Фильтрация по роли**: - - Агент поддержки ищет только в FAQ и документации - - Агент-редактор ищет только в инструкциях и примерах - - Изоляция данных между агентами - ---- - -## 🔄 Процесс работы агентов - -### Агент поддержки — процесс ответа - -1. **Получение сообщения**: - - Пользователь отправляет сообщение в чат - - Система определяет, что нужно использовать агента поддержки - -2. **RAG поиск**: - - Агент ищет ответ в своих RAG таблицах (FAQ, документация) - - Использует векторный поиск для семантического поиска - -3. **Генерация ответа**: - - Если найден ответ в базе знаний → использует его - - Если не найден → в строгом режиме предлагает связаться с оператором - - Генерирует ответ с учетом системного промпта и правил - -4. **Отправка ответа**: - - Ответ отправляется пользователю в чат - - Сохраняется в истории диалога - ---- - -### Агент-редактор — процесс создания контента - -1. **Получение запроса**: - - Редактор открывает интерфейс `/content-editor` - - Вводит запрос: "Создай пост для ВКонтакте о новой функции" - - Выбирает тип контента и платформу - -2. **RAG поиск инструкций**: - - Агент ищет инструкции для выбранной платформы - - Ищет стиль компании - - Ищет примеры похожего контента - - Ищет релевантные ключевые слова - -3. **Генерация контента**: - - Агент генерирует контент на основе: - - Системного промпта (роль редактора) - - Найденных инструкций платформы - - Стиля компании - - Примеров контента - - Ключевых слов - -4. **Результат**: - - Готовый контент показывается в интерфейсе - - Редактор может редактировать контент - - Сохранить или экспортировать - ---- - -## 🎯 Преимущества архитектуры - -### 1. Специализация -- Каждый агент решает свою задачу оптимально -- Не нужно жертвовать качеством для универсальности - -### 2. Гибкость -- Легко создавать новых агентов для новых задач -- Можно настраивать каждого агента независимо - -### 3. Изоляция -- Агенты не мешают друг другу -- Можно тестировать и обновлять агентов независимо - -### 4. Масштабируемость -- Легко добавлять новых агентов -- Каждый агент использует одну модель, нет перегрузки - -### 5. Контроль -- Четкое разделение ответственности -- Легко отслеживать, какой агент что делает - ---- - -## 📊 Сравнение с единым агентом - -| Характеристика | Единый агент | Множественные агенты | -|----------------|--------------|----------------------| -| **Специализация** | Универсальный, но менее точный | Специализированный, более точный | -| **Настройка** | Один набор настроек для всех задач | Отдельные настройки для каждой задачи | -| **База знаний** | Все таблицы для всех задач | Изолированные таблицы для каждой задачи | -| **Интерфейс** | Один интерфейс | Отдельные интерфейсы для каждой задачи | -| **Гибкость** | Сложно адаптировать под разные задачи | Легко создавать новых агентов | -| **Производительность** | Одна модель для всех | Одна модель, но разные промпты | - ---- - -## 🚀 Следующие шаги - -1. **Создание таблицы `ai_agents`** в базе данных -2. **Создание сервиса для управления агентами** -3. **Модификация AI Assistant для работы с несколькими агентами** -4. **Создание интерфейса для агента-редактора** -5. **Настройка агента поддержки (уже существует, нужно адаптировать)** -6. **Создание базы знаний для агента-редактора** -7. **Тестирование работы обоих агентов** - ---- - -**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.** - -**Последнее обновление**: Январь 2026 diff --git a/docs/security.md b/docs/security.md index ae3539f..a287b75 100644 --- a/docs/security.md +++ b/docs/security.md @@ -1297,8 +1297,8 @@ function signMessage(message) { ### Следующие шаги -1. 📖 [Изучите техническую документацию](./blockchain-integration-technical.md) -2. 🔧 [Настройте безопасное окружение](./setup-instruction.md) +1. 📖 [Изучите техническую документацию](./back-docs/blockchain-integration-technical.md) +2. 🔧 [Настройте безопасное окружение](./back-docs/setup-instruction.md) 3. 📋 [Прочитайте FAQ](./FAQ.md) 4. 💬 [Получите поддержку](https://hb3-accelerator.com/) --- diff --git a/docs/service-terms.md b/docs/service-terms.md index 85c3eb7..e33bd86 100644 --- a/docs/service-terms.md +++ b/docs/service-terms.md @@ -1,33 +1,346 @@ - +# Условия приобретения и обслуживания Digital Legal Entity -# Условия приобретения и обслуживания Digital Legal Entity — краткое резюме +## Содержание -> Важно: это краткое резюме условий. Канонический и юридически значимый полный текст находится здесь: [legal/service-terms.md](../legal/service-terms.md). +1. [Лицензионная модель](#1-лицензионная-модель) +2. [Тарифы](#2-тарифы) +3. [Система голосования](#3-система-голосования) +4. [Обновления и обслуживание](#4-обновления-и-обслуживание) +5. [Техническая поддержка и обучение](#5-техническая-поддержка-и-обучение) +6. [Возврат средств и гарантии](#6-возврат-средств-и-гарантии) +7. [Ответственность сторон](#7-ответственность-сторон) +8. [Условия использования](#8-условия-использования) +9. [Безопасность и конфиденциальность](#9-безопасность-и-конфиденциальность) +10. [Смарт-контракт управления](#10-смарт-контракт-управления) +11. [Оплата и продавцы](#11-оплата-и-продавцы) +12. [Политика изменения условий](#12-политика-изменения-условий) +13. [Контакты](#13-контакты) -Ключевые тезисы: -- Тип лицензии: бессрочная (Perpetual), права определяются количеством лицензионных единиц (токенов) (1 или 10). Токен — цифровой идентификатор права (лицензии), передача которого фиксируется в распределённом реестре (блокчейне). -- Обновления и базовое обслуживание: бесплатно 5 лет с даты передачи токена, зафиксированной в распределённом реестре (блокчейне). -- Бесплатная настройка подрядчиками: в течение 5 лет после покупки лицензии (персонализация, интеграция, настройка ИИ, доработка функционала). -- Голосование за развитие: 1 токен = 1 голос, решения большинством ≥51%. -- Возврат 70% возможен при соблюдении условий программы (см. оригинал). -- Поддержка, релизы, база знаний — через приложение `https://hb3-accelerator.com/`. -- Полный перечень ограничений/ответственности — в оригинале. +**Юридические документы**: [legal/README.md](../legal/README.md) — лицензия, авторские права, требования к атрибуции. -## 📚 Дополнительная документация +--- -- Общий список материалов: [docs/README.md](./README.md) -- Юридические документы: [legal/README.md](../legal/README.md) +## 1. Лицензионная модель -## 📞 Контакты и поддержка +### 1.1. Основные принципы -См. [README](../README.md) (контакты и каналы поддержки). +| Параметр | Значение | +|----------|----------| +| Тип лицензии | Бессрочная (Perpetual License) | +| Срок действия | Без ограничений | +| Обновления | Бесплатно 5 лет для держателей токенов | +| Отмена | Лицензия не может быть отменена компанией | + +### 1.2. Лицензия и токены + +Каждая лицензия DLE связана с **токеном управления на блокчейне**. Токен подтверждает право на использование платформы и даёт голос в развитии продукта. + +| Параметр | 1 токен | 10 токенов | +|----------|---------|------------| +| Количество лицензий | 1 | 1 | +| Виды деятельности | 1 | 1 | +| Голоса в голосовании | 1 | 10 | +| Условия обслуживания | Одинаковые | Одинаковые | + +**Голосование**: 1 токен = 1 голос. Решения принимаются большинством (51%+) через смарт-контракт на блокчейне. + +### 1.3. Вид деятельности + +- Одна лицензия — один вид деятельности/бизнеса +- Для нескольких видов деятельности нужны отдельные лицензии + +--- + +## 2. Тарифы + +### 2.1. Лицензии + +| Пакет | Цена | Токены | Голоса | +|-------|------|--------|--------| +| Standard | $1,000 USDT (единоразово) | 1 | 1 | +| Premium | $10,000 USDT (единоразово) | 10 | 10 | + +Все цены указаны **без учёта налогов**. Налоги — ответственность покупателя (НДС, Sales Tax, Income Tax и др. в зависимости от юрисдикции). + +### 2.2. Что включено в обе лицензии + +- Бессрочное право использования платформы +- Полный исходный код с документацией +- Бесплатные обновления 5 лет (для держателей токенов) +- Техническая поддержка (SLA по приоритету проблемы) +- Токены управления на блокчейне +- Право голоса за развитие продукта +- Доступ к онлайн-сессиям обучения +- Готовый пакет документов для регулятора + +Единственная разница между пакетами — количество токенов и, соответственно, голосов. + +### 2.3. Методы оплаты + +- **Криптовалюта (USDT)** — напрямую или через авторизованных партнёров +- **Банковский перевод** — в местной валюте через авторизованных дилеров +- **Кредитные карты** — через платёжные системы партнёров + +Все комиссии за переводы, конвертацию и обработку платежей несёт покупатель. + +### 2.4. Процесс покупки + +1. Выбор продавца (авторизованный дилер или напрямую у автора) +2. Согласование цены в USDT или эквиваленте местной валюты +3. Получение реквизитов +4. Отправка платежа +5. Подтверждение и документ об оплате +6. Получение токена и доступа к платформе + +--- + +## 3. Система голосования + +### 3.1. Процесс + +1. **Предложение** — сообщество предлагает новую функцию +2. **Регистрация** — голосование создаётся в смарт-контракте на блокчейне +3. **Голосование** — каждый токен = 1 голос, «За» или «Против» +4. **Решение** — при 51%+ голосов «За» функция берётся в разработку + +### 3.2. Периодичность + +- Голосование открыто постоянно (асинхронное) +- Ежеквартальный анализ результатов +- Разработка по приоритету (количество голосов) + +### 3.3. Портал голосования + +**Адрес**: https://hb3-accelerator.com/ + +Доступно: создание предложений, голосование, просмотр результатов, отслеживание статуса разработки, история голосований. + +**Требования**: кошелёк с токенами (MetaMask, WalletConnect и т.д.). + +--- + +## 4. Обновления и обслуживание + +### 4.1. Бесплатные обновления (5 лет) + +Для всех держателей лицензионных токенов с даты передачи токена, зафиксированной в блокчейне: + +- Исправления ошибок +- Улучшения производительности +- Новые функции (одобренные голосованием) +- Обновления безопасности + +**Частота:** + +| Тип | Периодичность | +|-----|---------------| +| Security Patches | Немедленно при обнаружении | +| Regular Updates | Еженедельно (по средам) | +| Major Features | По результатам голосования | + +### 4.2. Платформа обновлений + +**Адрес**: https://hb3-accelerator.com/ + +Держатели лицензий могут: скачивать все версии, читать Release Notes, получать уведомления о новых версиях, изучать документацию по миграции. + +**Требования для доступа**: лицензионный токен на кошельке в момент запроса. + +--- + +## 5. Техническая поддержка и обучение + +Все держатели лицензий получают доступ к поддержке и обучению через портал: https://hb3-accelerator.com/ + +Подробные условия поддержки, обучение, онлайн-сессии и настройка платформы — в рамках [программы акселерации](https://github.com/VC-HB3-Accelerator/.github/blob/main/Версия%20на%20русском/accelerator-program.md). + +--- + +## 6. Возврат средств и гарантии + +### 6.1. Общий принцип + +Лицензия бессрочная — стандартный возврат не предусмотрен. + +### 6.2. Программа возврата 70% + +Возврат **70% от стоимости лицензии** возможен в течение **5 лет** с момента покупки при одновременном выполнении всех условий: + +1. Свыше **51% отрицательных голосов** в голосовании токен-холдеров +2. Жалобы касаются **отсутствия выпусков обновлений** +3. Голосование проведено **через смарт-контракт на блокчейне** +4. Запрос подан **в течение 5 лет** с даты лицензирования + +**Процесс**: запрос на hb3-accelerator.com → подтверждение на смарт-контракте → возврат 70% в течение 30 дней. + +### 6.3. Рекламация платежа + +В течение 30 дней с момента платежа — при ошибке расчёта, двойной оплате или иных обоснованных причинах. + +--- + +## 7. Ответственность сторон + +### 7.1. Гарантии автора + +- Лицензия бессрочная (право использования не ограничено сроком) +- Обновления и базовое обслуживание бесплатно 5 лет +- Базовая функциональность остаётся доступной +- Право голоса за развитие продукта + +### 7.2. Что не гарантируется + +- Конкретные новые функции (зависит от голосования) +- Определённый график выпусков +- Поддержка при модификации исходного кода +- Производительность при превышении рекомендованных лимитов + +### 7.3. Ограничение ответственности автора + +Автор не несёт ответственности за: упущенную прибыль, косвенные убытки, потерю данных, прерывание деятельности, репутационный ущерб, штрафы и санкции. + +**Максимальная ответственность**: не более суммы оплаченной лицензии. Покрываются только прямые убытки при прямом нарушении контракта. + +### 7.4. Ответственность пользователя + +Пользователь отвечает за: +- Резервное копирование данных +- Использование в соответствии с условиями лицензии +- Защиту приватных ключей кошелька +- Соблюдение применимых законов +- Своевременное обновление приложения + +--- + +## 8. Условия использования + +### Разрешено + +- Использование для управления собственным бизнесом +- Развёртывание на собственной инфраструктуре +- Резервное копирование данных +- Локальная модификация конфигурации +- Голосование за развитие продукта +- Передача лицензии наследникам + +### Запрещено + +- Перепродажа или сублицензирование +- Использование более одного вида деятельности одной лицензией +- Reverse engineering и модификация исходного кода +- Удаление авторских прав и лицензионных уведомлений +- Совместное использование между независимыми организациями +- Использование в образовательных целях без разрешения +- Развёртывание SaaS на основе платформы + +--- + +## 9. Безопасность и конфиденциальность + +| Механизм | Описание | +|----------|----------| +| TLS 1.3 | Шифрование всех соединений | +| AES-256 | Шифрование критичных данных в хранилище | +| Управление ключами | Пользователь контролирует ключи шифрования | +| GDPR | Соответствие (с DPA) | + +Подробнее: [Безопасность DLE](./security.md) + +--- + +## 10. Смарт-контракт управления + +### 10.1. Архитектура + +DLE использует смарт-контракт на блокчейне для управления лицензиями и голосованием: + +- **ERC20** — каждая лицензия представлена токенами управления (1 или 10) +- **ERC20Votes** — встроенная система голосования +- **ERC20Permit** — подписи для переводов без gas-комиссий +- **Мультичейн** — поддержка голосования в нескольких сетях одновременно + +### 10.2. Голосование через смарт-контракт + +**Создание предложения**: только держатели токенов. Длительность голосования: от 1 часа до 30 дней. + +**Процесс**: предложение → голосование (1 токен = 1 голос) → кворум 51%+ → исполнение. + +**Исполнение**: через прямой вызов в цепочке голосования или через подписи в других сетях. + +### 10.3. Безопасность контракта + +- Защита от реентерабельности (ReentrancyGuard) +- Токены передаются только через governance +- Снапшоты голосов для защиты от flash-loans +- Подписи EIP-712 для контрактных кошельков +- Валидация всех параметров перед исполнением + +### 10.4. Передача лицензии + +Лицензия = токены, привязанные к адресу кошелька. Передача — перевод токенов на новый адрес через governance. Новый владелец автоматически получает право голоса. + +--- + +## 11. Оплата и продавцы + +### 11.1. Авторизованные продавцы + +Лицензии продаются **только через компании** с официальным письменным разрешением от автора. + +**Требования к продавцу**: юридическое лицо, подписанный контракт, включение в список на hb3-accelerator.com, соблюдение условий лицензирования. + +### 11.2. Продавец для Российской Федерации + +**ООО "ЭРАЙТИ"** +- ОГРН: 1222600014383 +- ИНН: 2636220809 +- Адрес: 355007, Ставропольский край, г. Ставрополь, ул. Бурмистрова, д. 65Б, помещ. 2 +- Контакты: 18900@эрайти.рф, +7 (968) 269-92-64 + +### 11.3. Прямая покупка у автора + +- Email: info@hb3-accelerator.com +- Сайт: https://hb3-accelerator.com +- GitHub: https://github.com/VC-HB3-Accelerator + +--- + +## 12. Политика изменения условий + +### Для новых лицензий + +- Условия могут изменяться для новых покупок +- Уведомление за 60 дней до вступления в силу +- Применение только к лицензиям, купленным после даты изменения + +### Для существующих лицензий + +- Условия вашей лицензии **не меняются** после покупки +- Фиксированные права действуют бессрочно +- Обратная совместимость поддерживается + +--- + +## 13. Контакты + +- **Портал поддержки**: https://hb3-accelerator.com/ +- **Email**: info@hb3-accelerator.com +- **GitHub**: https://github.com/VC-HB3-Accelerator/DLE +- **Юридический статус**: Проприетарное ПО (см. [LICENSE](../LICENSE)) +- **Юридическая документация**: [legal/README.md](../legal/README.md) + +--- + +## Дополнительная документация + +- [Описание платформы](./application-description.md) +- [ИИ-агенты](./ai-assistant.md) — система создания специализированных агентов +- [Блокчейн для бизнеса](./blockchain-for-business.md) — цифровая регистрация активов и решение бизнес-задач +- [Безопасность DLE](./security.md) — многоуровневая защита +- [FAQ](./FAQ.md) — частые вопросы + +--- + +**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.** + +**Последнее обновление**: Февраль 2026 diff --git a/docs/setup-ai-assistant.md b/docs/setup-ai-assistant.md deleted file mode 100644 index 2841ab6..0000000 --- a/docs/setup-ai-assistant.md +++ /dev/null @@ -1,929 +0,0 @@ -# Инструкция по настройке AI Ассистента с векторным поиском - -## 🤖 Полное руководство по запуску интеллектуального помощника - -Этот документ описывает пошаговый процесс настройки AI ассистента для решения бизнес-задач через электронные таблицы и векторный поиск. - ---- - -## 📚 Что вы настроите - -После выполнения инструкции у вас будет: - -✅ Работающий AI ассистент с локальной моделью (Ollama) -✅ База знаний для ответов клиентам (FAQ) -✅ Автоматизация работы с поставщиками -✅ Система обучения персонала -✅ Векторный поиск по вашим данным -✅ Значительная экономия времени и ресурсов - -> 💡 **Экономический эффект**: См. [AI Ассистент](./ai-assistant.md) - там подробно описаны все возможности и расчеты экономии. - ---- - -## ⏱️ Время настройки - -- **Быстрая настройка**: 20-30 минут (базовый FAQ) -- **Полная настройка**: 1-2 часа (все возможности) - ---- - -## Шаг 1: Установка и запуск Ollama - -### 1.1 Проверка статуса Ollama - -1. Перейдите в **Настройки** → вкладка **Интеграции** -2. Найдите блок **"Ollama"** и нажмите **"Подробнее"** -3. Проверьте статус подключения: - - ✅ **"Ollama is running"** — все готово, переходите к шагу 1.3 - - ❌ **"Ollama API not responding"** — переходите к шагу 1.2 - -### 1.2 Запуск Ollama (если не запущен) - -Если Ollama не запущен, выполните в терминале: - -```bash -# Для Docker (рекомендуется) -docker-compose up -d ollama - -# Или локально -ollama serve -``` - -Обновите страницу и проверьте статус снова. - -### 1.3 Установка модели для AI - -1. В разделе **Ollama** нажмите **"Установить модель"** -2. Выберите модель: - - **qwen2.5:7b** (рекомендуется) — для русского языка, 4.7 GB - - **llama2:7b** — для английского, 3.8 GB - - **mistral:7b** — универсальная, 4.1 GB -3. Нажмите **"Установить"** -4. Дождитесь завершения загрузки (5-10 минут в зависимости от скорости интернета) - -> 💡 **Подсказка**: Модель скачивается один раз и хранится локально - -### 1.4 Установка Embedding модели - -1. В том же разделе найдите **"Установить Embedding модель"** -2. Выберите модель: - - **mxbai-embed-large:latest** (рекомендуется) — 670 MB - - **nomic-embed-text:latest** — альтернатива, 274 MB -3. Нажмите **"Установить"** - -> ⚠️ **Важно**: Embedding модель нужна для векторного поиска (RAG) - ---- - -## Шаг 2: Создание базы знаний (электронные таблицы) - -### 2.1 Создание таблицы FAQ - -1. Перейдите в **Таблицы** (в главном меню) -2. Нажмите **"+ Создать таблицу"** -3. Заполните: - - **Название**: `FAQ - Часто задаваемые вопросы` - - **Описание**: `База знаний для AI ассистента по работе с клиентами` -4. Нажмите **"Создать"** - -### 2.2 Настройка столбцов таблицы - -Добавьте следующие столбцы: - -#### Столбец 1: Вопрос (обязательный для RAG) - -1. Нажмите **"+ Добавить столбец"** -2. Заполните: - - **Название**: `Вопрос` - - **Тип**: `Текст` - - **Назначение**: Выберите `Вопрос для AI` ⭐ -3. Нажмите **"Сохранить"** - -> ⚠️ **Критично**: Обязательно выберите назначение "Вопрос для AI" — это поле будет индексироваться для векторного поиска - -#### Столбец 2: Ответ (обязательный для RAG) - -1. Нажмите **"+ Добавить столбец"** -2. Заполните: - - **Название**: `Ответ` - - **Тип**: `Текст` - - **Назначение**: Выберите `Ответ AI` ⭐ -3. Нажмите **"Сохранить"** - -#### Столбец 3: Продукт (опционально, для фильтрации) - -1. Нажмите **"+ Добавить столбец"** -2. Заполните: - - **Название**: `Продукт` - - **Тип**: `Множественный выбор` - - **Варианты**: `Базовый`, `Премиум`, `Корпоративный` - - **Назначение**: Выберите `Фильтр по продукту` -3. Нажмите **"Сохранить"** - -#### Столбец 4: Теги (опционально, для категоризации) - -1. Нажмите **"+ Добавить столбец"** -2. Заполните: - - **Название**: `Теги` - - **Тип**: `Множественный выбор` - - **Варианты**: `Оплата`, `Доставка`, `Возврат`, `Гарантия`, `Техподдержка` - - **Назначение**: Выберите `Теги пользователя` -3. Нажмите **"Сохранить"** - -#### Столбец 5: Приоритет (опционально) - -1. Нажмите **"+ Добавить столбец"** -2. Заполните: - - **Название**: `Приоритет` - - **Тип**: `Число` - - **Назначение**: Выберите `Приоритет` -3. Нажмите **"Сохранить"** - -> 💡 **Подсказка**: Вопросы с более высоким приоритетом будут показываться AI первыми - -### 2.3 Заполнение базы знаний - -Добавьте типовые вопросы и ответы: - -**Пример 1: Оплата** - -| Вопрос | Ответ | Продукт | Теги | Приоритет | -|--------|-------|---------|------|-----------| -| Как оплатить заказ? | Мы принимаем оплату банковской картой, через PayPal, или банковским переводом. Выберите удобный способ при оформлении заказа. | Все | Оплата | 10 | -| Можно ли оплатить частями? | Да, для заказов от 50,000₽ доступна рассрочка на 3, 6 или 12 месяцев без переплаты. | Премиум, Корпоративный | Оплата | 8 | - -**Пример 2: Доставка** - -| Вопрос | Ответ | Продукт | Теги | Приоритет | -|--------|-------|---------|------|-----------| -| Сколько времени занимает доставка? | Стандартная доставка: 3-5 рабочих дней по России. Экспресс-доставка: 1-2 дня в крупных городах. | Все | Доставка | 10 | -| Сколько стоит доставка? | Бесплатная доставка при заказе от 5,000₽. Для заказов менее 5,000₽ стоимость доставки 300₽. | Все | Доставка | 9 | - -**Пример 3: Возврат** - -| Вопрос | Ответ | Продукт | Теги | Приоритет | -|--------|-------|---------|------|-----------| -| Как вернуть товар? | Возврат возможен в течение 14 дней с момента получения. Товар должен быть в оригинальной упаковке, с сохранением товарного вида. Свяжитесь с поддержкой для оформления возврата. | Все | Возврат | 10 | -| Когда вернут деньги? | Возврат денежных средств производится в течение 5-10 рабочих дней после получения товара на наш склад. | Все | Возврат | 8 | - -> 💡 **Рекомендация**: Добавьте минимум 20-30 вопросов для качественной работы AI. Чем больше вопросов, тем точнее ответы! - -### 2.4 Активация таблицы как источника для AI - -1. В правом верхнем углу таблицы найдите **⚙️ Настройки таблицы** -2. Включите переключатель **"Использовать как источник для AI"** ✅ -3. Нажмите **"Сохранить"** - -> ✅ **Готово!** Таблица теперь индексируется для векторного поиска - ---- - -## Шаг 3: Настройка AI провайдера (Ollama) - -### 3.1 Открытие настроек Ollama - -1. Перейдите в **Настройки** → **Интеграции** -2. Найдите блок **"Ollama"** и нажмите **"Подробнее"** - -### 3.2 Проверка Base URL - -1. Проверьте поле **Base URL**: - - Для Docker: `http://ollama:11434` ✅ - - Для локального: `http://localhost:11434` -2. Если URL неверный, исправьте и нажмите **"Сохранить"** - -### 3.3 Выбор модели - -1. В поле **"Модель (LLM)"** выберите установленную модель: - - `qwen2.5:7b` (рекомендуется для русского) -2. В поле **"Embeddings-модель"** выберите: - - `mxbai-embed-large:latest` -3. Нажмите **"Сохранить"** - ---- - -## Шаг 4: Настройка AI Ассистента - -### 4.1 Открытие настроек ассистента - -1. Перейдите в **Настройки** → **Интеграции** -2. Найдите блок **"ИИ-ассистент"** и нажмите **"Подробнее"** - -### 4.2 Настройка системного промта - -В поле **"Системный промт"** введите инструкции для AI: - -**Базовый промт (для начала)**: - -``` -Вы — профессиональный ассистент службы поддержки компании. - -Правила: -1. Отвечайте вежливо и профессионально -2. Используйте информацию из базы знаний -3. Если информации нет — предложите связаться с оператором -4. Отвечайте кратко и по существу -5. Всегда заканчивайте вопросом "Чем еще могу помочь?" -``` - -**Продвинутый промт (с персонализацией)**: - -``` -Вы — профессиональный ассистент службы поддержки компании "Название вашей компании". - -О компании: -- Мы занимаемся [краткое описание бизнеса] -- Наши ценности: качество, надежность, клиентоориентированность - -Стиль общения: -- Дружелюбный, но профессиональный -- Обращайтесь к клиенту на "Вы" -- Используйте эмодзи умеренно (1-2 на сообщение) - -Правила ответа: -1. ОБЯЗАТЕЛЬНО: Отвечайте ТОЛЬКО на русском языке. Все вопросы и ответы должны быть на русском языке -2. Сначала ищите ответ в базе знаний (RAG) -3. Если нашли — отвечайте на основе найденной информации -4. Если не нашли — честно скажите и предложите помощь оператора -5. Не придумывайте информацию о ценах, сроках, условиях -6. При сложных вопросах предлагайте связаться с менеджером - -Всегда заканчивайте: "Чем еще могу помочь? 😊" -``` - -### 4.3 Выбор моделей - -1. **LLM-модель**: Выберите `qwen2.5:7b (ollama)` -2. **Embedding-модель**: Выберите `mxbai-embed-large:latest (ollama)` - -> 💡 **Подсказка**: Модели автоматически подтянутся из настроек Ollama - -> 📊 **Размер контекстного окна**: -> - **Qwen2.5:7b**: Базовый контекст = **32,768 токенов** (~24,000 русских слов) -> - Всего данных, отправляемых в модель: -> - Системный промпт: ~500-2000 символов (~300-1200 токенов) -> - История диалога: до 20 сообщений (~100-500 токенов на сообщение = ~2000-10000 токенов) -> - RAG контекст: ~500-2000 токенов (из найденных данных) -> - Текущий вопрос: ~50-200 токенов -> - **Итого**: примерно 3,000-15,000 токенов (запас достаточен) -> - Если нужен больший контекст → используйте Qwen3 с YaRN (до 131K токенов) - -### 4.4 Выбор RAG-таблицы - -1. В поле **"Выбранные RAG-таблицы"** выберите созданную таблицу: - - `FAQ - Часто задаваемые вопросы` -2. Нажмите **"Сохранить"** - -### 4.5 Настройка правил AI (Rules) - -Создайте набор правил для управления поведением AI: - -1. Нажмите кнопку **"Создать"** рядом с полем "Набор правил" -2. В модальном окне заполните: - -**Название**: `Гибридный режим (RAG + генерация)` - -**Описание**: `AI сначала ищет в базе знаний, если не находит — генерирует ответ` - -**Правила (JSON)**: -```json -{ - "checkUserTags": true, - "searchRagFirst": true, - "generateIfNoRag": true, - "temperature": 0.7, - "maxTokens": 500 -} -``` - -3. Нажмите **"Сохранить"** -4. Выберите созданное правило в выпадающем списке - -> 💡 **Что означают параметры**: -> - `checkUserTags: true` — учитывать теги пользователя при поиске -> - `searchRagFirst: true` — сначала искать в базе знаний -> - `generateIfNoRag: true` — генерировать ответ, если ничего не найдено -> - `temperature: 0.7` — баланс между точностью и креативностью (0.0-1.0) -> - `maxTokens: 500` — максимальная длина ответа - -### 4.6 Настройки RAG поиска - -Разверните раздел **"🔍 Настройки RAG поиска"**: - -**Базовые настройки:** -1. **Метод поиска**: Выберите `Гибридный поиск` (рекомендуется) -2. **Максимальное количество результатов**: `5` -3. **Порог релевантности**: `0.1` (от 0.01 до 1.0) - -**Извлечение ключевых слов:** -1. ✅ **Включить извлечение ключевых слов** -2. **Минимальная длина слова**: `3` -3. **Максимальное количество ключевых слов**: `10` -4. ✅ **Удалять стоп-слова** - -**Веса поиска (для гибридного):** -1. **Семантический поиск**: `70%` (точность) -2. **Поиск по ключевым словам**: `30%` (скорость) - -**Дополнительные настройки:** -1. ✅ **Нечеткий поиск** (для опечаток) -2. ✅ **Стемминг слов** (находит разные формы слова) -3. ☐ **Поиск синонимов** (пока отключен) - -### 4.7 Сохранение настроек - -Нажмите кнопку **"Сохранить"** внизу формы. - ---- - -## Шаг 5: Тестирование AI Ассистента - -### 5.1 Использование встроенного тестера - -1. На странице настроек AI ассистента прокрутите вниз до блока **"🔍 Мониторинг системы"** -2. В разделе **"🧠 Тест RAG-функциональности"**: - - Убедитесь, что выбрана таблица `FAQ - Часто задаваемые вопросы` - - Введите тестовый вопрос: `Как оплатить заказ?` - - Нажмите **"Тестировать RAG"** -3. Наблюдайте за процессом: - - 🔍 Ищем ответ в базе знаний... (векторный поиск) - - 🤖 Генерируем ответ с помощью ИИ... (LLM генерация) - - ✅ Готово! -4. Проверьте результат: - - Должен отобразиться ответ из вашей таблицы - - Score (оценка близости): чем ближе к 0, тем лучше - -> 💡 **Хороший Score**: от -300 до 0 (ответ найден) -> ⚠️ **Плохой Score**: больше 300 (ответ не найден, AI придумает свой) - -### 5.2 Тестирование через Web Chat - -1. Перейдите на главную страницу приложения -2. Найдите виджет **"💬 Чат с AI"** (обычно справа внизу) -3. Нажмите на виджет, чтобы открыть чат -4. Введите вопрос: `Сколько стоит доставка?` -5. Проверьте ответ AI - -**Ожидаемый результат:** -``` -🤖 AI Ассистент: -Бесплатная доставка при заказе от 5,000₽. -Для заказов менее 5,000₽ стоимость доставки 300₽. - -Чем еще могу помочь? 😊 -``` - -### 5.3 Тестирование разных сценариев - -Попробуйте задать различные вопросы: - -**✅ Вопрос из базы знаний:** -``` -Пользователь: "Как вернуть товар?" -AI: [Ответ из таблицы FAQ] -``` - -**⚠️ Вопрос НЕ из базы знаний:** -``` -Пользователь: "Какая погода сегодня?" -AI: "Извините, я специализируюсь на вопросах о нашей компании и продуктах. - По вопросам погоды обратитесь к специализированным сервисам. - Чем еще могу помочь?" -``` - -**🎯 Вопрос с опечаткой:** -``` -Пользователь: "Как аплатить заказ?" (опечатка) -AI: [Найдет правильный ответ благодаря нечеткому поиску] -``` - ---- - -## Шаг 6: Расширенные возможности (опционально) - -### 6.1 Создание таблицы для работы с поставщиками - -#### Структура таблицы "База поставщиков" - -1. Создайте новую таблицу: `База поставщиков` -2. Добавьте столбцы: - -| Столбец | Тип | Описание | -|---------|-----|----------| -| Название компании | Текст | Наименование поставщика | -| Категория товаров | Множественный выбор | Электроника, Мебель, Одежда, и т.д. | -| Контактное лицо | Текст | ФИО менеджера | -| Email | Текст | Электронная почта | -| Телефон | Текст | Контактный телефон | -| Цены | Текст | Прайс-лист (краткое описание) | -| Условия оплаты | Текст | Отсрочка, предоплата, и т.д. | -| Минимальный заказ | Число | Минимальная сумма заказа | -| Срок доставки | Текст | Сроки поставки | -| Рейтинг | Число | Оценка от 1 до 10 | -| Примечания | Текст | Дополнительная информация | - -3. Активируйте как источник для AI -4. Заполните данными о ваших поставщиках - -#### Промт для AI закупщика - -Добавьте в системный промт: - -``` -ДОПОЛНИТЕЛЬНО - Работа с поставщиками: - -Когда пользователь спрашивает о поставщиках: -1. Ищите в базе "База поставщиков" -2. Фильтруйте по категории товаров -3. Сортируйте по рейтингу и условиям -4. Предоставьте ТОП-3 рекомендации - -Формат ответа: -🏆 TOP-3 поставщика по запросу "[категория]": - -1. [Название] ⭐ [Рейтинг]/10 - 📧 [Email] | 📞 [Телефон] - 💰 Условия: [Условия оплаты] - 🚚 Доставка: [Срок доставки] - 📦 Минимум: [Минимальный заказ]₽ - -2. ... -3. ... - -Рекомендую связаться с [Название первого поставщика] — лучшие условия. -``` - -### 6.2 Создание таблицы для обучения персонала - -#### Структура таблицы "База знаний для сотрудников" - -1. Создайте новую таблицу: `База знаний для сотрудников` -2. Добавьте столбцы: - -| Столбец | Тип | Описание | -|---------|-----|----------| -| Вопрос | Текст | Вопрос сотрудника (назначение: Вопрос для AI) | -| Ответ | Текст | Подробный ответ (назначение: Ответ AI) | -| Категория | Множественный выбор | Продажи, HR, Финансы, IT, Маркетинг | -| Отдел | Множественный выбор | Для какого отдела актуально | -| Сложность | Число | От 1 (простой) до 5 (сложный) | -| Инструкции | Текст | Пошаговые инструкции (если есть) | -| Ссылки | Текст | Ссылки на документы/видео | -| Дата обновления | Дата | Когда информация обновлялась | - -3. Примеры вопросов: - -**Категория "Продажи":** -- "Как оформить возврат клиенту?" -- "Какие скидки можно давать постоянным клиентам?" -- "Как работать с корпоративными клиентами?" - -**Категория "HR":** -- "Как оформить отпуск?" -- "Куда обращаться по больничному?" -- "Как происходит адаптация новых сотрудников?" - -**Категория "IT":** -- "Как получить доступ к корпоративной почте?" -- "Что делать при проблемах с VPN?" -- "Как создать заявку в техподдержку?" - -### 6.3 Создание связей между таблицами - -#### Пример: Связь "Клиенты" → "Заказы" - -1. Создайте таблицу **"Клиенты"**: - - Название, Email, Телефон, Статус (VIP/Обычный) - -2. Создайте таблицу **"Заказы"**: - - Номер заказа, Дата, Сумма - -3. В таблице "Заказы" добавьте столбец: - - **Название**: `Клиент` - - **Тип**: `Связь (Relation)` - - **Связанная таблица**: выберите `Клиенты` - - **Показывать поле**: выберите `Название` - -4. Добавьте еще один столбец в "Заказы": - - **Название**: `Email клиента` - - **Тип**: `Lookup (Подстановка)` - - **Связь через**: выберите столбец `Клиент` - - **Подставлять поле**: выберите `Email` - -**Результат**: При выборе клиента автоматически подставится его Email! - -#### Использование AI с связанными таблицами - -AI автоматически понимает связи и может отвечать на вопросы: - -``` -Пользователь: "Покажи все заказы клиента Иванов" -AI: [Ищет в таблице Заказы, фильтрует по клиенту Иванов] -``` - ---- - -## Шаг 7: Интеграция с Telegram и Email (опционально) - -### 7.1 Настройка Telegram бота - -1. Перейдите в **Настройки** → **Интеграции** → **Telegram** -2. Создайте бота через [@BotFather](https://t.me/botfather) в Telegram: - - Отправьте `/newbot` - - Выберите имя и username бота - - Скопируйте **Bot Token** -3. В настройках DLE введите: - - **Bot Token**: вставьте токен от BotFather - - **Bot Username**: username вашего бота (например, `@mycompany_bot`) -4. Нажмите **"Сохранить"** -5. В настройках AI ассистента выберите этот Telegram бот в поле **"Telegram-бот"** - -**Результат**: AI будет отвечать на сообщения в Telegram! - -### 7.2 Настройка Email интеграции - -1. Перейдите в **Настройки** → **Интеграции** → **Email** -2. Заполните IMAP настройки (для получения писем): - - **IMAP Host**: `imap.gmail.com` (для Gmail) - - **IMAP Port**: `993` - - **IMAP User**: ваш email - - **IMAP Password**: пароль приложения (не основной пароль!) -3. Заполните SMTP настройки (для отправки писем): - - **SMTP Host**: `smtp.gmail.com` - - **SMTP Port**: `587` - - **SMTP User**: ваш email - - **SMTP Password**: пароль приложения - - **From Email**: email для отправки -4. Нажмите **"Тест IMAP"** и **"Тест SMTP"** для проверки -5. Нажмите **"Сохранить"** -6. В настройках AI ассистента выберите этот Email в поле **"Email для связи"** - -> ⚠️ **Важно для Gmail**: Создайте "Пароль приложения" в настройках безопасности Google - -**Результат**: AI будет отвечать на входящие email автоматически! - ---- - -## Шаг 8: Мониторинг и оптимизация - -### 8.1 Проверка статуса сервисов - -1. Перейдите в **Настройки** → **Интеграции** → **ИИ-ассистент** -2. Прокрутите вниз до **"🔍 Мониторинг системы"** -3. Нажмите **"🔄 Обновить статус"** -4. Проверьте статусы: - - 🟢 **Backend**: должен быть "Работает" - - 🟢 **Postgres**: должен быть "Работает" - - 🟢 **Ollama**: должен показывать количество моделей - - 🟢 **Vector Search**: должен быть "Работает" - -> ⚠️ Если что-то красное (🔴) — см. раздел "Решение проблем" ниже - -### 8.2 Анализ качества ответов - -Регулярно проверяйте качество ответов AI: - -1. **Score в тестере RAG**: - - **-300 до 0** ✅ — отличное совпадение - - **0 до 300** ⚠️ — среднее совпадение - - **>300** ❌ — совпадение не найдено - -2. **Если Score плохой**: - - Добавьте больше похожих вопросов в таблицу - - Используйте разные формулировки одного вопроса - - Увеличьте порог релевантности (например, до 0.2) - -### 8.3 Оптимизация настроек RAG - -Экспериментируйте с настройками для улучшения результатов: - -**Для более точных ответов:** -``` -Метод поиска: Семантический -Порог релевантности: 0.05 (ниже = строже) -Веса: Семантический 100% / Ключевые слова 0% -``` - -**Для более быстрых ответов:** -``` -Метод поиска: Поиск по ключевым словам -Максимальное количество результатов: 3 -``` - -**Для баланса (рекомендуется):** -``` -Метод поиска: Гибридный -Веса: Семантический 70% / Ключевые слова 30% -Порог релевантности: 0.1 -``` - ---- - -## ✅ AI Ассистент готов к работе! - -### Что у вас теперь есть - -✅ **Локальный AI ассистент** без зависимости от облака -✅ **База знаний FAQ** для ответов клиентам -✅ **Векторный поиск** для точных ответов -✅ **Настроенные правила** поведения AI -✅ **Система мониторинга** для контроля качества - -### Экономический эффект - -При правильной настройке AI ассистента вы получите: - -✅ **Автоматизацию рутинных задач** - высвобождение времени для стратегии -✅ **Повышение качества обслуживания** - AI работает 24/7 без усталости -✅ **Снижение операционных расходов** - меньше персонала на рутинных задачах -✅ **Ускорение принятия решений** - мгновенный доступ к информации - -> 💡 **Подробная информация**: См. [AI Ассистент - полное описание](./ai-assistant.md#экономический-эффект) - там детально описаны все возможности, кейсы применения и расчеты экономии. - ---- - -## 📚 Следующие шаги - -### Расширьте возможности AI - -1. **Добавьте больше таблиц**: - - База знаний для партнеров - - Инструкции для персонала - - Каталог продуктов - - База контактов - -2. **Создайте правила для разных сценариев**: - - Строгий режим (только RAG) — для финансов - - Креативный режим (больше генерации) — для маркетинга - - Гибридный режим (баланс) — для поддержки - -3. **Интегрируйте с другими системами**: - - CRM (синхронизация клиентов) - - Складская система (остатки товаров) - - Бухгалтерия (счета и оплаты) - -### Обучите команду - -1. Покажите сотрудникам, как работает AI -2. Объясните, как добавлять новые вопросы в базу -3. Установите процесс регулярного обновления базы знаний -4. Назначьте ответственного за качество ответов AI - ---- - -## 🆘 Решение проблем - -### Проблема: Ollama не запускается - -**Симптомы**: Статус "Ollama API not responding" - -**Решение**: -```bash -# Проверить контейнер -docker ps | grep ollama - -# Перезапустить -docker-compose restart ollama - -# Проверить логи -docker-compose logs ollama -``` - -### Проблема: AI отвечает неточно - -**Симптомы**: Ответы не соответствуют базе знаний - -**Решение**: -1. Проверьте Score в тестере (должен быть < 300) -2. Добавьте больше вариантов вопросов в таблицу -3. Уменьшите порог релевантности (например, до 0.05) -4. Проверьте, что столбцы имеют правильные назначения ("Вопрос для AI", "Ответ AI") - -### Проблема: Vector Search не работает - -**Симптомы**: Статус Vector Search показывает ошибку - -**Решение**: -1. Проверьте, установлена ли Embedding модель -2. Пересоберите индекс: на странице таблицы нажмите **"🔄 Пересобрать индекс"** -3. Проверьте, что таблица активирована как источник для AI - -### Проблема: AI отвечает на неправильном языке - -**Симптомы**: Ответы на английском вместо русского - -**Решение**: -1. Измените системный промт, добавив в начало: `ВСЕГДА отвечай на русском языке.` -2. Используйте модель `qwen2.5:7b` вместо `llama2:7b` -3. В правилах AI установите `"language": "ru"` - -### Проблема: Медленные ответы - -**Симптомы**: AI отвечает дольше 5-10 секунд - -**Решение**: -1. Используйте меньшую модель (`mistral:7b` вместо `qwen2.5:14b`) -2. Уменьшите `maxResults` в настройках RAG (например, до 3) -3. Отключите "Поиск синонимов" в дополнительных настройках -4. Используйте SSD для хранения моделей - ---- - -## 📖 Дополнительная документация - -### Изучите возможности AI - -- 🤖 **[AI Ассистент - полное описание](./ai-assistant.md)** - все возможности и кейсы применения -- 📊 **[Система электронных таблиц](./tables-system.md)** - техническое описание таблиц (временный) -- ⚙️ **[Конфигурация AI](./setup-ai-assistant.md#техническая-документация-для-разработчиков)** - технические детали настройки - -### Общая документация - -- 🛡️ **[Безопасность](./security.md)** - как AI защищает ваши данные -- 💼 **[Блокчейн для бизнеса](./blockchain-for-business.md)** - интеграция AI с блокчейном -- 📋 **[FAQ](./FAQ.md)** - часто задаваемые вопросы - -### Поддержка - -- 💬 **Чат поддержки**: https://hb3-accelerator.com/ -- 📧 **Email**: info@hb3-accelerator.com -- 📚 **База знаний**: https://hb3-accelerator.com - ---- - -## 🔧 Техническая документация (для разработчиков) - -### Архитектура системы AI - -``` -┌───────────────────────────────────────────────────────────┐ -│ Настройка AI Ассистента в DLE │ -├───────────────────────────────────────────────────────────┤ -│ │ -│ 🤖 AI Провайдеры: │ -│ ├── OpenAI (GPT-4, GPT-3.5) │ -│ ├── Anthropic (Claude) │ -│ ├── Google (Gemini) │ -│ └── Ollama (локальные модели) │ -│ │ -│ ⚙️ Настройки AI: │ -│ ├── System Prompt │ -│ ├── Выбор LLM модели │ -│ ├── Выбор Embedding модели │ -│ ├── Выбор RAG-таблиц │ -│ ├── Правила (Rules) │ -│ └── Настройки RAG поиска │ -│ │ -│ 📋 Правила (Rules): │ -│ ├── JSON конфигурация поведения │ -│ ├── Создание/редактирование/удаление │ -│ └── Привязка к AI ассистенту │ -│ │ -│ 🔗 Интеграции: │ -│ ├── Email (IMAP + SMTP) │ -│ └── Telegram Bot │ -│ │ -│ 🔍 RAG: │ -│ ├── Выбор таблиц для поиска │ -│ ├── Настройки поиска (гибридный/семантический) │ -│ ├── Порог релевантности │ -│ └── Извлечение ключевых слов │ -│ │ -│ 📊 Мониторинг: │ -│ ├── Статус сервисов (Backend, Ollama, Postgres) │ -│ ├── Тест RAG-функциональности │ -│ └── Отслеживание прогресса │ -│ │ -└───────────────────────────────────────────────────────────┘ -``` - -### База данных - -#### Таблица: `ai_providers_settings` - -```sql -CREATE TABLE IF NOT EXISTS ai_providers_settings ( - id SERIAL PRIMARY KEY, - provider_encrypted TEXT, -- Провайдер: openai, anthropic, google, ollama - api_key_encrypted TEXT, -- API ключ (зашифрован) - base_url_encrypted TEXT, -- Base URL для API - selected_model_encrypted TEXT, -- Выбранная LLM модель - embedding_model_encrypted TEXT, -- Выбранная Embedding модель - created_at TIMESTAMP NOT NULL DEFAULT NOW(), - updated_at TIMESTAMP NOT NULL DEFAULT NOW() -); -``` - -#### Таблица: `ai_assistant_settings` - -```sql -CREATE TABLE IF NOT EXISTS ai_assistant_settings ( - id SERIAL PRIMARY KEY, - system_prompt_encrypted TEXT, -- Системный промт - selected_rag_tables INTEGER[], -- Массив ID RAG-таблиц - languages TEXT[], -- Массив поддерживаемых языков - model_encrypted TEXT, -- Выбранная LLM модель - embedding_model_encrypted TEXT, -- Выбранная Embedding модель - rules JSONB, -- Правила (DEPRECATED) - rules_id INTEGER REFERENCES ai_assistant_rules(id), -- Ссылка на правило - telegram_settings_id INTEGER, -- Ссылка на Telegram бота - email_settings_id INTEGER, -- Ссылка на Email настройки - rag_settings JSONB, -- Настройки RAG поиска - updated_at TIMESTAMP DEFAULT NOW(), - updated_by INTEGER -); -``` - -#### Таблица: `ai_assistant_rules` - -```sql -CREATE TABLE IF NOT EXISTS ai_assistant_rules ( - id SERIAL PRIMARY KEY, - name TEXT NOT NULL, -- Название набора правил - description TEXT, -- Описание правила - rules JSONB NOT NULL, -- JSON конфигурация - rules_encrypted TEXT, -- Зашифрованная версия правил - created_at TIMESTAMP DEFAULT NOW(), - updated_at TIMESTAMP DEFAULT NOW() -); -``` - -### Backend API - -#### Настройки AI провайдеров - -- **GET** `/settings/ai-settings/:provider` — Получить настройки провайдера -- **PUT** `/settings/ai-settings/:provider` — Сохранить настройки провайдера -- **DELETE** `/settings/ai-settings/:provider` — Удалить настройки провайдера -- **GET** `/settings/ai-settings/:provider/models` — Получить список моделей -- **POST** `/settings/ai-settings/:provider/verify` — Проверить API ключ - -#### Настройки AI ассистента - -- **GET** `/settings/ai-assistant` — Получить настройки ассистента -- **PUT** `/settings/ai-assistant` — Сохранить настройки ассистента - -#### Правила AI - -- **GET** `/settings/ai-assistant-rules` — Получить все правила -- **GET** `/settings/ai-assistant-rules/:id` — Получить правило по ID -- **POST** `/settings/ai-assistant-rules` — Создать правило -- **PUT** `/settings/ai-assistant-rules/:id` — Обновить правило -- **DELETE** `/settings/ai-assistant-rules/:id` — Удалить правило - -#### Ollama (локальные модели) - -- **GET** `/ollama/status` — Проверить статус Ollama -- **GET** `/ollama/models` — Получить список моделей -- **POST** `/ollama/install` — Установить модель -- **DELETE** `/ollama/models/:modelName` — Удалить модель - -### Frontend страницы - -- **`/settings/ai`** — Главная страница интеграций -- **`/settings/ai/:provider`** — Настройки AI провайдера -- **`/settings/ai/assistant`** — Настройки AI ассистента - -### Процесс обработки сообщения - -``` -1. Пользователь → Сообщение - ↓ -2. UnifiedMessageProcessor - ↓ -3. Проверка языка (только русский) - ↓ -4. Дедупликация (хеш сообщения) - ↓ -5. Загрузка настроек (aiAssistantSettingsService) - ↓ -6. Загрузка правил (aiAssistantRulesService) - ↓ -7. RAG поиск (ragService) - ├── Семантический поиск (vector search) - ├── Поиск по ключевым словам - └── Гибридный поиск - ↓ -8. Генерация ответа (generateLLMResponse) - ├── System Prompt - ├── История разговора - ├── Контекст из RAG - └── Правила - ↓ -9. Ответ → Пользователь -``` - -### Безопасность - -- **Шифрование**: Все чувствительные поля зашифрованы с помощью AES-256 -- **Права доступа**: Только администраторы могут изменять настройки -- **Валидация**: Проверка всех входных данных и API ключей - ---- - -**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.** - -**Версия документа**: 1.0.0 -**Дата создания**: October 25, 2025 - diff --git a/docs/setup-instruction.md b/docs/setup-instruction.md deleted file mode 100644 index b8bb628..0000000 --- a/docs/setup-instruction.md +++ /dev/null @@ -1,195 +0,0 @@ - - -# Инструкция по настройке приложения Digital Legal Entity - -## 🚀 Полный процесс инициализации системы - -Этот документ описывает полный процесс подготовки приложения к работе с поддержкой блокчейна, смарт-контрактов и системы управления доступом. - ---- - -## Шаг 1: Установка софта - -1. Клонируйте репозиторий проекта на ваше локальное устройство -2. Запустите приложение через Docker Compose или локально в зависимости от конфигурации -3. Откройте веб-приложение в браузере: `http://localhost:9000` (production) или `http://localhost:5173` (dev режим) - ---- - -## Шаг 2: Подключение крипто кошелька - -1. Убедитесь, что у вас установлен браузерный кошелек (MetaMask, WalletConnect или аналог) -2. В кошельке создайте или импортируйте аккаунт с токеном управления -3. В веб-приложении нажмите на кнопку **"Подключить кошелек"** -4. Выберите тип кошелька и подтвердите подключение -5. После успешного подключения вы увидите адрес вашего аккаунта в верхнем углу - ---- - -## Шаг 3: Добавление RPC провайдеров (Безопасность → RPC провайдеры) - -1. Перейдите в **Настройки** → вкладка **Безопасность** -2. Найдите раздел **"RPC провайдеры"** -3. Нажмите кнопку **"Добавить"** -4. Заполните форму для каждой блокчейн сети, которую хотите использовать: - - **Название сети** (например: Ethereum, Polygon, BSC) - - **RPC URL** (ссылка для подключения, пример: `https://eth-mainnet.g.alchemy.com/v2/YOUR-API-KEY`) - - **ID сети** (Chain ID) -5. Нажмите **"Сохранить"** для каждого провайдера -6. Система автоматически проверит корректность подключения - -> ⚠️ **Важно**: Получите API ключи от провайдеров (Alchemy, Infura, Quicknode и т.д.) перед добавлением - ---- - -## Шаг 4: Настройка мультидеплоя смарт контрактов - -1. Перейдите в **Настройки** → вкладка **Блокчейн** -2. Заполните форму -3. Нажмите **"Запустить деплой"** - ---- - -## Шаг 5: Завершение деплоя и сохранение адреса контракта - -1. Ожидайте завершения деплоя (зависит от сети, обычно 30-120 секунд) -2. После успешного завершения откроется страница **"Управление контрактами"** -3. **Копируйте адрес развернутого контракта** (обычно он выглядит как: `0x742d35Cc6634C0532925a3b844Bc...`) - ---- - -## Шаг 6: Настройка аутентификации через смарт контракт - -1. Вернитесь в **Настройки** → вкладка **Аутентификация** -2. В поле **"Адрес смарт контракта"** вставьте адрес, скопированный на шаге 5 -3. Установите пороги для управления доступом: - - **Минимальное количество токенов для редактирования** (например: 100 токенов) - - **Минимальное количество токенов для просмотра** (например: 1 токен) - ---- - -## Шаг 7: Настройка ИИ и базы данных - -1. Перейдите в **Настройки** → вкладка **ИИ** -2. Откройте подраздел **"База данных"** -3. Замените дефолтные пароли -4. Нажмите **"Сгенерировать новый ключ шифрования"** - - Система автоматически создаст криптографический ключ - - **Сохраните ключ в безопасном месте** (он понадобится для восстановления данных) - ---- - -## Шаг 8: Настройка доступа через интернет (опционально) - -**Если вам нужен доступ к веб приложению извне через интернет:** - -1. Перейдите в **Настройки** → вкладка **Сервер** -2. На странице **Сервер** выберите **WEB SSH** или иной подходящий сервис -3. Заполните форму для миграции локального приложения на виртуальное устройство с: - - **Публичным IP адресом** - - **Подключением к вашему доменному имени** -4. Нажмите **"Опубликовать"** -5. Дождитесь завершения процесса миграции - -> ℹ️ **Примечание**: Этот шаг требует наличия зарегистрированного доменного имени и доступа к DNS настройкам - ---- - -## Шаг 9: Настройка юридических документов для работы с персональными данными - -### 9.1 Заполнение юридической информации о компании - -1. Перейдите в **CRM** → раздел **Контент** -2. Найдите и откройте форму **"Юридическая информация компании"** -3. Заполните все необходимые поля: - - **Полное наименование организации** (юридическое название) - - **Краткое наименование** - - **Организационно-правовая форма** (ООО, ИП, АО и т.д.) - - **Юридический адрес** - - **Фактический адрес** (если отличается) - - **ИНН / ОГРН / КПП** (регистрационные данные) - - **Контактные данные** (телефон, email, сайт) - - **Ответственное лицо за обработку персональных данных** (ФИО, должность) - - **Применимая юрисдикция** (GDPR, CCPA, российское законодательство и т.д.) -4. Нажмите **"Сохранить"** - -> 💡 **Подсказка**: Все введенные данные автоматически подставятся во все шаблоны юридических документов - -### 9.2 Работа с шаблонами документов - -1. В разделе **Контент** перейдите в подраздел **"Шаблоны"** -2. Выберите необходимые шаблоны документов, требуемые регуляторами: - - **Политика конфиденциальности** - - **Пользовательское соглашение** - - **Согласие на обработку персональных данных** - - **Политика использования cookies** -3. Для каждого шаблона: - - Нажмите **"Предварительный просмотр"** для проверки автоматически заполненных данных - - При необходимости отредактируйте специфичные параметры обработки данных - - Выберите действие: - - **"Опубликовать для публичного использования"** — документ будет доступен на сайте - - **"Опубликовать для внутреннего использования"** — документ доступен только внутри CRM - - **"Распечатать"** — экспорт в PDF для печати или подписания -4. Подтвердите публикацию -5. Система автоматически добавит документы на соответствующие страницы приложения - -> ⚠️ **Важно**: Рекомендуется проконсультироваться с юристом перед публикацией документов для обеспечения полного соответствия требованиям законодательства - ---- - -## ✅ Приложение готово к работе! - -После завершения всех шагов ваше приложение полностью сконфигурировано и готово к использованию. - -**Следующие этапы:** -- 📖 Настройка AI ассистента (см. документ: `setup-ai-assistant.md`) -- 🔐 Управление смарт контрактами (см. документ: `manage-smart-contracts.md`) - ---- - -## 🆘 Рекомендации по безопасности - -✓ Сохраняйте адреса контрактов и ключи шифрования в безопасном месте -✓ Используйте мощные пароли для БД -✓ Регулярно создавайте резервные копии конфигурации -✓ Никогда не делитесь приватными ключами кошелька -✓ Используйте HTTPS для доступа к приложению в продакшене - ---- - -## 📝 Что дальше? - -После завершения базовой настройки вы можете: -1. Добавлять пользователей и управлять их разрешениями -2. Создавать группы для совместной работы -3. Настраивать AI ассистента для автоматизации задач -4. Управлять смарт контрактами для расширения функциональности -5. Интегрировать внешние сервисы и боты - ---- - -## 📚 Дополнительная документация - -### Изучите возможности DLE -- 🤖 **[AI Ассистент](./ai-assistant.md)** - узнайте как AI может стать вторым пилотом для вашей команды -- 💼 **[Блокчейн для бизнеса](./blockchain-for-business.md)** - как токенизация активов решает бизнес-задачи -- 🛡️ **[Безопасность](./security.md)** - многоуровневая защита вашего бизнеса - -### Техническая информация -- 🔗 **[Техническая документация по блокчейну](./blockchain-integration-technical.md)** - для разработчиков -- 📋 **[FAQ](./FAQ.md)** - часто задаваемые вопросы -- 📝 **[Описание приложения](./application-description.md)** - обзор функциональности - -### Поддержка -- 💬 **Чат поддержки**: https://hb3-accelerator.com/ -- 📧 **Email**: info@hb3-accelerator.com \ No newline at end of file diff --git a/docs/system-messages-management.md b/docs/system-messages-management.md deleted file mode 100644 index 8b3e386..0000000 --- a/docs/system-messages-management.md +++ /dev/null @@ -1,132 +0,0 @@ -# Техническое задание: управление системными сообщениями - -## 1. Цель и контекст -- Обеспечить управляемое отображение системных сообщений на главной странице (`/`, компонент `HomeView.vue`) и добавить административный интерфейс для их создания и модерации в разделе контента (`/content`, компонент `ContentListView.vue`). -- Системные сообщения должны поддерживать статусы «черновик» и «опубликовано», храниться в базе данных и быть доступны через REST API. - -## 2. Актуальное состояние -- Главная страница строится компонентом `HomeView.vue` и отображает чат ассистента (`ChatInterface.vue`), в котором выделены системные сообщения (`Message.vue`) по признаку `message.role === 'system'`. -- Раздел контента (`ContentListView.vue`) содержит карточки переходов: «Создать страницу», «Шаблоны», «Публичные», «Настройка», «Внутренние». Карточки ведут на существующие маршруты `content-create`, `content-templates`, `content-published`, `content-settings`, `content-internal`. -- В проекте отсутствуют сущности и API для системных сообщений; текущий `pagesService.js` работает только со страницами (`/pages`). - -## 3. Новые пользовательские сценарии -- **Просмотр системных сообщений (главная, `/`):** - - Опубликованные системные сообщения подгружаются в чат ассистента и отображаются в виде свернутых карточек с кликабельным заголовком. - - При клике на заголовок сообщение раскрывается: в ленте чата отображается полный текст сообщения **или** отправляется предзаготовленный ответ от ИИ ассистента (контент «ответа» хранится вместе с сообщением и выбирается по флагу `reply_type`). - - Сообщения должны явно маркироваться как системные (цвет, иконка). При повторном открытии пользователь видит последнее состояние раскрытия; возможно локальное запоминание «прочитано». -- **Раздел «Системные сообщения» (`/content`):** - - На странице `/content` появляется новая карточка «Системные сообщения» с кнопкой «Подробнее». Переход ведёт на страницу с пользовательской таблицей (`/content/system-messages/table`), построенной на уже существующих компонентах таблиц (см. `UserTablesList.vue`), без отдельного дэшборда карточек. - - Таблица отображает системные сообщения построчно, с возможностью множественного выбора через чекбоксы; доступные массовые действия: публикация, снятие с публикации, перевод в черновики, удаление. - - Для каждого сообщения по клику «Подробнее» (внутри строки) открывается просмотр/редактирование с формой (см. ниже). -- **Создание/редактирование (`/content/system-messages/create`, `/content/system-messages/:id/edit`):** - - Форма с полями: заголовок, краткое описание, основной текст (Markdown/HTML), тип ответа (`inline` — показывать контент, `assistant_reply` — отправлять подготовленный ответ от ассистента), поле «Ответ ассистента» (активно при `assistant_reply`), тег важности (info/warning/danger), дата начала публикации (опционально), дата окончания (опционально), флаг отображения гостям. - - Кнопки: «Сохранить как черновик», «Опубликовать». При редактировании — «Обновить», «Снять с публикации», «Удалить». - - Проверки: обязательность заголовка и основного текста (или ответа ассистента в соответствующем режиме); валидация дат (окончание ≥ начало). -- **Работа с таблицей системных сообщений:** - - Колонки: чекбокс выбора, заголовок (кликабелен), статус, тип ответа, период действия, целевая аудитория (гости/авторизованные/все), дата создания, автор. - - Массовые действия выполняются для выбранных строк; одиночные действия доступны через контекстное меню/кнопки в строке (редактировать, опубликовать, снять с публикации, удалить). - -## 4. Требования к интерфейсу -- В `ContentListView.vue` в сетку `management-blocks` добавить карточку «Системные сообщения» с кнопкой `Подробнее`. По дизайну карточка должна соответствовать существующим блокам (заголовок, описание, кнопка). -- Страница с таблицей системных сообщений: - - Использовать `BaseLayout` и локальные стили (`scoped`). - - Таблица поддерживает сортировку, фильтрацию по статусам и поиск по заголовку. - - Чекбоксы в шапке и строках для массового выбора; панель действий появляется при наличии выбора. - - Кнопка «Создать сообщение» открывает форму создания. -- Форма создания/редактирования: - - Rich-text (минимум Markdown) с предпросмотром и счётчиками символов/слов. - - Переключатель режима показа (`inline`/`assistant_reply`) с условным отображением поля «Ответ ассистента» (можно использовать ``). - - Поле для выбора иконки/цвета по `severity` (статические пресеты). -- Главная страница: - - Системные сообщения отображаются в блоке чата как свернутые карточки (`system-message-collapsed`). При клике заголовок разворачивает карточку (`system-message-expanded`) или инициирует отправку ассистента (UI показывает «сообщение от ассистента»). - - Для развёрнутых сообщений предусмотреть кнопку «Свернуть» и (опционально) «Отметить как прочитанное». Состояние хранить в `localStorage`. - -## 5. Маршрутизация и компоненты -- Добавить маршруты в `router/index.js`: -- - `/content/system-messages/table` → `SystemMessagesTableView.vue` -- - `/content/system-messages/create` → `SystemMessageCreateView.vue` -- - `/content/system-messages/:id` → `SystemMessageDetailsView.vue` (просмотр) -- - `/content/system-messages/:id/edit` → `SystemMessageEditView.vue` -- При необходимости для модальных/вложенных маршрутов можно использовать дочерние маршруты или именованные вью. -- Создать соответствующие Vue-компоненты в `src/views/content/system-messages/` и общий набор переиспользуемых элементов (таблица, форма, фильтры, массовые действия) в `src/components/system-messages/`. -- Создать сервис `src/services/systemMessagesService.js` с методами для нового API. - -## 6. Требования к API и данным -- **Новая таблица** `system_messages` (PostgreSQL): - - `id` (uuid, pk) - - `title` (text, not null) - - `summary` (text, nullable) - - `content` (text, not null) - - `reply_type` (enum: inline, assistant_reply; default inline) - - `assistant_reply_content` (text, nullable; требуется при `reply_type = assistant_reply`) - - `severity` (enum: info, warning, danger; default info) - - `status` (enum: draft, published; not null) - - `visible_for` (enum: all, authenticated, guests; default all) - - `publish_at` (timestamp, nullable) - - `expire_at` (timestamp, nullable) - - `created_at`, `updated_at` - - `created_by`, `updated_by` (references users/identities, nullable) - - `slug` (text, уникальный, для адресации по ссылке при необходимости) -- **REST API (Express):** - - `GET /system-messages` (пагинация, фильтры по статусу, поиску) - - `GET /system-messages/published` (фильтрация по дате/аудитории; публичная) - - `GET /system-messages/:id` (доступ только авторизованным редакторам) - - `POST /system-messages` (создание; права `MANAGE_LEGAL_DOCS`) - - `PATCH /system-messages/:id` (редактирование; проверка статусов) - - `DELETE /system-messages/:id` (мягкое удаление или физическое) - - `POST /system-messages/:id/publish` и `POST /system-messages/:id/unpublish` (опционально, если не использовать PATCH) -- Все защищённые эндпоинты должны требовать авторизацию и права (см. `permissions.js`, `usePermissions`). -- Добавить новую миграцию (`backend/scripts/run-migrations.js`) и ORM/SQL-файлы в существующем формате проекта. -- Обновить логирование и обработку ошибок `winston`, добавить валидацию входных данных (например, `Joi` или кастомную). - -## 7. Логика отображения на фронтенде -- `HomeView.vue`: - - При инициализации запрашивать опубликованные системные сообщения (учитывая текущую аудиторию) через `systemMessagesService.getPublished({ includeExpired: false })`. - - Кэшировать ответ в сторе или локальном состоянии; при подписке на WebSocket можно предусмотреть `system_message_updated` событие. - - Добавить обработчик раскрытия: по клику на заголовок либо подставлять полный текст сообщения (`inline`), либо инициировать цепочку отправки `assistant_reply_content` в чат (без участия пользователя). - - Добавить обработчик скрытия сообщения, сохраняющий идентификатор в `localStorage` и фильтрующий локально. -- `ContentListView.vue`: - - Добавить новую карточку «Системные сообщения» в сетку `management-blocks`, не нарушая адаптивную сетку (обновить `grid-template-columns` при необходимости). -- Страницы списков: - - Реализовать пагинацию (lazy loading или обычная), сортировку по дате. - - Для статусов использовать цветовые бейджи (info/warning/danger). -- Форма создания: - - Поддерживать сабмит через `yarn lint`-friendly код; валидация на клиенте (например, с использованием `computed`/`watch`). - - При успешной публикации перенаправлять на список опубликованных; при сохранении черновика — оставаться на странице с уведомлением. - -## 8. Требования к безопасности и доступу -- Сценарии создания/изменения доступны только ролям с `PERMISSIONS.MANAGE_LEGAL_DOCS`. -- Публичный список (`GET /system-messages/published`) фильтрует по: - - `status === 'published'`. - - `publish_at <= now()` (или null). - - `expire_at > now()` (или null). - - `visible_for` проверяется на основе контекста (гость/авторизованный). -- При выдаче через чат скрывать поля `created_by`, `updated_by`, внутренние метки. -- Учитывать CSRF, CORS, rate-limit (перенять конфиг из существующих роутов). - -## 9. Тестирование -- **Backend:** - - Юнит-тесты для CRUD в `tests/system-messages/*.test.js` (Mocha). - - Проверка фильтров publish/expire и доступа по ролям. - - Тест миграции (откат/применение). -- **Frontend:** - - Юнит-тесты Vue (если настроены) для основных компонентов (форма, список). - - E2E (при наличии) — сценарий: создание черновика → публикация → отображение на главной. -- **Регрессионные проверки:** - - Убедиться, что существующий список контента и чат ассистента продолжают работать без ошибок (`yarn lint`, `yarn test`). - -## 10. Интеграция и DevOps -- Обновить `docker-compose.yml` при необходимости (например, добавить миграции в стартовый процесс). -- Убедиться, что новые переменные окружения (если будут, например, лимиты количества сообщений) документированы в `README.md` и `setup-instruction.md`. -- Добавить скрипт seeding (опционально) для тестовых системных сообщений. - -## 11. Открытые вопросы -- Нужно ли хранить историю публикаций (auditing)? Если да — предусмотреть таблицу `system_messages_history`. -- Требуется ли поддержка многоязычности? (При отсутствии — ограничение на один язык, RU). -- Нужно ли уведомление по WebSocket при появлении новых сообщений? (Если да — добавить событие в `wsHub.js`). - -## 12. Итоговые артефакты -- Backend: новые маршруты, контроллеры, сервис, миграция. -- Frontend: новые страницы и сервис, обновлённые маршруты и компоненты `HomeView`, `ContentListView`. -- Документация: обновление `README.md` (раздел запуск), `application-description.md` или `tables-system.md` при изменении схем, настоящая спецификация. - diff --git a/docs/tables-system.md b/docs/tables-system.md deleted file mode 100644 index 41351eb..0000000 --- a/docs/tables-system.md +++ /dev/null @@ -1,1639 +0,0 @@ -# Система электронных таблиц в DLE - -> **Временный документ для внутреннего анализа** - ---- - -## 📋 Содержание - -1. [Обзор системы](#обзор-системы) -2. [Архитектура базы данных](#архитектура-базы-данных) -3. [Типы полей](#типы-полей) -4. [Функциональные возможности](#функциональные-возможности) -5. [Связи между таблицами](#связи-между-таблицами) -6. [Интеграция с AI (RAG)](#интеграция-с-ai-rag) -7. [API Reference](#api-reference) -8. [Примеры использования](#примеры-использования) -9. [Безопасность](#безопасность) - ---- - -## Обзор системы - -### Что это? - -Система электронных таблиц в DLE — это **полнофункциональная база данных с графическим интерфейсом**, аналог **Notion Database** или **Airtable**, встроенный в приложение. - -### Ключевые особенности - -``` -┌─────────────────────────────────────────────────────────┐ -│ Электронные таблицы DLE │ -├─────────────────────────────────────────────────────────┤ -│ │ -│ ✅ 6 типов полей (text, number, relation, lookup, etc.)│ -│ ✅ Связи между таблицами (1:1, 1:N, N:N) │ -│ ✅ Lookup и подстановка данных │ -│ ✅ Фильтрация и сортировка │ -│ ✅ Real-time обновления (WebSocket) │ -│ ✅ Интеграция с AI (RAG для поиска) │ -│ ✅ Шифрование всех данных (AES-256) │ -│ ✅ Плейсхолдеры для API доступа │ -│ ✅ Каскадное удаление │ -│ ✅ Массовые операции │ -│ │ -└─────────────────────────────────────────────────────────┘ -``` - -### Отличия от Excel/Google Sheets - -| Функция | Excel/Sheets | DLE Tables | -|---------|--------------|------------| -| **Типизация данных** | Слабая | Строгая (6 типов) | -| **Связи между таблицами** | Нет | Да (relation, lookup) | -| **AI поиск** | Нет | Да (RAG, векторный поиск) | -| **Real-time обновления** | Частичная | Полная (WebSocket) | -| **Шифрование** | Нет | AES-256 для всех данных | -| **API доступ** | Ограниченный | Полный REST API | -| **Права доступа** | Базовые | Детальные (по ролям) | - ---- - -## Архитектура базы данных - -### Схема таблиц (PostgreSQL) - -```sql -┌──────────────────────────────────────────────────────────┐ -│ user_tables │ -├──────────────────────────────────────────────────────────┤ -│ id SERIAL PRIMARY KEY │ -│ name_encrypted TEXT NOT NULL │ -│ description_encrypted TEXT │ -│ is_rag_source_id INTEGER (ссылка на is_rag_source) │ -│ created_at TIMESTAMP │ -│ updated_at TIMESTAMP │ -└──────────────────────────────────────────────────────────┘ - ↓ -┌──────────────────────────────────────────────────────────┐ -│ user_columns │ -├──────────────────────────────────────────────────────────┤ -│ id SERIAL PRIMARY KEY │ -│ table_id INTEGER → user_tables(id) │ -│ name_encrypted TEXT NOT NULL │ -│ type_encrypted TEXT NOT NULL │ -│ placeholder_encrypted TEXT (для API) │ -│ placeholder TEXT (незашифрованный) │ -│ options JSONB (настройки) │ -│ order INTEGER (порядок отображения) │ -│ created_at TIMESTAMP │ -│ updated_at TIMESTAMP │ -└──────────────────────────────────────────────────────────┘ - ↓ -┌──────────────────────────────────────────────────────────┐ -│ user_rows │ -├──────────────────────────────────────────────────────────┤ -│ id SERIAL PRIMARY KEY │ -│ table_id INTEGER → user_tables(id) │ -│ order INTEGER (порядок строк) │ -│ created_at TIMESTAMP │ -│ updated_at TIMESTAMP │ -└──────────────────────────────────────────────────────────┘ - ↓ -┌──────────────────────────────────────────────────────────┐ -│ user_cell_values │ -├──────────────────────────────────────────────────────────┤ -│ id SERIAL PRIMARY KEY │ -│ row_id INTEGER → user_rows(id) │ -│ column_id INTEGER → user_columns(id) │ -│ value_encrypted TEXT (зашифрованное значение) │ -│ created_at TIMESTAMP │ -│ updated_at TIMESTAMP │ -│ UNIQUE(row_id, column_id) ← Одна ячейка = одно значение│ -└──────────────────────────────────────────────────────────┘ - ↓ -┌──────────────────────────────────────────────────────────┐ -│ user_table_relations │ -├──────────────────────────────────────────────────────────┤ -│ id SERIAL PRIMARY KEY │ -│ from_row_id INTEGER → user_rows(id) │ -│ column_id INTEGER → user_columns(id) │ -│ to_table_id INTEGER → user_tables(id) │ -│ to_row_id INTEGER → user_rows(id) │ -│ created_at TIMESTAMP │ -│ updated_at TIMESTAMP │ -└──────────────────────────────────────────────────────────┘ -``` - -### Каскадное удаление - -``` -Удаление таблицы (user_tables) - ↓ - ├── Удаляет все столбцы (user_columns) - ├── Удаляет все строки (user_rows) - │ └── Удаляет все значения ячеек (user_cell_values) - └── Удаляет все связи (user_table_relations) -``` - -**Важно**: Используется `ON DELETE CASCADE` для автоматической очистки. - -### Индексы для производительности - -```sql --- Индексы на связях (user_table_relations) -CREATE INDEX idx_user_table_relations_from_row ON user_table_relations(from_row_id); -CREATE INDEX idx_user_table_relations_column ON user_table_relations(column_id); -CREATE INDEX idx_user_table_relations_to_table ON user_table_relations(to_table_id); -CREATE INDEX idx_user_table_relations_to_row ON user_table_relations(to_row_id); -``` - -**Эффект**: Быстрая фильтрация и поиск по связанным таблицам. - ---- - -## Типы полей - -### 1. Text (Текст) - -**Описание**: Обычное текстовое поле - -```json -{ - "type": "text", - "options": null -} -``` - -**Использование**: -- Имена -- Описания -- Email -- URL -- Любой текст - -### 2. Number (Число) - -**Описание**: Числовое поле - -```json -{ - "type": "number", - "options": null -} -``` - -**Использование**: -- Цены -- Количество -- Рейтинги -- Проценты - -### 3. Multiselect (Множественный выбор) - -**Описание**: Выбор нескольких значений из списка - -```json -{ - "type": "multiselect", - "options": { - "choices": ["Вариант 1", "Вариант 2", "Вариант 3"] - } -} -``` - -**Использование**: -- Теги -- Категории -- Статусы -- Навыки - -### 4. Multiselect-Relation (Мультивыбор из таблицы) - -**Описание**: Множественный выбор строк из другой таблицы - -```json -{ - "type": "multiselect-relation", - "options": { - "relatedTableId": 5, - "relatedColumnId": 12 - } -} -``` - -**Использование**: -- Связь Контактов → Теги (N:N) -- Связь Задач → Исполнители (N:N) -- Связь Продуктов → Категории (N:N) - -**Хранение**: В таблице `user_table_relations` создается несколько записей: -``` -from_row_id=100, column_id=3, to_table_id=5, to_row_id=20 -from_row_id=100, column_id=3, to_table_id=5, to_row_id=21 -from_row_id=100, column_id=3, to_table_id=5, to_row_id=22 -``` - -### 5. Relation (Связь) - -**Описание**: Связь с одной строкой из другой таблицы (1:1 или 1:N) - -```json -{ - "type": "relation", - "options": { - "relatedTableId": 3, - "relatedColumnId": 8 - } -} -``` - -**Использование**: -- Задача → Проект (N:1) -- Контакт → Компания (N:1) -- Заказ → Клиент (N:1) - -**Хранение**: В `user_table_relations` создается одна запись: -``` -from_row_id=50, column_id=2, to_table_id=3, to_row_id=15 -``` - -### 6. Lookup (Подстановка) - -**Описание**: Автоматическая подстановка значения из связанной таблицы - -```json -{ - "type": "lookup", - "options": { - "relatedTableId": 4, - "relatedColumnId": 10, - "lookupColumnId": 11 // Какое поле подставлять - } -} -``` - -**Пример**: -``` -Таблица "Заказы" -├── order_id (text) -├── product (relation → Продукты) -└── product_price (lookup → Продукты.price) - -Когда выбираешь product, автоматически подставляется цена! -``` - -**Использование**: -- Цены из справочника -- Email из контактов -- Статусы из связанных задач - ---- - -## Функциональные возможности - -### 1. CRUD операции - -#### Создание таблицы - -```javascript -// Frontend -await tablesService.createTable({ - name: "Контакты", - description: "База клиентов", - isRagSourceId: 2 // Источник для AI -}); - -// Backend: POST /tables -// Шифрует name и description с AES-256 -``` - -#### Добавление столбца - -```javascript -await tablesService.addColumn(tableId, { - name: "Email", - type: "text", - order: 2, - purpose: "contact" // Для специальных полей -}); - -// Backend: POST /tables/:id/columns -// Генерирует уникальный placeholder: "email", "email_1", ... -``` - -#### Добавление строки - -```javascript -await tablesService.addRow(tableId); - -// Backend: POST /tables/:id/rows -// Автоматически индексирует в vector store для AI -``` - -#### Обновление ячейки (Upsert) - -```javascript -await tablesService.saveCell({ - row_id: 123, - column_id: 5, - value: "new@email.com" -}); - -// Backend: POST /tables/cell -// INSERT ... ON CONFLICT ... DO UPDATE -// Автоматически обновляет vector store -``` - -#### Удаление строки - -```javascript -await tablesService.deleteRow(rowId); - -// Backend: DELETE /tables/row/:rowId -// Пересобирает vector store (rebuild) -``` - -#### Удаление столбца - -```javascript -await tablesService.deleteColumn(columnId); - -// Backend: DELETE /tables/column/:columnId -// Каскадно удаляет: -// 1. Все связи (user_table_relations) -// 2. Все значения ячеек (user_cell_values) -// 3. Сам столбец -``` - -#### Удаление таблицы - -```javascript -await tablesService.deleteTable(tableId); - -// Backend: DELETE /tables/:id -// Требуется: req.session.userAccessLevel?.hasAccess -// Каскадно удаляет все связанные данные -``` - -### 2. Фильтрация данных - -#### По продукту - -```javascript -GET /tables/5/rows?product=Premium - -// Backend фильтрует строки: -filtered = rows.filter(r => r.product === 'Premium'); -``` - -#### По тегам - -```javascript -GET /tables/5/rows?tags=VIP,B2B - -// Backend фильтрует строки с любым из тегов: -filtered = rows.filter(r => - r.userTags.includes('VIP') || r.userTags.includes('B2B') -); -``` - -#### По связям (Relation) - -```javascript -GET /tables/5/rows?relation_12=45,46 - -// Фильтр строк, связанных с to_row_id = 45 или 46 -// через столбец column_id = 12 -``` - -#### По мультивыбору (Multiselect) - -```javascript -GET /tables/5/rows?multiselect_8=10,11,12 - -// Все выбранные значения должны присутствовать -``` - -### 3. Placeholder система - -**Автоматическая генерация**: - -```javascript -// Функция: generatePlaceholder(name, existingPlaceholders) - -"Имя клиента" → "imya_klienta" -"Email" → "email" -"Email" (2-й раз) → "email_1" -"123" → "column" (fallback) -"Цена-$" → "tsena" -``` - -**Транслитерация**: -```javascript -const cyrillicToLatinMap = { - а: 'a', б: 'b', в: 'v', г: 'g', д: 'd', - е: 'e', ё: 'e', ж: 'zh', з: 'z', и: 'i', - // ... полная карта -}; -``` - -**Использование**: -```javascript -// API доступ к данным через placeholder -GET /tables/5/data?fields=email,phone,imya_klienta -``` - -### 4. Порядок строк (Order) - -```javascript -// Изменение порядка строк (drag-n-drop) -await tablesService.updateRowsOrder(tableId, [ - { rowId: 100, order: 0 }, - { rowId: 101, order: 1 }, - { rowId: 102, order: 2 } -]); - -// Backend: PATCH /tables/:id/rows/order -// Обновляет поле "order" для каждой строки -``` - -### 5. Real-time обновления (WebSocket) - -```javascript -// Backend отправляет уведомления при изменениях -broadcastTableUpdate(tableId); // Обновление таблицы -broadcastTableRelationsUpdate(); // Обновление связей -broadcastTagsUpdate(null, rowId); // Обновление тегов - -// Frontend подписывается на события -socket.on('table-update', (data) => { - if (data.tableId === currentTableId) { - reloadTableData(); - } -}); -``` - -### 6. Массовые операции - -```javascript -// Выбор нескольких строк (checkbox) -const selectedRows = [100, 101, 102]; - -// Массовое удаление -for (const rowId of selectedRows) { - await tablesService.deleteRow(rowId); -} - -// После удаления: автоматический rebuild vector store -``` - ---- - -## Связи между таблицами - -### Типы связей - -#### 1. One-to-Many (N:1) - Relation - -**Пример**: Задачи → Проекты - -``` -Таблица "Задачи" Таблица "Проекты" -├── task_1 → project_id=5 ├── project_5 (Сайт) -├── task_2 → project_id=5 └── project_6 (API) -└── task_3 → project_id=6 -``` - -**Хранение**: -```sql -user_table_relations -├── from_row_id=task_1, column_id=3, to_table_id=2, to_row_id=project_5 -├── from_row_id=task_2, column_id=3, to_table_id=2, to_row_id=project_5 -└── from_row_id=task_3, column_id=3, to_table_id=2, to_row_id=project_6 -``` - -#### 2. Many-to-Many (N:N) - Multiselect-Relation - -**Пример**: Контакты → Теги - -``` -Таблица "Контакты" Таблица "Теги" -├── contact_1 → [VIP, B2B] ├── tag_1 (VIP) -├── contact_2 → [VIP] ├── tag_2 (B2B) -└── contact_3 → [B2B, Local] └── tag_3 (Local) -``` - -**Хранение**: -```sql -user_table_relations -├── from_row_id=contact_1, column_id=5, to_table_id=3, to_row_id=tag_1 -├── from_row_id=contact_1, column_id=5, to_table_id=3, to_row_id=tag_2 -├── from_row_id=contact_2, column_id=5, to_table_id=3, to_row_id=tag_1 -├── from_row_id=contact_3, column_id=5, to_table_id=3, to_row_id=tag_2 -└── from_row_id=contact_3, column_id=5, to_table_id=3, to_row_id=tag_3 -``` - -#### 3. Lookup (Подстановка) - -**Пример**: Заказы → Цена товара - -``` -Таблица "Заказы" -├── order_id (text) -├── product (relation → Товары) -└── price (lookup → Товары.price) - -Таблица "Товары" -├── product_name (text) -└── price (number) -``` - -**Как работает**: -1. Выбираете `product = "Ноутбук"` (связь с товаром) -2. `price` автоматически подставляется из `Товары.price` -3. Если цена товара изменится, lookup обновится - -### API для работы со связями - -```javascript -// Получить все связи строки -GET /tables/:tableId/row/:rowId/relations - -// Добавить связь -POST /tables/:tableId/row/:rowId/relations -Body: { - column_id: 12, - to_table_id: 5, - to_row_id: 45 -} - -// Добавить несколько связей (multiselect) -POST /tables/:tableId/row/:rowId/relations -Body: { - column_id: 12, - to_table_id: 5, - to_row_ids: [45, 46, 47] -} - -// Удалить связь -DELETE /tables/:tableId/row/:rowId/relations/:relationId -``` - ---- - -## Интеграция с AI (RAG) - -### Векторный поиск - -Таблицы используются как **база знаний для AI ассистента**. - -#### Автоматическая индексация - -**При создании/изменении строки**: - -```javascript -// Backend: POST /tables/:id/rows -const rows = await getTableRows(tableId); -const upsertRows = rows - .filter(r => r.row_id && r.text) - .map(r => ({ - row_id: r.row_id, - text: r.text, // Вопрос (question column) - metadata: { - answer: r.answer, // Ответ (answer column) - product: r.product, // Фильтр по продукту - userTags: r.userTags, // Фильтр по тегам - priority: r.priority // Приоритет - } - })); - -if (upsertRows.length > 0) { - await vectorSearchClient.upsert(tableId, upsertRows); -} -``` - -**При удалении строки**: - -```javascript -// Backend: DELETE /tables/row/:rowId -const rows = await getTableRows(tableId); -const rebuildRows = /* ... */; - -if (rebuildRows.length > 0) { - await vectorSearchClient.rebuild(tableId, rebuildRows); -} -``` - -#### Специальные поля для RAG - -```javascript -// Столбцы с purpose -{ - "type": "text", - "options": { - "purpose": "question" // Вопрос для AI - } -} - -{ - "type": "text", - "options": { - "purpose": "answer" // Ответ AI - } -} - -{ - "type": "multiselect", - "options": { - "purpose": "product" // Фильтр по продукту - } -} - -{ - "type": "multiselect", - "options": { - "purpose": "userTags" // Фильтр по тегам - } -} -``` - -#### Ручная пересборка индекса - -```javascript -// Frontend (только для админов) -await tablesService.rebuildIndex(tableId); - -// Backend: POST /tables/:id/rebuild-index -// Требуется: req.session.userAccessLevel?.hasAccess -const { questionCol, answerCol } = await getQuestionAnswerColumnIds(tableId); -const rows = await getRowsWithQA(tableId, questionCol, answerCol); - -if (rows.length > 0) { - await vectorSearchClient.rebuild(tableId, rows); -} -``` - -#### Как AI использует таблицы - -``` -1. Пользователь задает вопрос AI: - "Как вернуть товар?" - -2. AI делает векторный поиск: - vectorSearch.search(tableId, query, top_k=3) - -3. Находит похожие вопросы в таблице: - - row_id: 123 - - text: "Как оформить возврат товара?" - - score: -250 (близко к порогу 300) - - metadata: { answer: "Возврат в течение 14 дней..." } - -4. AI возвращает ответ из metadata.answer - -5. Если не нашел (score > 300): - AI генерирует ответ через LLM (Ollama) -``` - -#### Фильтрация по продуктам и тегам - -```javascript -// Поиск только по продукту "Premium" -const results = await vectorSearch.search(tableId, query, 3); -const filtered = results.filter(r => r.metadata.product === 'Premium'); - -// Поиск только по тегам "VIP" или "B2B" -const filtered = results.filter(r => - r.metadata.userTags.includes('VIP') || - r.metadata.userTags.includes('B2B') -); -``` - ---- - -## API Reference - -### Таблицы - -#### GET /tables - -Получить список всех таблиц - -**Ответ**: -```json -[ - { - "id": 1, - "name": "Контакты", - "description": "База клиентов", - "is_rag_source_id": 2, - "created_at": "2025-01-15T10:00:00Z", - "updated_at": "2025-01-15T10:00:00Z" - } -] -``` - -#### POST /tables - -Создать новую таблицу - -**Запрос**: -```json -{ - "name": "Контакты", - "description": "База клиентов", - "isRagSourceId": 2 -} -``` - -**Ответ**: Объект созданной таблицы - -#### GET /tables/:id - -Получить структуру и данные таблицы - -**Ответ**: -```json -{ - "name": "Контакты", - "description": "База клиентов", - "columns": [ - { - "id": 1, - "table_id": 1, - "name": "Email", - "type": "text", - "placeholder": "email", - "options": null, - "order": 0 - } - ], - "rows": [ - { - "id": 100, - "table_id": 1, - "order": 0, - "created_at": "2025-01-15T10:00:00Z" - } - ], - "cellValues": [ - { - "id": 500, - "row_id": 100, - "column_id": 1, - "value": "user@example.com" - } - ] -} -``` - -#### PATCH /tables/:id - -Обновить метаданные таблицы - -**Запрос**: -```json -{ - "name": "Клиенты", - "description": "Обновленное описание" -} -``` - -#### DELETE /tables/:id - -Удалить таблицу (только для админов) - -**Требования**: `req.session.userAccessLevel?.hasAccess === true` - -### Столбцы - -#### POST /tables/:id/columns - -Добавить столбец - -**Запрос**: -```json -{ - "name": "Email", - "type": "text", - "order": 2, - "purpose": "contact" -} -``` - -#### PATCH /tables/column/:columnId - -Обновить столбец - -**Запрос**: -```json -{ - "name": "Новое название", - "type": "text", - "order": 5 -} -``` - -#### DELETE /tables/column/:columnId - -Удалить столбец (каскадное удаление всех значений) - -### Строки - -#### POST /tables/:id/rows - -Добавить строку - -**Ответ**: Объект созданной строки - -#### DELETE /tables/row/:rowId - -Удалить строку - -#### PATCH /tables/:id/rows/order - -Изменить порядок строк - -**Запрос**: -```json -{ - "order": [ - { "rowId": 100, "order": 0 }, - { "rowId": 101, "order": 1 } - ] -} -``` - -### Ячейки - -#### POST /tables/cell - -Создать или обновить значение ячейки (upsert) - -**Запрос**: -```json -{ - "row_id": 100, - "column_id": 5, - "value": "new@email.com" -} -``` - -**Логика**: -```sql -INSERT INTO user_cell_values (row_id, column_id, value_encrypted) -VALUES ($1, $2, encrypt_text($3, $4)) -ON CONFLICT (row_id, column_id) -DO UPDATE SET value_encrypted = encrypt_text($3, $4), updated_at = NOW() -``` - -### Фильтрация - -#### GET /tables/:id/rows - -Получить отфильтрованные строки - -**Параметры**: -``` -?product=Premium // Фильтр по продукту -&tags=VIP,B2B // Фильтр по тегам -&relation_12=45,46 // Фильтр по связи (column_id=12) -&multiselect_8=10,11 // Фильтр по мультивыбору (column_id=8) -&lookup_15=100 // Фильтр по lookup (column_id=15) -``` - -### RAG индекс - -#### POST /tables/:id/rebuild-index - -Пересобрать векторный индекс (только для админов) - -**Требования**: `req.session.userAccessLevel?.hasAccess === true` - -**Ответ**: -```json -{ - "success": true, - "count": 150 -} -``` - -### Связи - -#### GET /tables/:tableId/row/:rowId/relations - -Получить все связи строки - -**Ответ**: -```json -[ - { - "id": 1000, - "from_row_id": 100, - "column_id": 12, - "to_table_id": 5, - "to_row_id": 45 - } -] -``` - -#### POST /tables/:tableId/row/:rowId/relations - -Добавить связь или связи - -**Одна связь**: -```json -{ - "column_id": 12, - "to_table_id": 5, - "to_row_id": 45 -} -``` - -**Несколько связей** (multiselect): -```json -{ - "column_id": 12, - "to_table_id": 5, - "to_row_ids": [45, 46, 47] -} -``` - -**Логика**: -- Удаляет старые связи для column_id -- Добавляет новые связи - -#### DELETE /tables/:tableId/row/:rowId/relations/:relationId - -Удалить связь - -### Плейсхолдеры - -#### GET /tables/:id/placeholders - -Получить плейсхолдеры для столбцов таблицы - -**Ответ**: -```json -[ - { - "id": 1, - "name": "Email", - "placeholder": "email" - }, - { - "id": 2, - "name": "Имя клиента", - "placeholder": "imya_klienta" - } -] -``` - -#### GET /tables/placeholders/all - -Получить все плейсхолдеры по всем таблицам - -**Ответ**: -```json -[ - { - "column_id": 1, - "column_name": "Email", - "placeholder": "email", - "table_id": 1, - "table_name": "Контакты" - } -] -``` - ---- - -## Примеры использования - -### Пример 1: База знаний FAQ для AI - -#### Создание таблицы - -```javascript -const table = await tablesService.createTable({ - name: "FAQ", - description: "Часто задаваемые вопросы для AI", - isRagSourceId: 2 // RAG источник -}); -``` - -#### Добавление столбцов - -```javascript -// Вопрос (для векторного поиска) -await tablesService.addColumn(table.id, { - name: "Вопрос", - type: "text", - order: 0, - purpose: "question" -}); - -// Ответ (для AI) -await tablesService.addColumn(table.id, { - name: "Ответ", - type: "text", - order: 1, - purpose: "answer" -}); - -// Продукт (для фильтрации) -await tablesService.addColumn(table.id, { - name: "Продукт", - type: "multiselect", - order: 2, - purpose: "product", - options: { - choices: ["Базовый", "Премиум", "Корпоративный"] - } -}); - -// Теги (для фильтрации) -await tablesService.addColumn(table.id, { - name: "Теги", - type: "multiselect", - order: 3, - purpose: "userTags", - options: { - choices: ["Оплата", "Доставка", "Возврат", "Гарантия"] - } -}); -``` - -#### Добавление данных - -```javascript -// Добавляем строку -const row = await tablesService.addRow(table.id); - -// Заполняем ячейки -await tablesService.saveCell({ - row_id: row.id, - column_id: 1, // Вопрос - value: "Как вернуть товар?" -}); - -await tablesService.saveCell({ - row_id: row.id, - column_id: 2, // Ответ - value: "Возврат товара возможен в течение 14 дней с момента покупки..." -}); - -// Автоматически индексируется в vector store! -``` - -#### Поиск через AI - -```javascript -// Пользователь спрашивает AI -const userQuestion = "можно ли вернуть покупку?"; - -// AI делает векторный поиск -const results = await vectorSearch.search(table.id, userQuestion, 3); - -// Находит похожий вопрос "Как вернуть товар?" (score: -200) -// Возвращает ответ из metadata.answer -``` - -### Пример 2: CRM система - -#### Структура - -```javascript -// Таблица "Компании" -const companies = await tablesService.createTable({ - name: "Компании", - description: "База компаний" -}); - -await tablesService.addColumn(companies.id, { - name: "Название", - type: "text", - order: 0 -}); - -await tablesService.addColumn(companies.id, { - name: "Сайт", - type: "text", - order: 1 -}); - -await tablesService.addColumn(companies.id, { - name: "Отрасль", - type: "multiselect", - order: 2, - options: { choices: ["IT", "Финансы", "Ритейл", "Производство"] } -}); - -// Таблица "Контакты" -const contacts = await tablesService.createTable({ - name: "Контакты", - description: "База контактов" -}); - -await tablesService.addColumn(contacts.id, { - name: "Имя", - type: "text", - order: 0 -}); - -await tablesService.addColumn(contacts.id, { - name: "Email", - type: "text", - order: 1 -}); - -// Связь: Контакт → Компания -await tablesService.addColumn(contacts.id, { - name: "Компания", - type: "relation", - order: 2, - options: { - relatedTableId: companies.id, - relatedColumnId: 1 // Название компании - } -}); - -// Lookup: Сайт компании -await tablesService.addColumn(contacts.id, { - name: "Сайт компании", - type: "lookup", - order: 3, - options: { - relatedTableId: companies.id, - relatedColumnId: 2, // Связь через "Компания" - lookupColumnId: 2 // Подставить "Сайт" - } -}); -``` - -#### Использование - -```javascript -// Добавляем компанию -const company = await tablesService.addRow(companies.id); -await tablesService.saveCell({ - row_id: company.id, - column_id: 1, - value: "Microsoft" -}); -await tablesService.saveCell({ - row_id: company.id, - column_id: 2, - value: "https://microsoft.com" -}); - -// Добавляем контакт -const contact = await tablesService.addRow(contacts.id); -await tablesService.saveCell({ - row_id: contact.id, - column_id: 1, - value: "John Doe" -}); - -// Связываем контакт с компанией -await api.post(`/tables/${contacts.id}/row/${contact.id}/relations`, { - column_id: 3, // "Компания" - to_table_id: companies.id, - to_row_id: company.id -}); - -// Lookup автоматически подставит "https://microsoft.com"! -``` - -### Пример 3: Управление задачами - -#### Структура - -```javascript -// Таблица "Проекты" -const projects = await tablesService.createTable({ - name: "Проекты", - description: "Активные проекты" -}); - -await tablesService.addColumn(projects.id, { - name: "Название", - type: "text", - order: 0 -}); - -await tablesService.addColumn(projects.id, { - name: "Статус", - type: "multiselect", - order: 1, - options: { choices: ["Планирование", "В работе", "Завершен"] } -}); - -// Таблица "Задачи" -const tasks = await tablesService.createTable({ - name: "Задачи", - description: "Задачи по проектам" -}); - -await tablesService.addColumn(tasks.id, { - name: "Название", - type: "text", - order: 0 -}); - -await tablesService.addColumn(tasks.id, { - name: "Проект", - type: "relation", - order: 1, - options: { - relatedTableId: projects.id, - relatedColumnId: 1 - } -}); - -await tablesService.addColumn(tasks.id, { - name: "Приоритет", - type: "number", - order: 2 -}); - -await tablesService.addColumn(tasks.id, { - name: "Статус", - type: "multiselect", - order: 3, - options: { choices: ["To Do", "In Progress", "Review", "Done"] } -}); -``` - -#### Фильтрация задач по проекту - -```javascript -// Получить все задачи проекта с ID = 5 -const tasks = await api.get(`/tables/${tasks.id}/rows?relation_2=5`); - -// Получить задачи с приоритетом > 5 -const highPriority = tasks.filter(task => { - const priority = cellValues.find( - cell => cell.row_id === task.id && cell.column_id === 3 - )?.value; - return parseInt(priority) > 5; -}); -``` - ---- - -## Безопасность - -### Шифрование данных - -**Все чувствительные данные шифруются AES-256**: - -```javascript -// Шифруются: -name_encrypted // Название таблицы -description_encrypted // Описание -value_encrypted // Значения ячеек -placeholder_encrypted // Плейсхолдеры - -// НЕ шифруются (для индексов и производительности): -placeholder // Незашифрованный плейсхолдер -options // JSONB настройки -order // Порядок -``` - -**Функции шифрования в PostgreSQL**: - -```sql --- Шифрование -encrypt_text(plain_text, encryption_key) - --- Расшифровка -decrypt_text(encrypted_text, encryption_key) - --- Пример использования -INSERT INTO user_tables (name_encrypted) -VALUES (encrypt_text('Контакты', $1)); - -SELECT decrypt_text(name_encrypted, $1) as name -FROM user_tables; -``` - -### Права доступа - -```javascript -// Просмотр: все авторизованные пользователи -GET /tables -GET /tables/:id -GET /tables/:id/rows - -// Редактирование: пользователи с правами -if (!canEditData) { - return res.status(403).json({ error: 'Доступ запрещен' }); -} -POST /tables/:id/columns -POST /tables/:id/rows -POST /tables/cell -PATCH /tables/column/:columnId - -// Удаление: только администраторы -if (!req.session.userAccessLevel?.hasAccess) { - return res.status(403).json({ error: 'Только для администраторов' }); -} -DELETE /tables/:id -DELETE /tables/column/:columnId -DELETE /tables/row/:rowId -POST /tables/:id/rebuild-index -``` - -### Проверка прав через токены - -```javascript -// Backend проверяет баланс токенов -const address = req.session.address; -const dleContract = new ethers.Contract(dleAddress, dleAbi, provider); -const balance = await dleContract.balanceOf(address); - -if (balance === 0n) { - return res.status(403).json({ - error: 'Доступ запрещен: нет токенов' - }); -} - -// Определяем уровень доступа -const accessLevel = determineAccessLevel(balance); -req.session.userAccessLevel = accessLevel; -``` - -### Защита от SQL-инъекций - -**Параметризованные запросы**: - -```javascript -// ✅ Безопасно (параметры) -await db.getQuery()( - 'SELECT * FROM user_tables WHERE id = $1', - [tableId] -); - -// ❌ ОПАСНО (конкатенация) -await db.getQuery()( - `SELECT * FROM user_tables WHERE id = ${tableId}` -); -``` - -### Валидация входных данных - -```javascript -// Проверка типов -if (typeof name !== 'string') { - return res.status(400).json({ error: 'Invalid name' }); -} - -// Проверка существования -const exists = await db.getQuery()( - 'SELECT id FROM user_tables WHERE id = $1', - [tableId] -); -if (!exists.rows[0]) { - return res.status(404).json({ error: 'Table not found' }); -} - -// Проверка уникальности (placeholder) -const duplicate = await db.getQuery()( - 'SELECT id FROM user_columns WHERE placeholder = $1 AND id != $2', - [placeholder, columnId] -); -if (duplicate.rows.length > 0) { - placeholder = generateUniquePlaceholder(); -} -``` - -### Каскадное удаление (защита от orphaned data) - -```sql --- Все связи с ON DELETE CASCADE -CREATE TABLE user_columns ( - table_id INTEGER NOT NULL - REFERENCES user_tables(id) ON DELETE CASCADE -); - -CREATE TABLE user_rows ( - table_id INTEGER NOT NULL - REFERENCES user_tables(id) ON DELETE CASCADE -); - -CREATE TABLE user_cell_values ( - row_id INTEGER NOT NULL - REFERENCES user_rows(id) ON DELETE CASCADE, - column_id INTEGER NOT NULL - REFERENCES user_columns(id) ON DELETE CASCADE -); - --- Результат: удаление таблицы автоматически удаляет ВСЁ -``` - -### Rate Limiting - -```javascript -// В backend/routes/tables.js можно добавить -const rateLimit = require('express-rate-limit'); - -const tablesLimiter = rateLimit({ - windowMs: 15 * 60 * 1000, // 15 минут - max: 100, // 100 запросов - message: 'Слишком много запросов к таблицам' -}); - -router.use(tablesLimiter); -``` - ---- - -## Производительность - -### Оптимизации - -#### 1. Параллельные запросы - -```javascript -// Вместо последовательных запросов: -const tableMeta = await db.query('SELECT ...'); -const columns = await db.query('SELECT ...'); -const rows = await db.query('SELECT ...'); -const cellValues = await db.query('SELECT ...'); - -// Используются параллельные: -const [tableMeta, columns, rows, cellValues] = await Promise.all([ - db.query('SELECT ...'), - db.query('SELECT ...'), - db.query('SELECT ...'), - db.query('SELECT ...') -]); - -// Ускорение: 4x -``` - -#### 2. Индексы на связях - -```sql -CREATE INDEX idx_user_table_relations_from_row - ON user_table_relations(from_row_id); - -CREATE INDEX idx_user_table_relations_to_table - ON user_table_relations(to_table_id); - --- Результат: быстрая фильтрация по связям -``` - -#### 3. UNIQUE constraint - -```sql -CREATE TABLE user_cell_values ( - ... - UNIQUE(row_id, column_id) -); - --- Преимущества: --- 1. Предотвращает дубликаты ячеек --- 2. Ускоряет upsert (ON CONFLICT) --- 3. Автоматический индекс -``` - -#### 4. WebSocket вместо polling - -```javascript -// ❌ Polling (медленно) -setInterval(async () => { - const data = await fetchTableData(); - updateUI(data); -}, 5000); - -// ✅ WebSocket (мгновенно) -socket.on('table-update', (data) => { - if (data.tableId === currentTableId) { - updateUI(data); - } -}); - -// Результат: real-time обновления, нет нагрузки на сервер -``` - -#### 5. Кэширование - -```javascript -// Backend может добавить кэш для часто запрашиваемых таблиц -const NodeCache = require('node-cache'); -const tableCache = new NodeCache({ stdTTL: 300 }); // 5 минут - -router.get('/:id', async (req, res) => { - const cacheKey = `table_${req.params.id}`; - const cached = tableCache.get(cacheKey); - - if (cached) { - return res.json(cached); - } - - const data = await fetchTableData(req.params.id); - tableCache.set(cacheKey, data); - res.json(data); -}); -``` - -### Метрики - -**Типичное время ответа**: -``` -GET /tables → 50-100ms (все таблицы) -GET /tables/:id → 150-300ms (с данными, Promise.all) -POST /tables/cell → 100-200ms (upsert + vector update) -DELETE /tables/row/:id → 200-400ms (удаление + rebuild vector) -POST /tables/:id/rebuild-index → 1-5s (зависит от размера) -``` - -**Оптимальные размеры таблиц**: -``` -Строк: до 10,000 → Отлично -Строк: 10,000-50,000 → Хорошо -Строк: >50,000 → Нужны доп. оптимизации (pagination, lazy load) -``` - ---- - -## Ограничения и будущие улучшения - -### Текущие ограничения - -1. **Нет пагинации**: Все строки загружаются сразу - - Для больших таблиц (>1000 строк) может быть медленно - -2. **Нет формул**: Нельзя делать вычисляемые поля - - Workaround: использовать lookup - -3. **Нет группировки**: Нельзя группировать строки - - Workaround: фильтрация на frontend - -4. **Нет истории изменений**: Не отслеживается, кто и когда изменил - - Можно добавить audit trail - -5. **Ограниченная сортировка**: Только через order поле - - Нет сортировки по столбцам на backend - -### Возможные улучшения - -```javascript -// 1. Пагинация -GET /tables/:id/rows?page=1&limit=50 - -// 2. Сортировка -GET /tables/:id/rows?sort_by=column_id&order=asc - -// 3. Формулы -{ - "type": "formula", - "options": { - "formula": "{{price}} * {{quantity}}" - } -} - -// 4. История изменений -CREATE TABLE user_cell_history ( - id SERIAL PRIMARY KEY, - cell_id INTEGER REFERENCES user_cell_values(id), - old_value TEXT, - new_value TEXT, - changed_by INTEGER, - changed_at TIMESTAMP -); - -// 5. Экспорт/импорт -POST /tables/:id/export → CSV/Excel -POST /tables/:id/import ← CSV/Excel - -// 6. Шаблоны таблиц -POST /tables/templates/crm → Создать CRM из шаблона -POST /tables/templates/tasks → Создать Kanban из шаблона -``` - ---- - -## Заключение - -Система электронных таблиц в DLE — это **мощный инструмент** для управления структурированными данными с: - -✅ **Гибкой структурой** (6 типов полей) -✅ **Связями между таблицами** (relation, lookup) -✅ **AI интеграцией** (RAG, векторный поиск) -✅ **Real-time обновлениями** (WebSocket) -✅ **Безопасностью** (AES-256, права доступа) -✅ **Производительностью** (индексы, параллельные запросы) - -Это **не просто Excel**, а **полноценная база данных** с удобным интерфейсом и AI ассистентом! - ---- - -**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.** - -**Версия документа**: 1.0.0 -**Дата создания**: October 25, 2025 -**Статус**: Временный (для внутреннего использования) - diff --git a/legal-en/ATTRIBUTION_REQUIREMENTS.md b/legal-en/ATTRIBUTION_REQUIREMENTS.md deleted file mode 100644 index af6e7d5..0000000 --- a/legal-en/ATTRIBUTION_REQUIREMENTS.md +++ /dev/null @@ -1,113 +0,0 @@ -# Attribution Requirements - -## Mandatory Attribution - -When using any code from the DLE (Digital Legal Entity) project, including individual functions, modules, or algorithms, you must indicate the source. - -## Attribution Formats - -### In code comments -```javascript -/** - * Source: DLE (Digital Legal Entity) - * Author: Tarabanov Alexander Viktorovich - * License: Proprietary - * Link: https://github.com/VC-HB3-Accelerator/DLE - */ -``` - -### In documentation -```markdown -## Used Components - -- **DLE Authentication Module** - Tarabanov Alexander Viktorovich - - License: Proprietary - - Source: https://github.com/VC-HB3-Accelerator/DLE -``` - -### In configuration files -```json -{ - "attributions": { - "DLE": { - "author": "Tarabanov Alexander Viktorovich", - "license": "Proprietary", - "source": "https://github.com/VC-HB3-Accelerator/DLE", - "contact": "info@hb3-accelerator.com" - } - } -} -``` - -## What Requires Attribution - -### Must indicate source: -- Any functions or methods -- Algorithms and logic -- Data structures -- Configuration files -- Styles and UI components -- Documentation and comments - -### Does not require attribution: -- Standard libraries and frameworks -- Well-known algorithms -- Basic programming patterns - -## Attribution Violations - -### Considered a violation: -- Using code without indicating source -- Removing or modifying attribution -- Incorrect author indication - -### Consequences: -- Automatic license termination -- Possibility of legal action -- Requirement to immediately cease use - -## Examples of Proper Attribution - -### In JavaScript file -```javascript -// Document validation function -// Source: DLE (Digital Legal Entity) - Tarabanov Alexander Viktorovich -// License: Proprietary -function validateDocument(doc) { - // implementation -} -``` - -### In Python file -```python -# Blockchain transaction processing module -# Source: DLE (Digital Legal Entity) - Tarabanov Alexander Viktorovich -# License: Proprietary -class BlockchainProcessor: - # implementation -``` - -### In README file -```markdown -## Used Components - -This project uses components from DLE (Digital Legal Entity): - -- **Authentication System** - Tarabanov Alexander Viktorovich -- **Document Processing** - Tarabanov Alexander Viktorovich -- **Blockchain Integration** - Tarabanov Alexander Viktorovich - -**License:** Proprietary -**Contacts:** info@hb3-accelerator.com -``` - -## Contacts for Questions - -**Tarabanov Alexander Viktorovich** -Email: info@hb3-accelerator.com -Website: https://hb3-accelerator.com - ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - diff --git a/legal-en/AUTHORS.md b/legal-en/AUTHORS.md deleted file mode 100644 index 4d8db7b..0000000 --- a/legal-en/AUTHORS.md +++ /dev/null @@ -1,35 +0,0 @@ -# DLE Project Authors (Digital Legal Entity) - -## Main Developer - -**Tarabanov Alexander Viktorovich** -- **GitHub:** [@VC-HB3-Accelerator](https://github.com/VC-HB3-Accelerator) -- **Organization:** HB3 Accelerator -- **Email:** info@hb3-accelerator.com -- **Website:** [hb3-accelerator.com](https://hb3-accelerator.com) - -## Contributors - -- **Limited Liability Company "ERAITI" (LLC "ERAITI")** - - **Role:** Official seller and licensing partner for clients from the Russian Federation - - **Contacts:** 18900@эрайти.рф, +7 (968) 269-92-64 - -## Contact Information - -### For copyright and licensing questions: -- **Email:** info@hb3-accelerator.com -- **GitHub Issues:** [Create issue](https://github.com/VC-HB3-Accelerator/DLE/issues) -- **Website:** [hb3-accelerator.com](https://hb3-accelerator.com) - - -## Project History - -- **2024-2025:** Development and release of the first version of DLE -- **Author:** Tarabanov Alexander Viktorovich -- **License:** Proprietary Software License -- **Status:** Active development - ---- - -**All rights reserved.** See the [LICENSE.md](LICENSE.md) file for details. - diff --git a/legal-en/CONTRIBUTING.md b/legal-en/CONTRIBUTING.md deleted file mode 100644 index 580c157..0000000 --- a/legal-en/CONTRIBUTING.md +++ /dev/null @@ -1,76 +0,0 @@ -# Contributor Guide - -## Licensing - -When contributing to the DLE (Digital Legal Entity) project, you agree that your code will be distributed under the **Proprietary Software License**. - -## Copyright - -All contributors must: -- Indicate their name in commits -- Agree to transfer code rights to the project author -- Not violate third-party copyrights - -## Contribution Process - -### 1. Preparation -- Fork the repository -- Clone your fork locally -- Create a feature branch for your changes - -### 2. Development -- Follow the project's coding standards -- Add code comments in English -- Test your changes - -### 3. Commits -- Use clear commit messages -- Indicate your name in commits -- Break large changes into logical parts - -### 4. Pull Request -- Create a Pull Request with a description of changes -- Indicate what problems your code solves -- Wait for review from the project author - -## Code Standards - -### Naming -- Files and folders: kebab-case -- Variables and functions: camelCase -- Constants: UPPER_SNAKE_CASE -- Classes: PascalCase - -### Comments -```javascript -/** - * @copyright 2024-2025 Tarabanov Alexander Viktorovich - * @license Proprietary - * @author [Your name] - */ -``` - -### Git Messages -``` -feat: add new authentication function -fix: fix data validation error -docs: update API documentation -style: code formatting -refactor: refactor user module -test: add tests for new functionality -``` - -## Contacts - -### For questions about project participation: -- **Email:** info@hb3-accelerator.com -- **GitHub Issues:** [Create issue](https://github.com/VC-HB3-Accelerator/DLE/issues) - -### Project Author: -**Tarabanov Alexander Viktorovich** -Email: info@hb3-accelerator.com - ---- - -**Thank you for your contribution to the DLE project development!** - diff --git a/legal-en/COPYRIGHT_NOTICE.md b/legal-en/COPYRIGHT_NOTICE.md deleted file mode 100644 index 0b15afd..0000000 --- a/legal-en/COPYRIGHT_NOTICE.md +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright Notice - -## For use in code file headers - -Add the following header to the beginning of each source code file: - -```javascript -/** - * @copyright 2024-2025 Tarabanov Alexander Viktorovich - * @license Proprietary - * @author Tarabanov Alexander Viktorovich - * @see https://github.com/VC-HB3-Accelerator - * @see https://hb3-accelerator.com - */ -``` - -## For Python files - -```python -""" -@copyright 2024-2025 Tarabanov Alexander Viktorovich -@license Proprietary -@author Tarabanov Alexander Viktorovich -@see https://github.com/VC-HB3-Accelerator -@see https://hb3-accelerator.com -""" -``` - -## For Vue files - -```vue - -``` - -## For CSS/SCSS files - -```css -/* -@copyright 2024-2025 Tarabanov Alexander Viktorovich -@license Proprietary -@author Tarabanov Alexander Viktorovich -@see https://github.com/VC-HB3-Accelerator -@see https://hb3-accelerator.com -*/ -``` - -## For HTML files - -```html - -``` - -## For configuration files - -```json -{ - "_copyright": "2024-2025 Tarabanov Alexander Viktorovich", - "_license": "Proprietary", - "_author": "Tarabanov Alexander Viktorovich ", - "_website": "https://hb3-accelerator.com", - "_github": "https://github.com/VC-HB3-Accelerator" -} -``` - -## Important files for adding headers - -### Frontend -- `frontend/src/main.js` -- `frontend/src/App.vue` -- All Vue components -- All CSS/SCSS styles - -### Backend -- `backend/src/index.js` -- All modules and controllers -- Configuration files - -### Documentation -- `README.md` -- `docs/` - all documentation files - -## Automation - -It is recommended to set up pre-commit hooks for automatically adding copyright headers to new files. - ---- - -**All rights reserved.** See the [LICENSE.md](LICENSE.md) file for details. - diff --git a/legal-en/README.md b/legal-en/README.md deleted file mode 100644 index 3e7f4a5..0000000 --- a/legal-en/README.md +++ /dev/null @@ -1,141 +0,0 @@ -# DLE LEGAL DOCUMENTATION -## Intellectual Property Protection - -**🌐 Language / Язык:** [🇷🇺 Русский](../legal/README.md) | [🇬🇧 English](README.md) - -### 📋 **DOCUMENT OVERVIEW** - -This section contains all legal documentation for protecting the intellectual property of the DLE (Digital Legal Entity) project. - -### 🔒 **CONFIDENTIAL DOCUMENTS** - -#### **Patent documents (DO NOT PUBLISH):** -- [patents/](patents/) - Patent applications and innovative processes - - Russian Federation patent applications - - Technical specifications - - Innovative processes - - Strategic plans - -**⚠️ IMPORTANT:** Patent documents contain confidential information and MUST NOT be published in public repositories. - -### ✅ **PUBLIC DOCUMENTS** - -#### **Copyright and licenses:** -- [AUTHORS.md](AUTHORS.md) - Author information -- [CONTRIBUTING.md](CONTRIBUTING.md) - Contributor guidelines -- [COPYRIGHT_NOTICE.md](COPYRIGHT_NOTICE.md) - Copyright templates - -#### **Licensing and terms:** -- [service-terms.md](service-terms.md) - Terms of use and licensing -- [ATTRIBUTION_REQUIREMENTS.md](ATTRIBUTION_REQUIREMENTS.md) - Attribution requirements -- [USAGE_NOTIFICATION.md](USAGE_NOTIFICATION.md) - Usage notifications - -#### 📑 **File Overview** - -| File | Purpose | -| --- | --- | -| [AUTHORS.md](AUTHORS.md) | Author information and contact details. | -| [CONTRIBUTING.md](CONTRIBUTING.md) | Participation rules for project contributors. | -| [COPYRIGHT_NOTICE.md](COPYRIGHT_NOTICE.md) | Copyright notice templates for source files. | -| [service-terms.md](service-terms.md) | Detailed licensing and maintenance terms. | -| [ATTRIBUTION_REQUIREMENTS.md](ATTRIBUTION_REQUIREMENTS.md) | Formats and examples of mandatory attribution. | -| [USAGE_NOTIFICATION.md](USAGE_NOTIFICATION.md) | Instructions and template for usage notification. | - -#### **Complete service terms:** -- 📖 [../docs-en/service-terms.md](../docs-en/service-terms.md) - **Detailed purchase and maintenance terms** - - Licensing model (Perpetual License) - - Service term types (Standard & Priority) - - Smart contract voting system - - 70% refund program - - Technical support via https://hb3-accelerator.com/ - ---- - -## 📜 **LICENSING MODEL** - -### Perpetual License - -- **💰 Price:** $1,000 USDT (Standard) or $10,000 USDT (Priority) -- **⏳ Term:** Lifetime (no time limit) -- **🔄 Updates:** Free for 5 years for license token holders (see [service-terms](./service-terms.md)) -- **🗳️ Voting:** Blockchain voting for new feature development - -### Management via DLE Smart Contract - -Application development is managed through a blockchain smart contract (tokenized joint-stock company): - -- **1 token = 1 vote** regardless of quantity -- **51%+ for approval** majority decision -- **Multi-chain** support for voting and execution -- **Transparency** - all decisions on blockchain - -### Portal for Licensees - -- 🗳️ **Voting portal**: https://hb3-accelerator.com/ -- 📥 **Download updates**: https://hb3-accelerator.com/ -- 💬 **Support**: https://hb3-accelerator.com/ - -### 📁 **PROTECTION STRUCTURE** - -``` -legal-en/ -├── AUTHORS.md # ✅ PUBLISH - Project authors -├── CONTRIBUTING.md # ✅ PUBLISH - Contribution guidelines -├── COPYRIGHT_NOTICE.md # ✅ PUBLISH - Copyright templates -├── service-terms.md # ✅ PUBLISH - Terms of use -├── ATTRIBUTION_REQUIREMENTS.md # ✅ PUBLISH - Attribution requirements -├── USAGE_NOTIFICATION.md # ✅ PUBLISH - Usage notifications -└── README.md # ✅ PUBLISH - This file -``` - -### 🛡️ **PROTECTION MECHANISMS** - -#### **1. Copyright:** -- All files contain copyright by Tarabanov A.V. -- Proprietary license used -- Copying without permission prohibited - -#### **2. Patent protection:** -- Confidential documents in `patents/` folder -- Folder added to `.gitignore` -- Documents not published in repositories - -#### **3. Licensing:** -- Strict proprietary license -- Mandatory attribution when using - -#### **4. Monitoring:** -- Code usage notifications -- Attribution requirements - -### 🎯 **USAGE RECOMMENDATIONS** - -#### **For developers:** -1. Review the main [LICENSE](../LICENSE) before use -2. Follow [ATTRIBUTION_REQUIREMENTS.md](ATTRIBUTION_REQUIREMENTS.md) -3. Notify the author according to [USAGE_NOTIFICATION.md](USAGE_NOTIFICATION.md) - -#### **For use:** -1. Respect copyright -2. Indicate source when using -3. Do not transfer to third parties - -### 📞 **CONTACTS** - -**Author:** Tarabanov Alexander Viktorovich -**Email:** info@hb3-accelerator.com -**Website:** https://hb3-accelerator.com -**GitHub:** https://github.com/VC-HB3-Accelerator - -### ⚖️ **LEGAL INFORMATION** - -All documents in this section are protected by copyright. Unauthorized use, copying, or distribution is prohibited. - -For usage permissions, contact the author at the provided contacts. - ---- - -**Creation date:** 2024-2025 -**Last update:** 2024-2025 -**Status:** Actively maintained - diff --git a/legal-en/USAGE_NOTIFICATION.md b/legal-en/USAGE_NOTIFICATION.md deleted file mode 100644 index ab20b13..0000000 --- a/legal-en/USAGE_NOTIFICATION.md +++ /dev/null @@ -1,131 +0,0 @@ -# Usage Notification Requirements - -## Mandatory Notifications - -When using code from the DLE (Digital Legal Entity) project in any form, including private repositories, you must notify the author. - -## When Notification is Required - -### Must notify: -- Use in private repositories -- Integration into existing systems -- Creation of derivative works -- Use for educational purposes - -### Does not require notification: -- Personal code study -- Functionality testing -- Capability demonstration - -## Notification Form - -### Email notification -``` -Subject: DLE Usage Notification - -Dear Tarabanov Alexander Viktorovich, - -We notify you of the use of code from the DLE (Digital Legal Entity) project: - -## Project Information: -- Project name: [NAME] -- Description: [DESCRIPTION] -- Type of use: [EDUCATIONAL/PERSONAL] - -## Used Components: -- [LIST OF USED MODULES/FUNCTIONS] - -## Contact Information: -- Name: [FULL NAME] -- Email: [EMAIL] -- Organization: [ORGANIZATION] - -## Usage Plans: -- [DESCRIPTION OF PLANS] - -Best regards, -[FULL NAME] -[EMAIL] -``` - -### GitHub Issue -Create an issue in the repository with the `usage-notification` tag: -- Project description -- List of used components -- Contact information -- Usage plans - -## Notification Deadlines - -- **Before starting use** - for commercial projects -- **Within 30 days** - for educational projects -- **Within 90 days** - for personal projects - -## Consequences of Missing Notification - -### License violation: -- Automatic termination of usage rights -- Possibility of requiring cessation of use -- Potential legal consequences - -### Exceptions: -- Use for demonstration purposes -- Short-term testing -- Study of architecture and algorithms - -## Usage Monitoring - -### Automatic monitoring: -- Tracking repository forks -- Monitoring code mentions -- Analysis of dependencies in npm/pip - -### Manual monitoring: -- Search on GitHub/GitLab -- Monitoring technical blogs -- Tracking conferences and presentations - -## Contacts for Notifications - -**Tarabanov Alexander Viktorovich** -- **Email:** info@hb3-accelerator.com -- **GitHub Issues:** [Create issue](https://github.com/VC-HB3-Accelerator/DLE/issues) -- **Subject:** "DLE Usage Notification" - -## Notification Templates - -### For commercial use -``` -Subject: Commercial DLE Usage Notification - -We notify you of commercial use of DLE in the project [NAME]. -Licensing is required to continue use. - -Project details are attached. -``` - -### For educational use -``` -Subject: Educational DLE Usage Notification - -We notify you of the use of DLE for educational purposes. -Project: [NAME] -Educational institution: [NAME] - -Permission is required for use in courses. -``` - -### For personal use -``` -Subject: Personal DLE Usage Notification - -We notify you of personal use of DLE in the project [NAME]. -Usage: [DESCRIPTION] - -Thank you for creating an excellent tool! -``` - ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - diff --git a/legal-en/service-terms.md b/legal-en/service-terms.md deleted file mode 100644 index bca614a..0000000 --- a/legal-en/service-terms.md +++ /dev/null @@ -1,625 +0,0 @@ -# Digital Legal Entity Purchase and Service Terms - -## 1. Licensing Model - -### 1.1. Basic Principles - -- **📜 License Type**: Single type - **Perpetual License** -- **⏳ Term**: Lifetime (no time limit) -- **💰 Price**: Depends on **number of tokens** in the license (see section 2) -- **🔄 Updates**: FREE for 5 years for license token holders -- **🚫 Cancellation**: License cannot be canceled by the company -- **⚖️ Service Terms**: Same for all licenses (difference only in number of votes) - -### 1.2. Connection: Tokens ↔ Licenses - -Each Digital Legal Entity license is linked to a **blockchain governance token**. - -#### 📊 Token and Rights Ratio - -| Parameter | For 1 token | For 10 tokens | -|----------|-----------|--------------| -| **Number of licenses** | 1 | 1 | -| **Types of activity** | 1 | 1 | -| **Votes in voting** | 1 | 10 | -| **Service terms** | Same | Same | -| **Influence on development** | 1 vote | 10 votes | - -#### 🗳️ Community Voting - -- **Vote = 1 token** (regardless of number of tokens per owner) -- Voting occurs on **blockchain** (governance smart contract) -- Tokens give voting rights for **new features and development priorities** -- **Democracy**: Decisions are made by majority vote (51%+) - -### 1.3. Type of Activity and Usage - -- Each license is tied to **one type of activity/business** -- Owner can redefine the type of activity, but can only maintain one at a time -- For multiple types of activity, separate licenses and tokens are needed - ---- - -## 2. License Types - -### 2.1. License with 1 Token - -- **💰 License price**: **$1,000 USDT** (one-time, perpetual, excluding taxes) -- **🪙 Number of tokens**: **1 token** = **1 vote** in voting -- **🗳️ Development influence**: Basic (1 vote for new features) - -### 2.2. License with 10 Tokens - -- **💰 License price**: **$10,000 USDT** (one-time, perpetual, excluding taxes) -- **🪙 Number of tokens**: **10 tokens** = **10 votes** in voting -- **🗳️ Development influence**: Enhanced (10 votes for new features) - -### 2.3. Service Terms (same for all licenses) - -**📧 All license token holders receive (within 5 years from on-chain transfer date):** - -- ✅ All web application updates (free, 5 years) -- ✅ Access to documentation and knowledge base -- ✅ Technical support through the application: https://hb3-accelerator.com/ -- ✅ Response time: according to problem priority (see section 6.3) -- ✅ 🤖 **24/7 AI Assistant** - built-in assistant for consultations -- ✅ All integrations and deployment capabilities -- ✅ Participation in voting for new features (by number of tokens) -- ✅ Early access to beta features (if desired) -- ✅ 99% uptime SLA guarantee -- ✅ 🎓 **Online training and implementation sessions**: - - Group online sessions (quarterly - 4 times per year) - - Individual online sessions (on request) - - Application setup training - - Business integration strategies - - ROI maximization consultations - - Access to library of all session recordings - -**⚖️ The only difference between licenses:** -- Number of governance tokens (1 vs 10) -- Number of votes in voting (1 vs 10) -- Influence on prioritization of new feature development - ---- - -## 3. Voting System and Product Development - -### 3.1. How Voting Works - -1. **Feature proposal**: Community proposes new features -2. **Blockchain registration**: Voting is created in smart contract -3. **Token holder voting**: Each token = 1 vote -4. **Implementation**: If 51%+ tokens vote - feature goes into development - -### 3.2. Voting Frequency - -- **Voting window**: Open continuously (asynchronous voting) -- **Quarterly analysis**: Each quarter votes are summed, decisions analyzed -- **Prioritization**: Development follows priority (number of votes) - -### 3.3. "Non-compliance Complaint" Mechanism - -⚠️ **Refund mechanism (see section 4.2)** - -### 3.4. 🌐 Web Application for Voting - -**Address**: https://hb3-accelerator.com/ - -Token holders can: -- 📋 Create proposals for new features and prioritization -- 🗳️ Vote for or against proposals -- 📊 View voting results -- 📈 Track development status of approved features -- ⏱️ See history of all blockchain votes - -**Requirements:** -- Wallet connection with tokens (MetaMask, WalletConnect, etc.) -- Your number of tokens = number of votes - ---- - -## 4. Refunds and Guarantees - -### 4.1. General Terms - -- **🔒 Principle**: License is perpetual - no refund (except exceptional cases) -- **📋 Exception**: Special refund program (see section 4.2) - -### 4.2. 70% Refund Program - -**Refund Conditions:** - -You can request a refund of **70% of the license cost** within **5 years** from purchase date, if: - -1. ✋ **Complaint threshold**: Accumulated more than **51% negative votes** -2. 📋 **Reason**: Complaints concern **lack of update releases** -3. 🗳️ **Voting**: Complaints were **accepted through token holder voting mechanism on blockchain** -4. ⏱️ **Deadline**: Request submitted within **5 years** from licensing date - -**Refund Process:** - -1. Request submitted to hb3-accelerator.com with blockchain proof attached -2. Condition confirmation on smart contract (51%+ votes for refund) -3. Refund of **70% of purchase amount** within 30 days - -**Example:** -- License with 10 tokens purchased for $10,000 USDT -- Refund: $10,000 × 70% = $7,000 USDT -- Valid until: 5 years from purchase date - -### 4.3. Liability Limitations - -✅ **What is guaranteed:** -- License is perpetual (usage right not limited by term) -- Updates and basic maintenance provided free for 5 years -- Basic functionality remains available -- Ability to vote for product development - -❌ **NOT guaranteed:** -- Specific new features (depends on voting) -- Specific release schedule (depends on votes) -- Support when modifying source code -- Performance when exceeding limits - -### 4.4. What the Author is NOT Liable For - -❌ **Author is exempt from liability for:** - -- **Lost profits** - income losses due to application failures -- **Indirect damages** - secondary consequences of use -- **Data loss** - user is responsible for backups -- **Business interruption** - downtime and service disruptions -- **Reputation loss** - reputational damage to business -- **Special damages** - fines, penalties, sanctions, punitive payments -- **Educational use** - without permission -- **Use in accordance with terms** - if terms are violated - -### 4.5. Maximum Liability - -- **Liability limit**: Size of paid license (no more) -- **Example**: If license cost $1,000 USDT, maximum refund $1,000 USDT -- **Direct damages**: Only for direct contract violation -- **Exceptions**: Indirect, special, or punitive damages not covered - -### 4.6. User Responsibility - -✅ **User is responsible for:** -- Backing up own data (weekly minimum) -- Use in accordance with license terms -- Protecting wallet private keys and access -- Compliance with all applicable laws and regulations -- Updating application within reasonable timeframes -- Checking compatibility with environment before updating - ---- - -## 5. Updates and Maintenance - -### 5.1. Free Updates and Basic Maintenance (5 years) - -🎁 **Updates and basic maintenance are FREE for 5 years for license token holders (from on-chain token transfer date):** -- Bug fixes -- Performance improvements -- New features (approved by voting) -- Security updates - -**Frequency:** -- Security Patches: Immediately (upon discovery) -- Regular Updates: Weekly (on Wednesdays) within 5-year period -- Major Features: Based on voting results - -### 5.2. 📥 Update Download Platform - -**Address**: https://hb3-accelerator.com/ - -All license holders can: -- ✅ Download all released application versions -- 📝 Read detailed release notes -- 📅 View scheduled update calendar -- 🔄 Receive automatic notifications about new versions -- 📚 Study migration documentation between versions -- 🪵 See change logs - -**Access Requirements:** -- Wallet connection with license token on address -- License token must be on address at time of update request - -## 6. Technical Support - -### 6.1. Unified Support Portal - -**All types of support available ONLY through the application:** - -🌐 **https://hb3-accelerator.com/** - -- 📝 Creating and tracking support tickets -- 💬 Direct chat with support team -- 📊 History of all requests -- 📅 Response time tracking - -### 6.2. Available Support Channels - -**All license holders have access to:** - -| Function | Availability | -|--------|-------------| -| 🌐 Support portal | ✅ All licenses | -| 💬 Chat with support team | ✅ All licenses | -| 🤖 24/7 AI assistant | ✅ All licenses | -| 🎓 Online training sessions | ✅ Group + individual (all licenses) | -| 📚 Recording library | ✅ All licenses | -| 📧 Email support | ✅ All licenses | - -### 6.3. Problem Classification and SLA - -**Response time depends on problem priority, not license type:** - -| Priority | Description | SLA (first response time) | -|-----------|---------|-----| -| 🔴 Critical | Service completely unavailable | 4 hours | -| 🟠 High | Loss of main function | 8 hours | -| 🟡 Medium | Performance degradation | 24 hours | -| 🟢 Low | Questions, documentation | 48 hours | - -### 6.4. Support Request Process - -1. Log into application: https://hb3-accelerator.com/ -2. Go to "Proposals" section -3. Create new ticket with problem description -4. Indicate priority (system automatically classifies) -5. Attach logs, screenshots, and reproduction steps -6. Receive ticket number for tracking -7. Wait for response according to SLA (by problem priority) - -### 6.5. 🎓 Online Training and Implementation Sessions - -**All license holders** (regardless of type) receive access to **online training sessions**, where experts help maximize the effective use of Digital Legal Entity. - -#### Group Online Sessions - -**📅 Frequency**: Quarterly (4 times per year) - -**📚 Training Topics:** -- 🔧 **Application Setup** - step-by-step guide for initial configuration -- 🏢 **Business Integration** - how to integrate DLE into existing business processes -- 💰 **ROI Maximization** - best practices for using features -- 📊 **Analytics and Reporting** - how to use data for decision-making -- 🔐 **Security and Compliance** - security setup and regulatory compliance -- 🗳️ **Voting and Governance** - how to effectively use your tokens - -**⏱️ Format:** -- Duration: 1-2 hours -- Webinar with presentation and demonstration -- Q&A session at end (30-40 minutes) -- Recording available after session - -**👥 Participation Format:** -- Online meetings -- Chat for questions during session -- Ability to ask questions in advance - -#### Individual Online Sessions - -**Available for all licenses** - -**📅 Frequency**: (on request) - -**🎯 Personalized Topics:** -- 🏗️ **Individual Architecture** - setup for your business specifics -- 📈 **Integration Strategy** - step-by-step DLE integration plan -- 💡 **ROI Optimization** - how to get maximum return on investment -- 🔄 **Data Migration** - transfer from existing systems -- 🛠️ **Customization and Integrations** - setup for your requirements -- 📊 **Efficiency Analysis** - metrics and improvements overview -- 🗳️ **Voting Strategy** - how to use your tokens to influence development - -**⏱️ Format:** -- Duration: 1-2 hours (as needed) -- Individual video meeting -- Personal expert familiar with your case -- Session recording for your team -- Materials and documentation after session -- Ability to invite your team (up to 10 people) - -#### Registration for Online Sessions - -**How to register:** -1. Log into application: https://hb3-accelerator.com/ -2. Go to group -3. Select available session from calendar (group or individual) -4. Click "Register" and receive connection link - -#### Recording Library - -All past online sessions are available in the library for all license holders: - -**📚 Address**: https://hb3-accelerator.com/ - -- 🎥 Video recordings of all group sessions -- 📄 Presentations and materials -- 💬 Q&A session transcripts -- 🔍 Search by topics and keywords -- 📥 Download materials for offline viewing - ---- - -## 7. Terms of Use - -### 7.1. Permissible Use - -✅ **Permitted:** -- Use for managing own business -- Deployment on own infrastructure -- Use of selected type of activity (1 type per license) -- Data backup -- Local configuration modification -- Voting for new feature development -- License transfer to heirs (for perpetual license) - -❌ **Prohibited:** -- Resale or sublicensing -- Use of more than one type of activity with one license -- Reverse engineering and source code modification -- Removal of copyright and license notices -- Shared use between independent organizations -- Educational use without permission -- SaaS deployment based on application ---- - -## 8. Security and Privacy - -### 8.1. Data Encryption - -- **TLS 1.3**: For all connections -- **AES-256**: For critical data in storage -- **Key Management**: User controls encryption keys - -### 8.2. Standards Compliance - -- **GDPR**: Compliance (with DPA) -- **SOC 2 Type II**: Certification obtained -- **ISO 27001**: Planned ---- - -## 9. License Management Smart Contract - -### 9.1. Management System Architecture - -DLE uses a **smart contract** on blockchain for license management and voting: - -- **ERC20 tokens**: Each license is represented by governance tokens (1 or 10) -- **ERC20Votes**: Built-in voting system through smart contract -- **ERC20Permit**: Signatures for token transfers without gas fees (meta-transactions) -- **Multi-chain architecture**: Support for voting and execution in multiple networks simultaneously - -### 9.2. Proposal and Voting System - -**Creating a proposal:** -- Only token holders (licenses) can create proposals -- Description: Text of proposal for new feature -- Voting duration: From 1 hour to 30 days -- Target networks: Can be executed in one or multiple networks simultaneously - -**Voting Process:** -1. Proposal is created and receives unique ID -2. Token holders vote "For" or "Against" -3. Each token = 1 vote (regardless of holder) -4. Quorum is checked at deadline or when 51%+ is reached - -**Proposal Execution:** -- If "For" > "Against" AND quorum reached → proposal accepted -- Execution can be through: - - Direct call (in voting chain) - - Through signatures (in other networks) - - -### 9.3. Security and Limitations - -✅ **Reentrancy Protection** - ReentrancyGuard in all critical operations -✅ **Direct Transfer Blocking** - tokens transferred only through governance -✅ **Vote Snapshots** - past values used to protect against flash-loans -✅ **EIP-712 Signatures** - support for contract wallets and meta-transactions -✅ **Operation Validation** - all parameters checked before execution - -### 9.4. License Transfer - -- License = governance tokens tied to wallet address -- Transfer: Simply transfer tokens to new address (possible through governance) -- Rights: New owner automatically receives voting rights - ---- - -## 10. Contact Information and Support - -### 📞 Support Service - -🌐 **ONLY through application**: https://hb3-accelerator.com/ -- **GitHub**: https://github.com/VC-HB3-Accelerator/DLE - -### ⚖️ Legal Information -- **Legal Status**: Proprietary Software (see [LICENSE](../LICENSE)) -- **Full Documentation**: [legal-en/README.md](README.md) - ---- - -## 11. Terms Change Policy - -### 11.1. Changes for New Licenses - -- We may change service terms **for new purchases** -- Notification: 60 days before taking effect -- Application: Only for new licenses purchased after change date - -### 11.2. Protection of Existing Licenses - -- **Guarantee**: Your license terms **DO NOT change** after purchase -- **Fixed Rights**: Remain forever with current terms -- **Backward Compatibility**: Old terms are supported ---- - -**© 2024-2025 Tarabanov Alexander Viktorovich. All rights reserved.** - -**Last update**: October 2025 - -### 🔐 Blockchain Note - -This license management model uses blockchain to ensure **transparency**, **democracy**, and **immutability** of the product development voting process. All token holders have equal votes and control over the future development of Digital Legal Entity. - -## 5. Pricing and Payment Terms - -### 5.1. Payment Methods - -- 💵 **Cryptocurrency (USDT)**: Directly to addresses of authorized partner companies -- 💳 **Local Currency Transfer**: Equivalent in buyer's country local currency -- 🏦 **Bank Transfer**: Through authorized dealers -- 💳 **Credit Cards**: Through partner payment systems - -### 5.2. Prices and Taxes - -#### ⚠️ IMPORTANT: All prices are EXCLUDING TAXES - -**Prices in USDT:** -- **License with 1 token**: $1,000 USDT (excluding taxes) -- **License with 10 tokens**: $10,000 USDT (excluding taxes) - -**Equivalent in other currencies (examples, depends on exchange rate):** -- EUR: €899 (1 token) or €8,991 (10 tokens) -- RUB: ₽99,000 (1 token) or ₽990,000 (10 tokens) -- Other currencies at current exchange rate at time of payment - -#### Taxes - Buyer's Responsibility - -Buyer is independently responsible for paying all applicable taxes: -- **VAT** - in EU countries and others (usually 15-25%) -- **Sales Tax** - in USA and other countries -- **Income Tax** - depends on tax status -- **Customs Duties** - when importing to certain countries -- **Any other taxes** - depending on local jurisdiction - -**Tax rate is determined by:** -- Buyer's jurisdiction (country, city, region) -- Tax status (individual, sole proprietor, LLC, JSC, etc.) -- International trade specifics - -#### 💸 Payment Fees - FULLY ON BUYER - -All fees for transfers, conversion, and payment processing are borne by the **BUYER**: - -**🌍 Currency Conversion Fees:** -- Bank/payment system commission: 1-5% of amount -- Inter-market spread commission (rate): +1-2% above market -- Hidden conversion fees: often 2-3% - -**🏦 Bank Transfer Fees:** -- **SWIFT transfers** (international): $10-50+ per transaction -- **SEPA transfers** (within EU): €0-3 or free -- **Other systems** (Wise, Payoneer): 1-2.5% + fixed fee -- **Recipient side commission**: additional $0-50 (may be) - -**⛓️ Blockchain Fees (cryptocurrency - USDT):** -- **Gas fees (network commission)**: - - Ethereum: $1-50+ depending on load - - Polygon: $0.01-1 - - BSC: $0.10-5 - - Other networks: varies -- **Wallet commission**: 0-2% (if payment provider used) -- **Exchange/platform commission**: 1-3% for fiat to USDT exchange - -**💳 Payment System Fees (credit cards):** -- **Processing commission**: 2-5% of amount -- **Currency conversion commission**: 1-3% (if payment in other currency) -- **Issuing bank commission**: 0-2% (rare, but may be) -- **Dynamic Currency Conversion (DCC) commission**: 2-4% (if available) - -**Real Examples of Total Costs:** - -| Option | Stated Price | Fees | Total to Pay | -|---------|-----------------|----------|-----------------| -| USDT directly | $1,000 | $15-80 (gas + fees) | $1,015-1,080 | -| SWIFT transfer USD | $1,000 | $25-80 (bank fees) | $1,025-1,080 | -| Card in EUR | €899 | €30-45 (conversion + fees) | €929-944 | -| Crypto exchange | $1,000 | $30-150 (all fees) | $1,030-1,150 | - -**💡 Tip:** Choose payment method with minimum fees! - -**⚠️ Total Amount = License Price + Taxes + All Transfer and Conversion Fees** - -### 5.3. Authorized Sellers and Dealers - -#### Official Sales Terms - -Licenses may be sold **ONLY through companies** that have **official written permission from the author**: - -**Requirements for authorized seller:** -- ✅ Legal entity (LLC, JSC, sole proprietor, corporation, etc.) -- ✅ Signed contract/agreement for dealership with author -- ✅ Inclusion in official list at https://hb3-accelerator.com/ -- ✅ Compliance with all licensing terms -- ✅ Record keeping of all sales -- ✅ Timely transfer of funds to author - -**Payment Structure Through Dealer:** -- 💰 Buyer pays → Authorized seller -- 🤝 Seller receives commission (% determined by contract) -- 📤 Remainder transferred to author within established terms -- 📋 All payments documented officially and tracked - -#### Official Seller for Clients from Russian Federation - -For clients from the Russian Federation, the official seller of licenses is **Limited Liability Company "ERAITI" (LLC "ERAITI")** with the following details: -- **OGRN:** 1222600014383 -- **INN:** 2636220809 -- **Address:** 355007, Stavropol Territory, Stavropol, Burmistrova St., 65B, room 2 -- **Contacts:** 18900@эрайти.рф, +7 (968) 269-92-64 - -LLC "ERAITI" has official rights to sell and support Digital Legal Entity licenses in the Russian Federation. - -#### Direct Purchase from Author - -Can be purchased directly from author without intermediaries: - -- 📧 **Email**: info@hb3-accelerator.com -- 🌐 **Website**: https://hb3-accelerator.com -- 🐙 **GitHub**: https://github.com/VC-HB3-Accelerator - - -### 5.4. Payment Process and Confirmation - -1. **Seller Selection**: Authorized dealer or directly from author -2. **Price Agreement**: In USDT or equivalent local currency -3. **Receiving Details**: From seller or author -4. **Sending Payment**: Cryptocurrency, bank transfer, or other method -5. **Confirmation**: Receiving payment number and payment document -6. **License Activation**: Receiving NFT token or portal access - -### 5.5. Refund and Claims - -- **Claim Period**: 30 days from payment date -- **Process**: Contact seller or author with payment confirmation -- **Refund**: Maximum 70% of amount in accordance with refund program -- **Refund Reasons**: - - Calculation error - - Double payment - - Other justified reasons - ---- - -## 📚 Additional Documentation - -### Explore DLE Capabilities -- 🤖 **[AI Assistant](../docs-en/ai-assistant.md)** - second pilot for team, frees time for strategy -- 💼 **[Blockchain for Business](../docs-en/blockchain-for-business.md)** - asset tokenization and business solutions -- 🛡️ **[DLE Security](../docs-en/security.md)** - multi-level protection for your business - -### Technical Documentation -- 🔗 **[Blockchain Technical Documentation](../docs-en/blockchain-integration-technical.md)** - for developers -- 🔧 **[Installation Instructions](../docs-en/setup-instruction.md)** - step-by-step setup -- 📝 **[Application Description](../docs-en/application-description.md)** - functionality overview -- 📋 **[FAQ](../docs-en/FAQ.md)** - frequently asked questions - -### Contacts and Support -- 📧 **Email**: info@hb3-accelerator.com -- 🌐 **Website**: https://hb3-accelerator.com -- 💬 **Support Chat**: https://hb3-accelerator.com/ -- 🐙 **GitHub**: https://github.com/VC-HB3-Accelerator - diff --git a/legal/ATTRIBUTION_REQUIREMENTS.md b/legal/ATTRIBUTION_REQUIREMENTS.md index b2bfc62..4b6031f 100644 --- a/legal/ATTRIBUTION_REQUIREMENTS.md +++ b/legal/ATTRIBUTION_REQUIREMENTS.md @@ -109,4 +109,4 @@ Email: info@hb3-accelerator.com --- -**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.** \ No newline at end of file +**© 2024-2026 Тарабанов Александр Викторович. Все права защищены.** \ No newline at end of file diff --git a/legal/AUTHORS.md b/legal/AUTHORS.md index 474b2c6..15fc7cb 100644 --- a/legal/AUTHORS.md +++ b/legal/AUTHORS.md @@ -24,11 +24,11 @@ ## История проекта -- **2024-2025:** Разработка и выпуск первой версии DLE +- **2024-2026:** Разработка и выпуск первой версии DLE - **Автор:** Тарабанов Александр Викторович - **Лицензия:** Proprietary Software License - **Статус:** Активная разработка --- -**Все права защищены.** См. файл [LICENSE.md](LICENSE.md) для подробностей. \ No newline at end of file +**Все права защищены.** См. файл [LICENSE](../LICENSE) для подробностей. \ No newline at end of file diff --git a/legal/CONTRIBUTING.md b/legal/CONTRIBUTING.md index c994639..f6b50f7 100644 --- a/legal/CONTRIBUTING.md +++ b/legal/CONTRIBUTING.md @@ -44,7 +44,7 @@ ### Комментарии ```javascript /** - * @copyright 2024-2025 Тарабанов Александр Викторович + * @copyright 2024-2026 Тарабанов Александр Викторович * @license Proprietary * @author [Ваше имя] <ваш-email@example.com> */ diff --git a/legal/COPYRIGHT_NOTICE.md b/legal/COPYRIGHT_NOTICE.md index 8fb8265..7044c2c 100644 --- a/legal/COPYRIGHT_NOTICE.md +++ b/legal/COPYRIGHT_NOTICE.md @@ -6,7 +6,7 @@ ```javascript /** - * @copyright 2024-2025 Тарабанов Александр Викторович + * @copyright 2024-2026 Тарабанов Александр Викторович * @license Proprietary * @author Тарабанов Александр Викторович * @see https://github.com/VC-HB3-Accelerator @@ -18,7 +18,7 @@ ```python """ -@copyright 2024-2025 Тарабанов Александр Викторович +@copyright 2024-2026 Тарабанов Александр Викторович @license Proprietary @author Тарабанов Александр Викторович @see https://github.com/VC-HB3-Accelerator @@ -30,7 +30,7 @@ ```vue