Initial wiki push - 2026-04-10
This commit is contained in:
99
sources/dev-task.md
Normal file
99
sources/dev-task.md
Normal file
@@ -0,0 +1,99 @@
|
||||
---
|
||||
pageType: source
|
||||
id: source.dev-task
|
||||
title: DEV TASK
|
||||
sourceType: local-file
|
||||
sourcePath: /home/node/.openclaw/workspace/tasks/apps-portal/DEV-TASK.md
|
||||
ingestedAt: 2026-04-10T13:37:41.693Z
|
||||
updatedAt: 2026-04-10T13:37:41.693Z
|
||||
status: active
|
||||
---
|
||||
|
||||
# DEV TASK
|
||||
|
||||
## Source
|
||||
- Type: `local-file`
|
||||
- Path: `/home/node/.openclaw/workspace/tasks/apps-portal/DEV-TASK.md`
|
||||
- Bytes: 2574
|
||||
- Updated: 2026-04-10T13:37:41.693Z
|
||||
|
||||
## Content
|
||||
```text
|
||||
# DEV-TASK: Портал приложений (apps.mva154.duckdns.org)
|
||||
|
||||
## Контекст
|
||||
|
||||
Нужен портал-лендинг с карточками веб-приложений. Светлая тема, автогенерация аватарок.
|
||||
|
||||
**Документация:**
|
||||
- Бизнес-требования: `tasks/apps-portal/docs/BRD.md`
|
||||
- Техническое задание: `tasks/apps-portal/docs/TZ.md`
|
||||
|
||||
---
|
||||
|
||||
## Задача
|
||||
|
||||
### Шаг 1: Инфраструктура
|
||||
1. Создать `config/apps.json` с двумя приложениями (noisemap, snowbike-rag)
|
||||
2. Создать `requirements.txt` (flask, pillow)
|
||||
|
||||
### Шаг 2: Автогенерация аватарок
|
||||
3. Реализовать функцию `generate_avatars()`:
|
||||
- Читает `config/apps.json`
|
||||
- Для каждого приложения проверяет `static/avatars/{id}.png`
|
||||
- Если файла нет — генерирует: градиентный фон (по хэшу name) + emoji/icon по центру
|
||||
- PNG 200×200
|
||||
|
||||
### Шаг 3: Flask сервер
|
||||
4. Создать `server.py`:
|
||||
- GET `/` — главная (рендерит index.html с apps)
|
||||
- GET `/api/apps` — JSON
|
||||
- GET `/static/avatars/` — файлы
|
||||
- При старте: `generate_avatars()`
|
||||
|
||||
### Шаг 4: Главная страница
|
||||
5. Создать `templates/index.html`:
|
||||
- Светлая тема (#F8FAFC фон, белые карточки)
|
||||
- Tailwind CSS через CDN, шрифт Inter
|
||||
- Карточки: аватарка 80×80, название, описание
|
||||
- Клик → переход на url приложения
|
||||
- Адаптивно: 4 → 2 → 1 колонка
|
||||
- Hover: lift-эффект, синяя рамка
|
||||
|
||||
### Шаг 5: Тест
|
||||
6. Запустить `python server.py`
|
||||
7. Проверить http://localhost:5560/
|
||||
8. Добавить третье приложение в apps.json — проверить автогенерацию аватарки
|
||||
|
||||
---
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
- [ ] http://localhost:5560/ — портал с карточками
|
||||
- [ ] Клик — переход на приложение
|
||||
- [ ] Аватарки в static/avatars/ сгенерированы
|
||||
- [ ] Светлая тема, красиво
|
||||
- [ ] Адаптивно на мобильном
|
||||
- [ ] /api/apps — JSON
|
||||
|
||||
---
|
||||
|
||||
## Важно
|
||||
|
||||
• Всё в `tasks/apps-portal/`
|
||||
• Порт 5560
|
||||
• Pillow для аватарок (pip install pillow)
|
||||
• Не трогать другие приложения
|
||||
|
||||
```
|
||||
|
||||
## Notes
|
||||
<!-- openclaw:human:start -->
|
||||
<!-- openclaw:human:end -->
|
||||
|
||||
## Related
|
||||
<!-- openclaw:wiki:related:start -->
|
||||
### Referenced By
|
||||
|
||||
- [Apps Portal](entities/project-apps-portal.md)
|
||||
<!-- openclaw:wiki:related:end -->
|
||||
Reference in New Issue
Block a user