This repository was archived by the owner on Mar 31, 2026. It is now read-only.
Deploy/godgpt dev - #1507
Closed
louis4li wants to merge 425 commits into
Closed
Deploy/godgpt dev#1507louis4li wants to merge 425 commits into
louis4li wants to merge 425 commits into
Conversation
- Update all GetGrain calls to use DailyPushConstants.TimezoneToGuid() - Add InitializeAsync() calls to ensure timezone GAgents are properly initialized - Pass intervalSeconds parameter to StartTestModeAsync as intended - Ensures compatibility with new GUID-based timezone GAgent architecture This works in conjunction with godgpt changes to resolve CQRS projection issues.
…evices
Instead of returning error when device not found in /api/push/device/{deviceId},
now returns empty device object with pushEnabled=true by default.
This simplifies frontend logic by providing consistent response format
and enables push notifications for new devices by default.
# Conflicts: # station/src/Aevatar.HttpApi/Controllers/AccountController.cs
# Conflicts: # Directory.Packages.props # station/src/Aevatar.HttpApi/Controllers/GodGPTController.cs
…tar-station into deploy/godgpt-dev
- Add null/empty timezone validation in GetTestStatus controller method - Default to 'Asia/Shanghai' if timezone parameter is empty - Prevents timezone validation errors when frontend sends empty values This complements the godgpt timezone mapping fixes.
Features added: - New HTTP endpoint GET /api/push/test/devices for debugging timezone device issues - TimezoneDeviceInfo DTO in contracts - GetDevicesInTimezoneAsync method in DailyPushService - Enhanced device debugging capabilities for troubleshooting push delivery This provides detailed device information to help debug the '4 users but only 1 with deviceId' issue.
- Add ExportModels.cs with DTOs for export tasks
- Add IStateExportService interface for state export operations
- Add StateExportService implementation with MongoDB export logic
- Add StateExportController with async export endpoints
- Register StateExportService in AevatarHttpApiAdminModule
API Endpoints:
- POST /api/admin/export/start - Start export task
- GET /api/admin/export/status/{taskId} - Query task status
- GET /api/admin/export/download/{taskId} - Download export data
- GET /api/admin/export/types - List available state types
- Remove complex async task management (Redis/MongoDB storage) - Add streaming export: GET /api/admin/export/stream - Add direct export: GET /api/admin/export/all - No storage needed - data streams directly to response - Multi-Pod friendly - no shared state required - Periodic flush keeps HTTP connection alive
- Replace streaming with pagination approach - GET /summary - get total counts per type first - GET /page?collection=xxx&skip=0&limit=1000 - fetch in batches - Each request is short (<5s), no timeout risk - Client loops until hasMore=false - Remove unused IStateExportService interface
- Add StateExportGrain in Silo for proper Orleans State deserialization - Add State Export API endpoints (collections, grain export) - Support all Agent types via HybridGrainStateSerializer - Add pagination support for large datasets - Add start/stop scripts with MongoDB port-forward support - Add comprehensive usage documentation Features: - Automatic State type discovery from collection names - Production-ready pagination (no timeout issues) - Detailed logging for debugging - Support for all Orleans-serialized State types Configuration: - StateExport section in appsettings.json for MongoDB connection - Supports readPreference for replica set read optimization
- Add ExportModels.cs with DTOs for export tasks
- Add IStateExportService interface for state export operations
- Add StateExportService implementation with MongoDB export logic
- Add StateExportController with async export endpoints
- Register StateExportService in AevatarHttpApiAdminModule
API Endpoints:
- POST /api/admin/export/start - Start export task
- GET /api/admin/export/status/{taskId} - Query task status
- GET /api/admin/export/download/{taskId} - Download export data
- GET /api/admin/export/types - List available state types
- Remove complex async task management (Redis/MongoDB storage) - Add streaming export: GET /api/admin/export/stream - Add direct export: GET /api/admin/export/all - No storage needed - data streams directly to response - Multi-Pod friendly - no shared state required - Periodic flush keeps HTTP connection alive
- Replace streaming with pagination approach - GET /summary - get total counts per type first - GET /page?collection=xxx&skip=0&limit=1000 - fetch in batches - Each request is short (<5s), no timeout risk - Client loops until hasMore=false - Remove unused IStateExportService interface
- Add StateExportGrain in Silo for proper Orleans State deserialization - Add State Export API endpoints (collections, grain export) - Support all Agent types via HybridGrainStateSerializer - Add pagination support for large datasets - Add start/stop scripts with MongoDB port-forward support - Add comprehensive usage documentation Features: - Automatic State type discovery from collection names - Production-ready pagination (no timeout issues) - Detailed logging for debugging - Support for all Orleans-serialized State types Configuration: - StateExport section in appsettings.json for MongoDB connection - Supports readPreference for replica set read optimization
- Move StateExportController, StateExportService, and ExportModels from HttpApi.Admin to HttpApi module - Update namespaces: Aevatar.Admin.* -> Aevatar.* - Keep route unchanged: /api/admin/export - Register StateExportService in AevatarHttpApiModule - Remove StateExportService registration from AevatarHttpApiAdminModule - This allows Developer Host to integrate State Export API functionality
- Move StateExportController, StateExportService, and ExportModels from HttpApi.Admin to HttpApi module - Update namespaces: Aevatar.Admin.* -> Aevatar.* - Keep route unchanged: /api/admin/export - Register StateExportService in AevatarHttpApiModule - Remove StateExportService registration from AevatarHttpApiAdminModule - This allows Developer Host to integrate State Export API functionality
- 将GodGPT.GAgents和GodGPT.Webhook版本统一为1.32.8-hotfix-testnet-2 - 修复GodGPTService中RecordAppRatingAsync缺少currentUserId参数的错误 - 修复GodGPTService中GetPaymentHistoryAsync的PaymentSummary类型转换 - 修复DailyPushService中7个方法调用错误(这些方法在1.32.8-hotfix-testnet-2中不存在): * RegisterOrUpdateDeviceAsync * StartTestModeAsync * StopTestModeAsync * GetTestStatusAsync * GetAllUserDevicesAsync * SendInstantPushAsync * ClearReadStatusAsync - 这些方法已改为抛出NotImplementedException,等待包更新后恢复
- 当GeoIP文件存在时注册IpLocationService - 当GeoIP文件不存在时注册NullIpLocationService作为fallback - 添加NullIpLocationService实现类
- 更新StateExportGrain支持Orleansgodgptprod前缀的collection - 修复MongoDB多主机连接字符串配置(移除directConnection参数) - 更新ExtractTypeName方法以正确提取Orleansgodgptprod前缀的类型名
- 支持Orleansgodgptprod前缀的collection导出 - 修复MongoDB多主机连接字符串配置 - 解决合并冲突,保留deploy/godgpt-dev分支的版本
- Add ViewStateSnapshotWithMetadata wrapper deserialization for Stream collections - Skip old EventLog format data (detected by EventLog/LogEvent markers in binary) - Fix HasMore logic for pagination when documents are skipped - Add explicit state type mappings for AnonymousUserGAgent and TwitterIdentityBindingGAgent - Prioritize *GAgentState naming pattern for state type resolution - Remove unused CleanConnectionString method - Simplify logging (reduce verbose Information logs to Debug) - Clean up test scripts
- Remove TotalCount calculation (CountDocumentsAsync is slow on large collections) - Remove cursor pagination (performance test shows skip=540000 takes only 0.32s) - Simplify return structure: only HasMore and Records fields - Optimize HasMore detection: fetch limit+1 to determine if more data exists - Performance: skip=540000 with limit=500 completes in ~0.32s
…ueries - Add cursor parameter to ExportAsync for efficient pagination - Cursor uses MongoDB _id index for O(log n) lookup vs O(n) skip scan - Cursor and skip can be mixed (cursor takes priority) - Cursor based on MongoDB document _id (filtered docs correctly skipped) - Significantly improves performance for large offsets and high concurrency - Backward compatible: skip still works when cursor is not provided
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.