diff --git a/Dockerfile.production b/Dockerfile.production
index 521ea5c9fd3ae8e8f567a18bf797ddf377972a38..eda636a124f4d4d37fbbef76850773658a8432df 100644
--- a/Dockerfile.production
+++ b/Dockerfile.production
@@ -18,4 +18,4 @@ COPY --from=builder /go/src/app/tmp/main .
 
 EXPOSE 8080
 
-CMD ["./main"]
+CMD ["./main"]
\ No newline at end of file
diff --git a/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go
index 68843831d59da3562f7d0401fe9cef7cb6f4004b..9479228272e8874af25c0bcdc6f371554f8321ef 100644
--- a/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go
+++ b/src/module/pendaftaran_sidsem/entity/pendaftaran_sidsem.go
@@ -140,6 +140,11 @@ type EditDitolakRequest struct {
 	Ditolak bool   `json:"ditolak"`
 }
 
+type DetailReq struct {
+	IdMahasiswa string `json:"id_mahasiswa"`
+	IdSidSem    string `json:"id_sidsem"`
+}
+
 type Placeholders struct {
 	Nama         string `json:"nama"`
 	Nim          string `json:"nim"`
@@ -188,3 +193,29 @@ type DetailSidSemByMahasiswa struct {
 	NamaRuangan  string    `json:"nama_ruangan"`
 	Ditolak      bool      `json:"ditolak"`
 }
+
+type DetailSidSemTA struct {
+	IDMahasiswa   string         `json:"id_mahasiswa"`
+	Nama          string         `json:"nama"`
+	Email         string         `json:"email"`
+	JalurPilihan  string         `json:"jalur_pilihan"`
+	DosbingName   string         `json:"dosbing_name"`
+	DosujiName    string         `json:"dosuji_name"`
+	Tipe          string         `json:"tipe"`
+	JudulProposal string         `json:"judul_proposal"`
+	Deskripsi     string         `json:"deskripsi"`
+	Berkas        []BerkasSidSem `json:"berkas_sidsem"`
+	JadwalSidang  time.Time      `json:"jadwal_sidang"`
+	Tempat        string         `json:"tempat"`
+	Status        bool           `json:"status"`
+}
+
+type TipeJudulDesc struct {
+	JudulProposal string `json:"judul_proposal"`
+	Deskripsi     string `json:"deskripsi"`
+}
+
+type JadwalStatus struct {
+	WaktuMulai string `json:"waktu_mulai"`
+	Ditolak    string `json:"ditolak"`
+}
diff --git a/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
index 35c5b98f20ae99f09d0b940a2e1a5372bc4e9d01..663e17c9c9daaec9879aefe352a06ab914b56ff9 100644
--- a/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
+++ b/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
@@ -481,7 +481,7 @@ func (repo *PendaftaranSidSemRepo) GetNameUntilTopikPlaceholders(idMahasiswa str
 func (repo *PendaftaranSidSemRepo) GetDosbingNamePlaceholder(idMahasiswa string) (entity.DosbingName, error) {
 	var dosbingName entity.DosbingName
 
-	query := ` SELECT p.nama FROM pengguna p JOIN dosen_bimbingan db ON p.id = db.dosen_id JOIN pendaftaran_ta pt ON db.pendaftaran_id = pt.id WHERE pt.id_mahasiswa = ? AND pt.status = true;`
+	query := ` SELECT p.nama FROM pengguna p JOIN dosen_bimbingan db ON p.id = db.dosen_id JOIN pendaftaran_ta pt ON db.pendaftaran_id = pt.id WHERE pt.id_mahasiswa = ? AND pt.status = 'APPROVED';`
 
 	if err := repo.DBRead.Raw(query, idMahasiswa).Scan(&dosbingName).Error; err != nil {
 		return entity.DosbingName{}, err
@@ -549,3 +549,50 @@ func (repo *PendaftaranSidSemRepo) GetRemainingDetailSidSem(idPendaftaranSidSem
 
 	return remDet, nil
 }
+
+func (repo *PendaftaranSidSemRepo) GetDosujiNamePlaceholder(idSidsem string) (entity.DosbingName, error) {
+	var dosbingName entity.DosbingName
+
+	query := ` SELECT p.nama FROM pengguna p JOIN penguji_sidsem ps ON p.id = ps.dosen_id JOIN pendaftaran_sidsem pd ON pd.id = ps.sidsem_id WHERE pd.id = ?`
+
+	if err := repo.DBRead.Raw(query, idSidsem).Scan(&dosbingName).Error; err != nil {
+		return entity.DosbingName{}, err
+	}
+
+	return dosbingName, nil
+}
+
+func (repo *PendaftaranSidSemRepo) GetSidSemJudDes(idSidsem string) (entity.TipeJudulDesc, error) {
+	var tipeJudulDesc entity.TipeJudulDesc
+
+	if err := repo.DBRead.Table("pendaftaran_sidsem").Find(&tipeJudulDesc).Where("id = ?", idSidsem); err.Error != nil {
+		return entity.TipeJudulDesc{}, err.Error
+	}
+
+	return tipeJudulDesc, nil
+}
+
+func (repo *PendaftaranSidSemRepo) GetSidSemBerkas(idSidsem string) ([]entity.BerkasSidSem, error) {
+	var berkasSidsem []entity.BerkasSidSem
+
+	if err := repo.DBRead.Table("berkas_sidsem").Where("id_pendaftaran_sid_sem = ?", idSidsem).Find(&berkasSidsem); err.Error != nil {
+		return []entity.BerkasSidSem{}, err.Error
+	}
+
+	return berkasSidsem, nil
+}
+
+func (repo *PendaftaranSidSemRepo) GetRuanganName(idSidsem string) (string, error) {
+	var namaRuangan string
+
+	err := repo.DBRead.Table("ruangan").
+		Select("nama").
+		Joins("JOIN pendaftaran_sidsem on ruangan.id = pendaftaran_sidsem.ruangan_id").
+		Where("pendaftaran_sidsem.id = ?", idSidsem).
+		Scan(&namaRuangan).Error
+	if err != nil {
+		return "", err
+	}
+
+	return namaRuangan, nil
+}
diff --git a/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
index dd3d6144cb47cd759cd8289318b98a1a3a9898d3..7d98126d12e4f544cddea50297e39537936ce5b3 100644
--- a/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
+++ b/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
@@ -24,6 +24,7 @@ type PendaftaranSidSemUsecase interface {
 	GetPendaftaran(offset, size int) (output []entity.RekapPendaftaranRequest, err error)
 	IsRegisteredSidsem(idMahasiswa string, tipe string) (bool, error)
 	GetSidSemDetailByMahasiswaId(idMahasiswa string, tipe string) (entity.DetailSidSemByMahasiswa, error)
+	GetSidSemDetailTA(idMahasiswa string, IdSidSem string) (entity.DetailSidSemTA, error)
 }
 
 type PendaftaranSidSemUc struct {
@@ -190,3 +191,64 @@ func (uc *PendaftaranSidSemUc) GetSidSemDetailByMahasiswaId(idMahasiswa string,
 	return detailSidSemByMahasiswa, nil
 
 }
+
+func (uc *PendaftaranSidSemUc) GetSidSemDetailTA(idMahasiswa string, idSidsem string) (entity.DetailSidSemTA, error) {
+	var namaRuangan string
+	infoTopik, err := uc.pendaftaransidsemrepo.GetInfoTopikMahasiswa(idMahasiswa)
+	if err != nil {
+		return entity.DetailSidSemTA{}, err
+	}
+
+	dosbingName, err := uc.pendaftaransidsemrepo.GetDosbingNamePlaceholder(idMahasiswa)
+	if err != nil {
+		return entity.DetailSidSemTA{}, err
+	}
+
+	dosujiName, err := uc.pendaftaransidsemrepo.GetDosujiNamePlaceholder(idSidsem)
+	if err != nil {
+		return entity.DetailSidSemTA{}, err
+	}
+
+	judDes, err := uc.pendaftaransidsemrepo.GetSidSemJudDes(idSidsem)
+	if err != nil {
+		return entity.DetailSidSemTA{}, err
+	}
+
+	berkasSidsem, err := uc.pendaftaransidsemrepo.GetSidSemBerkas(idSidsem)
+	if err != nil {
+		return entity.DetailSidSemTA{}, err
+	}
+
+	remDet, err := uc.pendaftaransidsemrepo.GetRemainingDetailSidSem(idSidsem)
+	if err != nil {
+		return entity.DetailSidSemTA{}, err
+	}
+
+	if remDet.RuanganID == "" {
+		namaRuangan = "Belum Ada"
+	} else {
+		namaRuangan, err = uc.pendaftaransidsemrepo.GetRuanganName(idSidsem)
+		if err != nil {
+			return entity.DetailSidSemTA{}, err
+		}
+	}
+
+	detailSidsemTA := entity.DetailSidSemTA{
+		IDMahasiswa:   infoTopik.IDMahasiswa,
+		Nama:          infoTopik.Nama,
+		Email:         infoTopik.Email,
+		JalurPilihan:  infoTopik.JalurPilihan,
+		DosbingName:   dosbingName.Nama,
+		DosujiName:    dosujiName.Nama,
+		Tipe:          remDet.Tipe,
+		JudulProposal: judDes.JudulProposal,
+		Deskripsi:     judDes.Deskripsi,
+		Berkas:        berkasSidsem,
+		JadwalSidang:  remDet.WaktuMulai,
+		Tempat:        namaRuangan,
+		Status:        remDet.Ditolak,
+	}
+
+	return detailSidsemTA, nil
+
+}
diff --git a/src/module/pendaftaran_sidsem/internal/usecase/repository.go b/src/module/pendaftaran_sidsem/internal/usecase/repository.go
index 788731c385fa87f79f681e17eddfc8dd27311cb7..e0ae5ad4af8324b444ada14336b059dbb65cc8a2 100644
--- a/src/module/pendaftaran_sidsem/internal/usecase/repository.go
+++ b/src/module/pendaftaran_sidsem/internal/usecase/repository.go
@@ -24,4 +24,8 @@ type PendaftaranSidSemRepository interface {
 	IsRegisteredSidsem(idMahasiswa string, tipe string) (string, error)
 	GetInfoTopikMahasiswa(idMahasiswa string) (entity.InfoTopikMahasiswa, error)
 	GetRemainingDetailSidSem(idMahasiswa string) (entity.RemainingDetailSidSem, error)
+	GetDosujiNamePlaceholder(idSidsem string) (entity.DosbingName, error)
+	GetSidSemJudDes(idSidsem string) (entity.TipeJudulDesc, error)
+	GetSidSemBerkas(idSidsem string) ([]entity.BerkasSidSem, error)
+	GetRuanganName(idSidsem string) (string, error)
 }
diff --git a/src/module/pendaftaran_sidsem/transport/timta_handler.go b/src/module/pendaftaran_sidsem/transport/timta_handler.go
index 3d374c68f307a23b21366820b15050c643b2fa9a..0f184ab7ee8c8b22206ee8648914291b9307d677 100644
--- a/src/module/pendaftaran_sidsem/transport/timta_handler.go
+++ b/src/module/pendaftaran_sidsem/transport/timta_handler.go
@@ -28,6 +28,7 @@ func NewTIMTAPendaftaranSidSemHandler(cfg config.PendaftaranSidSemTransportConfi
 
 func (t *TIMTAPendaftaranSidSemHandler) MountTIMTA(group *echo.Group) {
 	group.GET("/pendaftaran-sidsem", t.GetPendaftaran)
+	group.GET("/detail-sidsem", t.GetSidSemDetail)
 	group.PATCH("/pendaftaran-ditolak", t.EditDitolak)
 
 }
@@ -52,7 +53,6 @@ func (t *TIMTAPendaftaranSidSemHandler) GetPendaftaran(c echo.Context) error {
 	return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "Pendaftaran successfully retreived", jadwal))
 }
 
-
 func (t *TIMTAPendaftaranSidSemHandler) EditDitolak(c echo.Context) error {
 	request := new(entity.EditDitolakRequest)
 	if err := c.Bind(&request); err != nil {
@@ -65,3 +65,16 @@ func (t *TIMTAPendaftaranSidSemHandler) EditDitolak(c echo.Context) error {
 
 	return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "Pendaftaran successfully edited", jadwal))
 }
+
+func (t *TIMTAPendaftaranSidSemHandler) GetSidSemDetail(c echo.Context) error {
+	request := new(entity.DetailReq)
+	if err := c.Bind(&request); err != nil {
+		return c.JSON(http.StatusBadRequest, utils.ResponseDetailOutput(false, http.StatusBadRequest, err.Error(), nil))
+	}
+	jadwal, err := t.pendaftaransidsemUsecase.GetSidSemDetailTA(request.IdMahasiswa, request.IdSidSem)
+	if err != nil {
+		return c.JSON(http.StatusBadRequest, utils.ResponseDetailOutput(false, http.StatusBadRequest, err.Error(), nil))
+	}
+
+	return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "Pendaftaran successfully edited", jadwal))
+}