5.0.4: Добавление записей для не-админов
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m22s

This commit is contained in:
poignatov
2026-02-09 14:41:39 +03:00
parent 2128e1b69c
commit 7012f1c8ed
4 changed files with 13 additions and 13 deletions

View File

@@ -1 +1 @@
5.0.2 5.0.4

View File

@@ -4185,7 +4185,6 @@ func main() {
adminAPIRoutes := r.PathPrefix("/").Subrouter() adminAPIRoutes := r.PathPrefix("/").Subrouter()
adminAPIRoutes.Use(app.authMiddleware) adminAPIRoutes.Use(app.authMiddleware)
adminAPIRoutes.Use(app.adminMiddleware) adminAPIRoutes.Use(app.adminMiddleware)
adminAPIRoutes.HandleFunc("/message/post", app.messagePostHandler).Methods("POST", "OPTIONS")
adminAPIRoutes.HandleFunc("/weekly_goals/setup", app.weeklyGoalsSetupHandler).Methods("POST", "OPTIONS") adminAPIRoutes.HandleFunc("/weekly_goals/setup", app.weeklyGoalsSetupHandler).Methods("POST", "OPTIONS")
adminAPIRoutes.HandleFunc("/daily-report/trigger", app.dailyReportTriggerHandler).Methods("POST", "OPTIONS") adminAPIRoutes.HandleFunc("/daily-report/trigger", app.dailyReportTriggerHandler).Methods("POST", "OPTIONS")
adminAPIRoutes.HandleFunc("/project_score_sample_mv/refresh", app.projectScoreSampleMvRefreshHandler).Methods("POST", "OPTIONS") adminAPIRoutes.HandleFunc("/project_score_sample_mv/refresh", app.projectScoreSampleMvRefreshHandler).Methods("POST", "OPTIONS")
@@ -4238,7 +4237,8 @@ func main() {
// Projects & stats // Projects & stats
protected.HandleFunc("/api/weekly-stats", app.getWeeklyStatsHandler).Methods("GET", "OPTIONS") protected.HandleFunc("/api/weekly-stats", app.getWeeklyStatsHandler).Methods("GET", "OPTIONS")
protected.HandleFunc("/playlife-feed", app.getWeeklyStatsHandler).Methods("GET", "OPTIONS") protected.HandleFunc("/playlife-feed", app.getWeeklyStatsHandler).Methods("GET", "OPTIONS")
// Note: /message/post, /weekly_goals/setup, /daily-report/trigger moved to adminAPIRoutes protected.HandleFunc("/message/post", app.messagePostHandler).Methods("POST", "OPTIONS")
// Note: /weekly_goals/setup, /daily-report/trigger moved to adminAPIRoutes
protected.HandleFunc("/projects", app.getProjectsHandler).Methods("GET", "OPTIONS") protected.HandleFunc("/projects", app.getProjectsHandler).Methods("GET", "OPTIONS")
protected.HandleFunc("/project/priority", app.setProjectPriorityHandler).Methods("POST", "OPTIONS") protected.HandleFunc("/project/priority", app.setProjectPriorityHandler).Methods("POST", "OPTIONS")
protected.HandleFunc("/project/color", app.setProjectColorHandler).Methods("POST", "OPTIONS") protected.HandleFunc("/project/color", app.setProjectColorHandler).Methods("POST", "OPTIONS")
@@ -14488,8 +14488,7 @@ func (a *App) getBoardCompletedHandler(w http.ResponseWriter, r *http.Request) {
wi.image_path, wi.image_path,
wi.link, wi.link,
wi.completed, wi.completed,
wi.project_id AS item_project_id, wi.group_name AS item_group_name,
wp.name AS item_project_name,
wc.id AS condition_id, wc.id AS condition_id,
wc.display_order, wc.display_order,
wc.task_condition_id, wc.task_condition_id,
@@ -14503,7 +14502,6 @@ func (a *App) getBoardCompletedHandler(w http.ResponseWriter, r *http.Request) {
sc.start_date, sc.start_date,
COALESCE(u.name, u.email) AS user_name COALESCE(u.name, u.email) AS user_name
FROM wishlist_items wi FROM wishlist_items wi
LEFT JOIN projects wp ON wi.project_id = wp.id AND wp.deleted = FALSE
LEFT JOIN wishlist_conditions wc ON wi.id = wc.wishlist_item_id LEFT JOIN wishlist_conditions wc ON wi.id = wc.wishlist_item_id
LEFT JOIN task_conditions tc ON wc.task_condition_id = tc.id LEFT JOIN task_conditions tc ON wc.task_condition_id = tc.id
LEFT JOIN tasks t ON tc.task_id = t.id AND t.deleted = FALSE LEFT JOIN tasks t ON tc.task_id = t.id AND t.deleted = FALSE
@@ -14533,8 +14531,7 @@ func (a *App) getBoardCompletedHandler(w http.ResponseWriter, r *http.Request) {
var imagePath sql.NullString var imagePath sql.NullString
var link sql.NullString var link sql.NullString
var completed bool var completed bool
var itemProjectID sql.NullInt64 var itemGroupName sql.NullString
var itemProjectName sql.NullString
var conditionID sql.NullInt64 var conditionID sql.NullInt64
var displayOrder sql.NullInt64 var displayOrder sql.NullInt64
var taskConditionID sql.NullInt64 var taskConditionID sql.NullInt64
@@ -14549,7 +14546,7 @@ func (a *App) getBoardCompletedHandler(w http.ResponseWriter, r *http.Request) {
var userName sql.NullString var userName sql.NullString
err := rows.Scan( err := rows.Scan(
&itemID, &name, &price, &imagePath, &link, &completed, &itemProjectID, &itemProjectName, &itemID, &name, &price, &imagePath, &link, &completed, &itemGroupName,
&conditionID, &displayOrder, &taskConditionID, &scoreConditionID, &userIDCond, &conditionID, &displayOrder, &taskConditionID, &scoreConditionID, &userIDCond,
&taskID, &taskName, &projectID, &projectName, &requiredPoints, &startDate, &userName, &taskID, &taskName, &projectID, &projectName, &requiredPoints, &startDate, &userName,
) )
@@ -14579,8 +14576,9 @@ func (a *App) getBoardCompletedHandler(w http.ResponseWriter, r *http.Request) {
if link.Valid { if link.Valid {
item.Link = &link.String item.Link = &link.String
} }
// Для завершённых желаний не устанавливаем project_id и project_name if itemGroupName.Valid && itemGroupName.String != "" {
// Они отображаются отдельно без группировки по проектам item.GroupName = &itemGroupName.String
}
itemsMap[itemID] = item itemsMap[itemID] = item
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "play-life-web", "name": "play-life-web",
"version": "5.0.2", "version": "5.0.4",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

View File

@@ -221,7 +221,9 @@ function Wishlist({ onNavigate, refreshTrigger = 0, isActive = false, initialBoa
const response = await authFetch(`${API_URL}/boards/${selectedBoardId}/completed`) const response = await authFetch(`${API_URL}/boards/${selectedBoardId}/completed`)
if (!response.ok) { if (!response.ok) {
throw new Error('Ошибка при загрузке завершённых желаний') const errText = await response.text()
const msg = errText || 'Ошибка при загрузке завершённых желаний'
throw new Error(msg)
} }
const data = await response.json() const data = await response.json()