Add vue-router, login/setup flow and backend logging
Refactor frontend to route-based navigation with vue-router, add system setup and login pages with API integration. Add structured logging, access-log middleware and startup lifecycle to FastAPI backend.
This commit is contained in:
@@ -1,20 +1,37 @@
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.logging import get_logger
|
||||
from app.models.reimbursement import ReimbursementRequest
|
||||
from app.repositories.reimbursement import ReimbursementRepository
|
||||
from app.schemas.reimbursement import ReimbursementCreate
|
||||
|
||||
logger = get_logger("app.services.reimbursement")
|
||||
|
||||
|
||||
class ReimbursementService:
|
||||
def __init__(self, db: Session) -> None:
|
||||
self.repository = ReimbursementRepository(db)
|
||||
|
||||
def list_reimbursements(self) -> list[ReimbursementRequest]:
|
||||
return self.repository.list()
|
||||
items = self.repository.list()
|
||||
logger.info("Listed reimbursements (count=%d)", len(items))
|
||||
return items
|
||||
|
||||
def get_reimbursement(self, request_id: str) -> ReimbursementRequest | None:
|
||||
return self.repository.get(request_id)
|
||||
request = self.repository.get(request_id)
|
||||
if request:
|
||||
logger.info("Fetched reimbursement id=%s no=%s", request_id, request.request_no)
|
||||
else:
|
||||
logger.warning("Reimbursement not found id=%s", request_id)
|
||||
return request
|
||||
|
||||
def create_reimbursement(self, payload: ReimbursementCreate) -> ReimbursementRequest:
|
||||
request = ReimbursementRequest(**payload.model_dump(), status="draft")
|
||||
return self.repository.create(request)
|
||||
created = self.repository.create(request)
|
||||
logger.info(
|
||||
"Created reimbursement id=%s no=%s amount=%s",
|
||||
created.id,
|
||||
created.request_no,
|
||||
created.amount,
|
||||
)
|
||||
return created
|
||||
|
||||
Reference in New Issue
Block a user