Fix datetime
This commit is contained in:
@@ -6,7 +6,7 @@ Authentication service business logic - Complete implementation
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta, timezone
|
||||||
from typing import Optional, Dict, Any
|
from typing import Optional, Dict, Any
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
from sqlalchemy import select, update
|
from sqlalchemy import select, update
|
||||||
@@ -64,7 +64,7 @@ class AuthService:
|
|||||||
UserRegisteredEvent(
|
UserRegisteredEvent(
|
||||||
event_id=str(user.id),
|
event_id=str(user.id),
|
||||||
service_name="auth-service",
|
service_name="auth-service",
|
||||||
timestamp=datetime.now(datetime.timezone.utc),
|
timestamp=datetime.now(timezone.utc),
|
||||||
data={
|
data={
|
||||||
"user_id": str(user.id),
|
"user_id": str(user.id),
|
||||||
"email": user.email,
|
"email": user.email,
|
||||||
@@ -114,7 +114,7 @@ class AuthService:
|
|||||||
await db.execute(
|
await db.execute(
|
||||||
update(User)
|
update(User)
|
||||||
.where(User.id == user.id)
|
.where(User.id == user.id)
|
||||||
.values(last_login=datetime.now(datetime.timezone.utc))
|
.values(last_login=datetime.now(timezone.utc))
|
||||||
)
|
)
|
||||||
await db.commit()
|
await db.commit()
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ class AuthService:
|
|||||||
refresh_token_hash=security_manager.hash_token(refresh_token),
|
refresh_token_hash=security_manager.hash_token(refresh_token),
|
||||||
ip_address=ip_address,
|
ip_address=ip_address,
|
||||||
user_agent=user_agent,
|
user_agent=user_agent,
|
||||||
expires_at=datetime.now(datetime.timezone.utc) + timedelta(days=settings.JWT_REFRESH_TOKEN_EXPIRE_DAYS)
|
expires_at=datetime.now(timezone.utc) + timedelta(days=settings.JWT_REFRESH_TOKEN_EXPIRE_DAYS)
|
||||||
)
|
)
|
||||||
|
|
||||||
db.add(session)
|
db.add(session)
|
||||||
@@ -152,7 +152,7 @@ class AuthService:
|
|||||||
UserLoginEvent(
|
UserLoginEvent(
|
||||||
event_id=str(session.id),
|
event_id=str(session.id),
|
||||||
service_name="auth-service",
|
service_name="auth-service",
|
||||||
timestamp=datetime.now(datetime.timezone.utc),
|
timestamp=datetime.now(timezone.utc),
|
||||||
data={
|
data={
|
||||||
"user_id": str(user.id),
|
"user_id": str(user.id),
|
||||||
"email": user.email,
|
"email": user.email,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Training service business logic
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta, timezone
|
||||||
from typing import Dict, Any, List, Optional
|
from typing import Dict, Any, List, Optional
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
from sqlalchemy import select, update, and_
|
from sqlalchemy import select, update, and_
|
||||||
@@ -46,8 +46,8 @@ class TrainingService:
|
|||||||
progress=0,
|
progress=0,
|
||||||
current_step="Queued for training",
|
current_step="Queued for training",
|
||||||
requested_by=user_data.get("user_id"),
|
requested_by=user_data.get("user_id"),
|
||||||
training_data_from= datetime.now(datetime.timezone.utc) - timedelta(days=request.training_days),
|
training_data_from= datetime.now(timezone.utc) - timedelta(days=request.training_days),
|
||||||
training_data_to= datetime.now(datetime.timezone.utc)
|
training_data_to= datetime.now(timezone.utc)
|
||||||
)
|
)
|
||||||
|
|
||||||
db.add(training_job)
|
db.add(training_job)
|
||||||
@@ -64,7 +64,7 @@ class TrainingService:
|
|||||||
TrainingStartedEvent(
|
TrainingStartedEvent(
|
||||||
event_id=str(uuid.uuid4()),
|
event_id=str(uuid.uuid4()),
|
||||||
service_name="training-service",
|
service_name="training-service",
|
||||||
timestamp= datetime.now(datetime.timezone.utc),
|
timestamp= datetime.now(timezone.utc),
|
||||||
data={
|
data={
|
||||||
"job_id": str(training_job.id),
|
"job_id": str(training_job.id),
|
||||||
"tenant_id": tenant_id,
|
"tenant_id": tenant_id,
|
||||||
@@ -206,7 +206,7 @@ class TrainingService:
|
|||||||
async def _execute_training(self, job_id: str, request: TrainingRequest, db: AsyncSession):
|
async def _execute_training(self, job_id: str, request: TrainingRequest, db: AsyncSession):
|
||||||
"""Execute training job"""
|
"""Execute training job"""
|
||||||
|
|
||||||
start_time = datetime.now(datetime.timezone.utc)
|
start_time = datetime.now(timezone.utc)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Update job status
|
# Update job status
|
||||||
@@ -229,7 +229,7 @@ class TrainingService:
|
|||||||
await self._save_trained_models(job_id, models_result, validation_result, db)
|
await self._save_trained_models(job_id, models_result, validation_result, db)
|
||||||
|
|
||||||
# Complete job
|
# Complete job
|
||||||
duration = int(( datetime.now(datetime.timezone.utc) - start_time).total_seconds())
|
duration = int(( datetime.now(timezone.utc) - start_time).total_seconds())
|
||||||
await self._complete_job(job_id, models_result, validation_result, duration, db)
|
await self._complete_job(job_id, models_result, validation_result, duration, db)
|
||||||
|
|
||||||
# Publish completion event
|
# Publish completion event
|
||||||
@@ -239,7 +239,7 @@ class TrainingService:
|
|||||||
TrainingCompletedEvent(
|
TrainingCompletedEvent(
|
||||||
event_id=str(uuid.uuid4()),
|
event_id=str(uuid.uuid4()),
|
||||||
service_name="training-service",
|
service_name="training-service",
|
||||||
timestamp= datetime.now(datetime.timezone.utc),
|
timestamp= datetime.now(timezone.utc),
|
||||||
data={
|
data={
|
||||||
"job_id": str(job_id),
|
"job_id": str(job_id),
|
||||||
"models_trained": len(models_result),
|
"models_trained": len(models_result),
|
||||||
@@ -263,7 +263,7 @@ class TrainingService:
|
|||||||
TrainingFailedEvent(
|
TrainingFailedEvent(
|
||||||
event_id=str(uuid.uuid4()),
|
event_id=str(uuid.uuid4()),
|
||||||
service_name="training-service",
|
service_name="training-service",
|
||||||
timestamp= datetime.now(datetime.timezone.utc),
|
timestamp= datetime.now(timezone.utc),
|
||||||
data={
|
data={
|
||||||
"job_id": str(job_id),
|
"job_id": str(job_id),
|
||||||
"error": str(e)
|
"error": str(e)
|
||||||
@@ -281,7 +281,7 @@ class TrainingService:
|
|||||||
status=status,
|
status=status,
|
||||||
progress=progress,
|
progress=progress,
|
||||||
current_step=current_step,
|
current_step=current_step,
|
||||||
updated_at= datetime.now(datetime.timezone.utc)
|
updated_at= datetime.now(timezone.utc)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
await db.commit()
|
await db.commit()
|
||||||
@@ -374,7 +374,7 @@ class TrainingService:
|
|||||||
status="completed",
|
status="completed",
|
||||||
progress=100,
|
progress=100,
|
||||||
current_step="Training completed successfully",
|
current_step="Training completed successfully",
|
||||||
completed_at= datetime.now(datetime.timezone.utc),
|
completed_at= datetime.now(timezone.utc),
|
||||||
duration_seconds=duration,
|
duration_seconds=duration,
|
||||||
models_trained=models_result,
|
models_trained=models_result,
|
||||||
metrics=metrics,
|
metrics=metrics,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Used across all microservices for consistent authentication
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from jose import jwt
|
from jose import jwt
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta, timezone
|
||||||
from typing import Optional, Dict, Any
|
from typing import Optional, Dict, Any
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@@ -22,9 +22,9 @@ class JWTHandler:
|
|||||||
to_encode = data.copy()
|
to_encode = data.copy()
|
||||||
|
|
||||||
if expires_delta:
|
if expires_delta:
|
||||||
expire = datetime.now(datetime.timezone.utc) + expires_delta
|
expire = datetime.now(timezone.utc) + expires_delta
|
||||||
else:
|
else:
|
||||||
expire = datetime.now(datetime.timezone.utc) + timedelta(minutes=30)
|
expire = datetime.now(timezone.utc) + timedelta(minutes=30)
|
||||||
|
|
||||||
to_encode.update({"exp": expire, "type": "access"})
|
to_encode.update({"exp": expire, "type": "access"})
|
||||||
|
|
||||||
@@ -36,9 +36,9 @@ class JWTHandler:
|
|||||||
to_encode = data.copy()
|
to_encode = data.copy()
|
||||||
|
|
||||||
if expires_delta:
|
if expires_delta:
|
||||||
expire = datetime.now(datetime.timezone.utc) + expires_delta
|
expire = datetime.now(timezone.utc) + expires_delta
|
||||||
else:
|
else:
|
||||||
expire = datetime.now(datetime.timezone.utc) + timedelta(days=7)
|
expire = datetime.now(timezone.utc) + timedelta(days=7)
|
||||||
|
|
||||||
to_encode.update({"exp": expire, "type": "refresh"})
|
to_encode.update({"exp": expire, "type": "refresh"})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user