Phase 03: Project CRUD - 3 plans created - 6 total tasks defined - Covers M2 milestone (full project management) Plan breakdown: - 03-01: Project service + /projects, /project new - 03-02: /project select, /project info - 03-03: /project models, /project delete Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.9 KiB
| phase | plan | type |
|---|---|---|
| 03-project-crud | 02 | execute |
Purpose: Enable users to switch between projects and view project details. Output: Working /project select and /project info commands with user state tracking.
<execution_context> ~/.claude/get-shit-done/workflows/execute-phase.md ~/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.mdPrior plan context
@.planning/phases/03-project-crud/03-01-SUMMARY.md
Relevant source files
@src/moai/core/services/project.py @src/moai/bot/handlers/projects.py @src/moai/bot/handlers/init.py
Established patterns:
- user_data dict in context for per-user state (python-telegram-bot pattern)
- Handler pattern: async def xxx_command(update, context) -> None
This allows /project select to work with either ID or name. python -c "from moai.core.services.project import get_project_by_name" get_project_by_name function exists and is importable
Task 2: Implement /project select and /project info handlers src/moai/bot/handlers/projects.py Extend project_command handler to support:/project select <id|name>:
- Store selected project ID in context.user_data["selected_project_id"]
- Reply with confirmation: "Selected project: {name}"
- If not found: "Project not found. Use /projects to list available projects."
/project info:
- Get selected project from user_data
- If no project selected: "No project selected. Use /project select first."
- Display: name, ID, models list, created_at, discussion count
Helper function get_selected_project(context) -> Project | None to retrieve currently selected project from user_data. ruff check src/moai/bot/handlers/projects.py /project select stores selection, /project info displays project details
Before declaring plan complete: - [ ] `ruff check src/moai/bot/handlers/projects.py` passes - [ ] `python -c "from moai.core.services.project import get_project_by_name"` succeeds - [ ] project_command handles select and info subcommands<success_criteria>
- All tasks completed
- All verification checks pass
- /project select stores selection in user_data
- /project info shows project details
- Error messages are user-friendly </success_criteria>