Files
PROJECT-CONTORL/frontend/public/locales/en/projects.json
beabigegg 3bdc6ff1c9 feat: implement 8 OpenSpec proposals for security, reliability, and UX improvements
## Security Enhancements (P0)
- Add input validation with max_length and numeric range constraints
- Implement WebSocket token authentication via first message
- Add path traversal prevention in file storage service

## Permission Enhancements (P0)
- Add project member management for cross-department access
- Implement is_department_manager flag for workload visibility

## Cycle Detection (P0)
- Add DFS-based cycle detection for task dependencies
- Add formula field circular reference detection
- Display user-friendly cycle path visualization

## Concurrency & Reliability (P1)
- Implement optimistic locking with version field (409 Conflict on mismatch)
- Add trigger retry mechanism with exponential backoff (1s, 2s, 4s)
- Implement cascade restore for soft-deleted tasks

## Rate Limiting (P1)
- Add tiered rate limits: standard (60/min), sensitive (20/min), heavy (5/min)
- Apply rate limits to tasks, reports, attachments, and comments

## Frontend Improvements (P1)
- Add responsive sidebar with hamburger menu for mobile
- Improve touch-friendly UI with proper tap target sizes
- Complete i18n translations for all components

## Backend Reliability (P2)
- Configure database connection pool (size=10, overflow=20)
- Add Redis fallback mechanism with message queue
- Add blocker check before task deletion

## API Enhancements (P3)
- Add standardized response wrapper utility
- Add /health/ready and /health/live endpoints
- Implement project templates with status/field copying

## Tests Added
- test_input_validation.py - Schema and path traversal tests
- test_concurrency_reliability.py - Optimistic locking and retry tests
- test_backend_reliability.py - Connection pool and Redis tests
- test_api_enhancements.py - Health check and template tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 22:13:43 +08:00

80 lines
2.3 KiB
JSON

{
"title": "Projects",
"createProject": "Create Project",
"editProject": "Edit Project",
"deleteProject": "Delete Project",
"projectSettings": "Project Settings",
"newProject": "New Project",
"fields": {
"name": "Name",
"namePlaceholder": "Enter project name",
"title": "Project Title",
"titlePlaceholder": "Enter project title",
"description": "Description",
"descriptionPlaceholder": "Description (optional)",
"status": "Status",
"startDate": "Start Date",
"endDate": "End Date",
"owner": "Project Owner",
"space": "Space",
"securityLevel": "Security Level"
},
"securityLevel": {
"label": "Security Level",
"public": "Public - All users",
"department": "Department - Same department only",
"confidential": "Confidential - Owner only"
},
"status": {
"planning": "Planning",
"active": "Active",
"on_hold": "On Hold",
"completed": "Completed",
"cancelled": "Cancelled"
},
"tabs": {
"overview": "Overview",
"tasks": "Tasks",
"members": "Members",
"settings": "Settings",
"files": "Files",
"activity": "Activity"
},
"stats": {
"totalTasks": "Total Tasks",
"completedTasks": "Completed",
"inProgress": "In Progress",
"overdue": "Overdue",
"progress": "Overall Progress"
},
"card": {
"tasks": "{{count}} tasks",
"owner": "Owner",
"noDescription": "No description",
"unknown": "Unknown"
},
"messages": {
"created": "Project created successfully",
"updated": "Project updated",
"deleted": "Project deleted",
"loadFailed": "Failed to load projects",
"createFailed": "Failed to create project",
"confirmDelete": "Are you sure you want to delete this project? This will delete all related tasks."
},
"empty": {
"title": "No Projects",
"description": "Create your first project to start managing tasks"
},
"template": {
"label": "Template",
"selectTemplate": "Select a template",
"blankProject": "Blank Project",
"blankProjectDescription": "Start with a clean slate",
"loadingTemplates": "Loading templates...",
"loadFailed": "Failed to load templates",
"statusCount": "{{count}} statuses",
"fieldCount": "{{count}} custom fields",
"publicTemplate": "Public"
}
}