Refactor point value object and add observability

This commit is contained in:
Bernard Ngandu
2025-10-10 14:55:36 +02:00
parent 8a43d3967c
commit 68eb54995f
46 changed files with 3691 additions and 229 deletions
+3
View File
@@ -6,4 +6,7 @@ return [
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true],
Symfony\Bundle\MercureBundle\MercureBundle::class => ['all' => true],
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
Sentry\SentryBundle\SentryBundle::class => ['prod' => true],
];
+6
View File
@@ -24,6 +24,12 @@ doctrine:
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
AppValueObject:
type: attribute
is_bundle: false
dir: '%kernel.project_dir%/src/ValueObject'
prefix: 'App\ValueObject'
alias: AppValueObject
controller_resolver:
auto_mapping: false
+8
View File
@@ -0,0 +1,8 @@
mercure:
hubs:
default:
url: '%env(MERCURE_URL)%'
public_url: '%env(MERCURE_PUBLIC_URL)%'
jwt:
secret: '%env(MERCURE_JWT_SECRET)%'
publish: '*'
+18
View File
@@ -0,0 +1,18 @@
framework:
messenger:
# Uncomment this (and the failed transport below) to send failed messages to this transport for later handling.
# failure_transport: failed
transports:
sync: 'sync://'
routing:
App\Message\SignalCreatedMessage: sync
# when@test:
# framework:
# messenger:
# transports:
# # replace with your transport name here (e.g., my_transport: 'in-memory://')
# # For more Messenger testing tools, see https://github.com/zenstruck/messenger-test
# async: 'in-memory://'
+79
View File
@@ -0,0 +1,79 @@
monolog:
channels:
- deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists
- signals
when@dev:
monolog:
handlers:
main:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
channels: ["!event"]
signals:
type: stream
path: "%kernel.logs_dir%/signals_%kernel.environment%.log"
level: debug
channels: [signals]
# uncomment to get logging in your browser
# you may have to allow bigger header sizes in your Web server configuration
#firephp:
# type: firephp
# level: info
#chromephp:
# type: chromephp
# level: info
console:
type: console
process_psr_3_messages: false
channels: ["!event", "!doctrine", "!console"]
when@test:
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
excluded_http_codes: [404, 405]
channels: ["!event"]
nested:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
signals:
type: stream
path: "%kernel.logs_dir%/signals_%kernel.environment%.log"
level: debug
channels: [signals]
when@prod:
monolog:
handlers:
main:
type: stream
path: php://stderr
level: info
formatter: monolog.formatter.json
channels: ["!event"]
signals:
type: stream
path: php://stderr
level: info
formatter: monolog.formatter.json
channels: [signals]
sentry:
type: sentry
level: error
hub_id: sentry
channels: ["!event", "!doctrine", "!console"]
console:
type: console
process_psr_3_messages: false
channels: ["!event", "!doctrine"]
deprecation:
type: stream
channels: [deprecation]
path: php://stderr
formatter: monolog.formatter.json
+6
View File
@@ -0,0 +1,6 @@
sentry:
dsn: '%env(SENTRY_DSN)%'
register_error_listener: true
options:
environment: '%kernel.environment%'
traces_sample_rate: 0.0
+8
View File
@@ -0,0 +1,8 @@
framework:
rate_limiter:
signal_submission:
policy: 'token_bucket'
limit: 5
rate:
interval: '1 minute'
amount: 1
+11
View File
@@ -0,0 +1,11 @@
framework:
validation:
# Enables validator auto-mapping support.
# For instance, basic validation constraints will be inferred from Doctrine's metadata.
#auto_mapping:
# App\Entity\: []
when@test:
framework:
validation:
not_compromised_password: false
+4
View File
@@ -4,6 +4,9 @@
# Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
parameters:
app.signal_snapshot_limit: 750
app.max_signal_distance_km: 1
app.signal_stream_topic: '%env(string:MERCURE_SIGNALS_TOPIC)%'
services:
# default configuration for services in *this* file
@@ -23,3 +26,4 @@ services:
# add more service definitions when explicit configuration is needed
# please note that last definitions always *replace* previous ones