Files
iot-dc3/dc3/env/dev.env
T
pnokerandClaude Code 234b93ce5d fix(db): generate attachment ids and resync the schema fingerprint
dc3_attachment.id lacked GENERATED BY DEFAULT AS IDENTITY (unlike
dc3_session/dc3_message), so R2dbcAttachmentStore inserts without an
id violated NOT NULL and every upload failed with HTTP 500. Add the
identity clause to the canonical initdb DDL, ship idempotent migration
04 for databases initialized before the fix (with a setval guard so
pre-existing explicit ids never collide), and resync the canonical
fingerprint 0d9ad803... across the embedded hash and every distributed
default.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-07 08:48:15 +08:00

90 lines
4.8 KiB
Bash

# Local source-run environment for IDE, EnvFile plugins, or Maven runs.
# This file mirrors the "Local source-run defaults" section in ../../.env.example.
# It intentionally excludes Compose-only variables such as DC3_IMAGE_* and DC3_*_PORT.
# Postgres
POSTGRES_HOST=localhost
POSTGRES_PORT=35432
POSTGRES_USERNAME=dc3
POSTGRES_PASSWORD=dc3dc3dc3
POSTGRES_DB=dc3
DC3_R2DBC_URL=r2dbc:postgresql://localhost:35432/dc3
DC3_SCHEMA_FINGERPRINT=0d9ad80328ef1a6ba91e53cf0c6db25812b8bd236e280939f967beee687d5108
DC3_SCHEMA_CONTRACT=r2dbc-flag-day-v1
# Kafka
DC3_MQ_KAFKA_BOOTSTRAP=localhost:9092
# RabbitMQ
DC3_MQ_TYPE=rabbitmq
RABBITMQ_VIRTUAL_HOST=dc3
RABBITMQ_HOST=localhost
RABBITMQ_PORT=35672
RABBITMQ_USERNAME=dc3
RABBITMQ_PASSWORD=dc3dc3dc3
RABBITMQ_SSL_ENABLED=false
RABBITMQ_SSL_ALGORITHM=TLS
RABBITMQ_SSL_VALIDATE_SERVER_CERTIFICATE=false
RABBITMQ_SSL_VERIFY_HOSTNAME=false
# Mqtt
MQTT_BROKER_HOST=localhost
MQTT_BROKER_PORT=31883
MQTT_USERNAME=dc3
MQTT_PASSWORD=dc3dc3dc3
# gRPC
CENTER_AUTH_HOST=localhost
CENTER_MANAGER_HOST=localhost
CENTER_DATA_HOST=localhost
CENTER_AGENTIC_HOST=localhost
# Runtime
NODE_ENV=dev
DC3_FACADE_GRPC_DEADLINE_MS=3000
DC3_SECURITY_KEY=dc3-dev-only-65d8aac255cffeb389f1c9d521ae9a1a # local dev only; generate your own value for real deployments
AUTH_HMAC_SECRET=dc3-dev-only-f56ea45d339b35f8e409e55dc4eaf795 # local dev only; generate your own value for real deployments
POINT_BATCH_SIZE=500
POINT_BATCH_RECEIVE_TIMEOUT_MILLIS=100
POINT_CONCURRENT_CONSUMERS=4
POINT_MAX_CONCURRENT_CONSUMERS=16
POINT_PREFETCH_COUNT=1000
POINT_RETRY_MAX_RETRIES=3
POINT_RETRY_INITIAL_INTERVAL_MILLIS=1000
POINT_RETRY_MULTIPLIER=2
POINT_RETRY_MAX_INTERVAL_MILLIS=10000
DC3_DRIVER_LEASE_SECONDS=30
DC3_DRIVER_LEASE_RENEW_CRON=0/10 * * * * ?
DC3_DRIVER_LEASE_QUEUE_EXPIRES_MILLIS=300000
MQTT_BATCH_SPEED=100
MQTT_BATCH_INTERVAL=5
# Agentic fallback OpenAI-compatible provider. Normal providers are stored in dc3_model_provider.
AGENTIC_FALLBACK_OPENAI_BASE_URL=https://api.openai.com
AGENTIC_FALLBACK_OPENAI_API_KEY=
AGENTIC_FALLBACK_OPENAI_MODEL=gpt-4o
AGENTIC_FALLBACK_OPENAI_TEMPERATURE=0.7
AGENTIC_FALLBACK_OPENAI_MAX_TOKENS=2048
AGENTIC_MEMORY_SCHEMA_INIT=never
AGENTIC_MEMORY_ENABLED=true
AGENTIC_TOOL_CALLING_ENABLED=true
AGENTIC_MEMORY_MAX_MESSAGES=50
AGENTIC_ATTACHMENT_STORAGE_PATH=dc3/data/agentic/attachments
# Per-process overrides. Uncomment only for a single service process.
# TCP_PORT=6270
# UDP_PORT=6271
# POSTGRES_SCHEMA=dc3_manager
# Gateway route overrides. Usually CENTER_*_HOST is enough for local runs.
# GATEWAY_ROUTE_AUTH_TOKEN_URI=http://localhost:8300/
# GATEWAY_ROUTE_AUTH_URI=http://localhost:8300
# GATEWAY_ROUTE_MANAGER_URI=http://localhost:8400
# GATEWAY_ROUTE_DATA_URI=http://localhost:8500
# GATEWAY_ROUTE_AGENTIC_URI=http://localhost:8600
# OAuth RS256 signing key (Base64 PKCS8) - dev-only, generate your own for real deployments
DC3_OAUTH_JWT_PRIVATE_KEY=MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDbtqwfFp0Dinr4m9rNfxa5tbEF9mjO7vMQx8QZOvhkvjlZRUmpb+mZLFdfLLTFdU1chMyBB/vzQmQ7nGaodBlYGD3CqVq30zoJXNCE2EIqwoB/uv/nstrmrh5e+5h0dKYAER7TlKoyFLu2xsl4h/bJTWFaM81tMMfJ3xYDgkearvNcKUaFoOKmCT7KFSsZTf57H4yTzjciDp2o2mT4fI9fTrx0S7zq4If0B2V3iIC+jqUVnrYGRdEw+6K26qHVRw/8EAQrtR9QtPS6sNu9aMaS0FdIo1BcPdPUpXSXIUYWrXSB7CJOlSybk3Mx7pYNn7g3Lb6uhg3NPtepwz4tvg+7AgMBAAECggEABzyVZFmDIeF0ldCECRHaMGvIA5l0Ob7HSx7Z6PyF5sNAHjvMktA53ViRRJuVxlxCEioA0ZfvEyZEFUa06TUYMa67BqUUV1mVlfgND42KO8LaWEIOPhsA85qDtVdpZ6ftTSl+Re8SGWS4HtfZFhiSMNEZ6x09S93Qo7ak1aDUTj2lMAa1JgMBPmrNI+1CJ2AH4QQm55Emw03p+Y2kaBamnM9VBfLYkVSDKrtoYZiNku3UmhNjwSF1F6n/4/O92ZFiiuM7pT3N6Oi+TSJDzGtOY9ToQ2NP6bkg2llxcWnfAigYckrdEqOFaiIh8i+UdbmakLyuX/1uzPAwR8ONBX5taQKBgQD/21DtxsNj3rhuYwHb2VkA4fEsIJKqrl/beRWaVBmh/6NH4yZ68LQJjE90JGoaqm9hxj5X6Iqob6iKsVbvcP+e84WZco+PV7Iq1qBkLqLARlkwZsWxxQC9dvJk47YqZkgInJenFDSUBGT6YOmUg3LeKzVvUsrHOmNIKGDxUeVj8wKBgQDb1iyUaitE1cnKHglVVSVJ4w3YVaGtDGQv+84Qqz1vnHYvJmtkW8dKRWvq++A6uXrhNuH2uGIk6etaDviyPbBmcP3d5uBSDI5+S6aRd64taP06UxIpxgB5t1ZMOZZBMbj+FYQ22QC9puUBbe78B6br82/UFYy4KwXkU233Zme/GQKBgQCroLjG58AF7E8XbT6/9SppFycqjKcV62bN2ImPPr77Fnq3LD6R1YlPplld9Vdfj9irY8pKOelZV51de9xvPgOa4oxKBLkcVJ1lcxegXFA8XnRRrX8L4rS+Y13yI3X9NyM286QfJcSnTdNWyU+mmg6hzaZIiOcRga87pipxdphD1QKBgQDMU2+R7nATBaYNbwd7wazr1Na8eTLRNZA1LRSlV5O9li4eutXcLJW5yXZ5rOwHiPfWNf2mJFBMQQLX7MxoVoALZv/+bKWYfUU/y66gzB0e5dNfj3B1VSyB9M6IAIpQRBfOSU9e7ykKHQIC5xvWMoKKEfShqfnl/071njm6VfsdmQKBgQDC4syV1oYM2SHmHm7Atpc+ZPvL1P2r2czLx1mTgl2BosoB3DMr0KpS2db9sB/aGOubsE5RVD8Twmx7S9SC9CLbpS4kt4wV8Dz5VCK0YhkH7gK+ZGtDigm8EycpyjsnBDNF1Hpz6NfzNIMgKHs08lHgZ0rOi7PiYCX9eV3nw7raaQ==
DC3_OAUTH_JWT_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA56U3VICcx5z4DFSb+SJcJ+p5inLyPbvlfUZSyqnTS4AuHapCaG1z7T7/Ethx6c9K8tebSt1y71bJeAB2ZeOk7zihg6AaeT4wD/Dq+u2WIAzXeZlluIEOInpx8aqbKt53LDw9/oLjROFlSzwbk4DIoWEN8RHqAzp6HpJwMAJPu+7z1m9AFcuJmGyydhMu1wwmCjdcSXf4mu43tcBibzUPQXfRTDmy5Su/qDEeRS3AQy/mW77iSkU9ngST1Owe6zHrAXGHReLEEIOJ0s5V6L1y153ShjN8JYwXIc+AcCtVmdfltt+ivz73ALZQM4UfCIYOE4qKpZceHGP4by7FeEN2YQIDAQAB