Files
ResourcePool.Docs/SMARTPOOL_CHANGELOG.md
T

166 lines
4.3 KiB
Markdown

# 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