Sync README files from source repository [skip ci]
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
# SmartPool Changelog
|
||||
|
||||
All notable changes to the SmartPool project.
|
||||
|
||||
## [1.1.0] - 2026-01-22
|
||||
|
||||
### Changed - Cluster-Based Mapping
|
||||
|
||||
#### Database Schema
|
||||
- ✅ Changed `proxy_access_mapping` table from proxy_id to cluster-based mapping
|
||||
```sql
|
||||
-- Before
|
||||
proxy_access_mapping (access_token, proxy_id, priority)
|
||||
|
||||
-- After
|
||||
proxy_access_mapping (access_token, cluster, priority)
|
||||
```
|
||||
|
||||
#### Benefits
|
||||
- **Scalability**: Add/remove proxies without updating mappings
|
||||
- **Flexibility**: Group proxies logically by cluster
|
||||
- **Maintainability**: Fewer mapping records to manage
|
||||
- **Performance**: Simpler queries, better index utilization
|
||||
|
||||
#### Breaking Changes
|
||||
- `IProxyMetadataRepository.AddAccessMappingAsync()` signature changed:
|
||||
```csharp
|
||||
// Before
|
||||
Task<bool> AddAccessMappingAsync(string accessToken, int proxyId, ...);
|
||||
|
||||
// After
|
||||
Task<bool> AddAccessMappingAsync(string accessToken, string cluster, ...);
|
||||
```
|
||||
|
||||
- HTTP API endpoint parameter changed:
|
||||
```bash
|
||||
# Before
|
||||
POST /api/smart-pool/v1/SmartProxy/access-mapping/add?accessToken=token&proxyId=123
|
||||
|
||||
# After
|
||||
POST /api/smart-pool/v1/SmartProxy/access-mapping/add?accessToken=token&cluster=cluster_vn_http
|
||||
```
|
||||
|
||||
#### Migration Guide
|
||||
|
||||
1. **Export existing mappings** (if any):
|
||||
```sql
|
||||
SELECT access_token, proxy_id, priority
|
||||
FROM old_proxy_access_mapping;
|
||||
```
|
||||
|
||||
2. **Identify proxy clusters**:
|
||||
```sql
|
||||
SELECT DISTINCT cluster, country, protocol
|
||||
FROM smart_pool_meta.proxy_metadata FINAL;
|
||||
```
|
||||
|
||||
3. **Create cluster mappings**:
|
||||
```sql
|
||||
INSERT INTO smart_pool_meta.proxy_access_mapping
|
||||
SELECT DISTINCT
|
||||
old.access_token,
|
||||
p.cluster,
|
||||
old.priority
|
||||
FROM old_mappings old
|
||||
INNER JOIN smart_pool_meta.proxy_metadata FINAL p
|
||||
ON old.proxy_id = p.id;
|
||||
```
|
||||
|
||||
4. **Update application code**:
|
||||
- Change API calls from `proxyId` to `cluster`
|
||||
- Update any direct database queries
|
||||
|
||||
#### Files Modified
|
||||
- `src/Icomm.API.SmartPool/clickhouse_init.sql`
|
||||
- `src/Icomm.API.SmartPool/Repositories/IProxyMetadataRepository.cs`
|
||||
- `src/Icomm.API.SmartPool/Repositories/Impl/ProxyMetadataRepository.cs`
|
||||
- `src/Icomm.API.SmartPool/Controllers/v1/SmartProxyController.cs`
|
||||
|
||||
#### Documentation Added
|
||||
- `SMARTPOOL_CLUSTER_MAPPING.md` - Comprehensive cluster mapping guide
|
||||
|
||||
---
|
||||
|
||||
## [1.0.0] - 2026-01-22
|
||||
|
||||
### Added - Initial Release
|
||||
|
||||
#### Projects Created
|
||||
- `Icomm.SmartPool.Abstractions` - Shared interfaces and models
|
||||
- `Icomm.API.SmartPool` - API Backend (gRPC + HTTP)
|
||||
- `Icomm.SmartPool.Proxy` - Client SDK
|
||||
- `Icomm.SmartPool.Tests` - Unit tests
|
||||
|
||||
#### Features
|
||||
- **5 Proxy Selection Strategies**:
|
||||
- Random: Random selection
|
||||
- Round Robin: Load balancing
|
||||
- Least Delay: Fastest proxy
|
||||
- Adaptive Ranking: Highest success rate
|
||||
- Alternative: Similar proxy replacement
|
||||
|
||||
- **Dual Protocol Support**:
|
||||
- gRPC (MagicOnion) - High performance
|
||||
- HTTP REST API - Standard web API
|
||||
|
||||
- **ClickHouse Integration**:
|
||||
- Separated databases: `smart_pool_meta` and `smart_pool_logs`
|
||||
- High-performance logging
|
||||
- Automatic aggregation with Materialized Views
|
||||
- 90-day TTL on logs
|
||||
|
||||
- **Client SDK**:
|
||||
- Easy integration via DI
|
||||
- Support both gRPC and HTTP
|
||||
- IWebProxy support for HttpClient
|
||||
|
||||
#### Dependencies
|
||||
- .NET 8.0
|
||||
- MagicOnion 6.1.7
|
||||
- ClickHouse.Client 7.14.0
|
||||
- EasyCaching.Redis 1.9.2
|
||||
- Dapper 2.1.35
|
||||
- Serilog 8.0.1
|
||||
|
||||
#### Documentation
|
||||
- `SMARTPOOL_README.md` - Main overview
|
||||
- `SMARTPOOL_IMPLEMENTATION_SUMMARY.md` - Implementation details
|
||||
- `SMARTPOOL_USAGE_EXAMPLES.md` - Usage examples
|
||||
- `SMARTPOOL_QUICK_REFERENCE.md` - Quick reference
|
||||
- `SMARTPOOL_DATABASE_SEPARATION.md` - Database architecture
|
||||
- `SMARTPOOL_UPGRADE_NOTES.md` - HttpToSocks5Proxy upgrade notes
|
||||
|
||||
---
|
||||
|
||||
## [0.9.0] - 2026-01-22 (Pre-release)
|
||||
|
||||
### Added
|
||||
- HttpToSocks5Proxy upgraded to .NET 8.0 (v2.0.0)
|
||||
- Project structure and dependencies setup
|
||||
- ClickHouse schema design
|
||||
- Strategy pattern implementation
|
||||
|
||||
---
|
||||
|
||||
## Versioning
|
||||
|
||||
This project follows [Semantic Versioning](https://semver.org/):
|
||||
- **MAJOR**: Incompatible API changes
|
||||
- **MINOR**: New functionality (backwards compatible)
|
||||
- **PATCH**: Bug fixes (backwards compatible)
|
||||
|
||||
## Release Notes Format
|
||||
|
||||
Each release includes:
|
||||
- **Added**: New features
|
||||
- **Changed**: Changes in existing functionality
|
||||
- **Deprecated**: Soon-to-be removed features
|
||||
- **Removed**: Removed features
|
||||
- **Fixed**: Bug fixes
|
||||
- **Security**: Security improvements
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2026-01-22
|
||||
Reference in New Issue
Block a user