cyberhybridhub/server/lib/trading/market_question_logger.dart
nathanAndrinoid a521a74214
Some checks failed
Admin portal tests / test (push) Has been cancelled
balance controled working spelling and market questions.
2026-06-17 04:20:45 +00:00

68 lines
2.3 KiB
Dart

import 'dart:io';
class MarketQuestionLogger {
MarketQuestionLogger._();
static const String _logFilePrefix = 'market_questions_';
static const String _logFileSuffix = '.log';
/// Log an answered market question to a date-stamped file with a 2-day rotation.
static Future<void> logAnswer({
required String questionId,
required String userId,
required String symbol,
required num response,
required num correctAnswer,
required bool isInverted,
DateTime? now,
}) async {
final DateTime time = now ?? DateTime.now().toUtc();
final String dateString = _formatDate(time);
// Construct today's and yesterday's file names
final String todayFileName = '$_logFilePrefix$dateString$_logFileSuffix';
final String yesterdayFileName = '$_logFilePrefix${_formatDate(time.subtract(const Duration(days: 1)))}$_logFileSuffix';
// 1. Write the log entry
final String logLine = '[${time.toIso8601String()}] '
'Question ID: $questionId, '
'User ID: $userId, '
'Symbol: $symbol, '
'Response: $response, '
'Correct: $correctAnswer, '
'Inverted: $isInverted\n';
final File logFile = File(todayFileName);
try {
await logFile.writeAsString(logLine, mode: FileMode.append, flush: true);
} catch (e) {
stderr.writeln('Failed to write market question log: $e');
}
// 2. Perform rotation (delete any log files that are not today's or yesterday's)
try {
final Directory currentDir = Directory.current;
final List<FileSystemEntity> entities = currentDir.listSync();
for (final FileSystemEntity entity in entities) {
if (entity is File) {
final String name = entity.uri.pathSegments.last;
if (name.startsWith(_logFilePrefix) && name.endsWith(_logFileSuffix)) {
if (name != todayFileName && name != yesterdayFileName) {
await entity.delete();
}
}
}
}
} catch (e) {
stderr.writeln('Failed to rotate market question logs: $e');
}
}
static String _formatDate(DateTime dt) {
final String y = dt.year.toString().padLeft(4, '0');
final String m = dt.month.toString().padLeft(2, '0');
final String d = dt.day.toString().padLeft(2, '0');
return '$y-$m-$d';
}
}