fixing up clight logging

This commit is contained in:
2026-07-01 13:28:18 +02:00
parent 812c8db142
commit 751ae601b9
5 changed files with 43 additions and 18 deletions

0
log/.gitkeep Normal file
View File

View File

@@ -9,17 +9,12 @@ import java.nio.file.StandardOpenOption
@Component
class MarketOrderClient(
@Value("\${market.orders.file:market_orders.log}") private val filePath: String
@Value("\${market.orders.file:log/market_orders.log}") private val filePath: String
) {
private val file: Path = Path.of(filePath)
init {
if (!Files.exists(file)) {
Files.createFile(file)
}
}
fun sendOrder(order: MarketOrder) {
ensureFileExists()
val line = formatOrder(order)
Files.writeString(file, "$line\n", StandardOpenOption.APPEND)
}
@@ -30,8 +25,17 @@ class MarketOrderClient(
}
fun clear() {
if (Files.exists(file)) {
Files.writeString(file, "")
}
}
private fun ensureFileExists() {
if (!Files.exists(file)) {
file.parent?.let { Files.createDirectories(it) }
Files.createFile(file)
}
}
private fun formatOrder(order: MarketOrder): String {
return "${order.timestamp}|${order.orderId}|${order.groupId}|${order.deliveryStart}|${order.deliveryEnd}|${order.side}|${order.quantity}|${order.price}"

View File

@@ -9,17 +9,12 @@ import java.nio.file.StandardOpenOption
@Component
class SteeringSignalClient(
@Value("\${steering.signals.file:steering_signals.log}") private val filePath: String
@Value("\${steering.signals.file:log/steering_signals.log}") private val filePath: String
) {
private val file: Path = Path.of(filePath)
init {
if (!Files.exists(file)) {
Files.createFile(file)
}
}
fun sendSignal(signal: SteeringSignal) {
ensureFileExists()
val line = formatSignal(signal)
Files.writeString(file, "$line\n", StandardOpenOption.APPEND)
}
@@ -30,8 +25,17 @@ class SteeringSignalClient(
}
fun clear() {
if (Files.exists(file)) {
Files.writeString(file, "")
}
}
private fun ensureFileExists() {
if (!Files.exists(file)) {
file.parent?.let { Files.createDirectories(it) }
Files.createFile(file)
}
}
private fun formatSignal(signal: SteeringSignal): String {
return "${signal.timestamp}|${signal.groupId}|${signal.quarterStart}|${signal.quarterEnd}|${signal.chargePowerMW}"

View File

@@ -1,8 +1,10 @@
package com.frankenergie.smartasset.service
import com.frankenergie.smartasset.client.MarketOrderClient
import com.frankenergie.smartasset.domain.OrderBook
import com.frankenergie.smartasset.model.DeliveryPeriod
import com.frankenergie.smartasset.model.ExecutedPurchase
import com.frankenergie.smartasset.model.MarketOrder
import com.frankenergie.smartasset.model.MarketOverviewResponse
import com.frankenergie.smartasset.model.OrderSide
import com.frankenergie.smartasset.model.OrderUpdateRequest
@@ -15,7 +17,8 @@ import java.util.UUID
@Service
class OrderBookService(
private val purchaseTrackerService: PurchaseTrackerService
private val purchaseTrackerService: PurchaseTrackerService,
private val marketOrderClient: MarketOrderClient
) {
private val orderBook = OrderBook()
@@ -26,6 +29,18 @@ class OrderBookService(
val period = DeliveryPeriod(request.deliveryStartTime, request.deliveryEndTime)
val matchedQuantity = orderBook.processOrder(period, request.orderSide, request.quantity, request.price)
marketOrderClient.sendOrder(
MarketOrder(
orderId = orderId,
groupId = "default",
deliveryStart = request.deliveryStartTime,
deliveryEnd = request.deliveryEndTime,
side = request.orderSide,
quantity = request.quantity,
price = request.price
)
)
if (matchedQuantity > BigDecimal.ZERO && request.orderSide == OrderSide.BUY) {
purchaseTrackerService.recordPurchase(
ExecutedPurchase(

View File

@@ -12,11 +12,13 @@ class OrderBookServiceTest {
private lateinit var service: OrderBookService
private lateinit var purchaseTrackerService: PurchaseTrackerService
private lateinit var marketOrderClient: com.frankenergie.smartasset.client.MarketOrderClient
@BeforeEach
fun setUp() {
purchaseTrackerService = PurchaseTrackerService()
service = OrderBookService(purchaseTrackerService)
marketOrderClient = com.frankenergie.smartasset.client.MarketOrderClient("test_market_orders.log")
service = OrderBookService(purchaseTrackerService, marketOrderClient)
}
@Test