diff --git a/GEMINI.md b/GEMINI.md index 2e42ad1..3943df6 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -44,11 +44,10 @@ - **Hiding Internal Paths:** `subdirectory_path` is hidden from public-facing API responses via Pydantic `Field(exclude=True)`. ### 🧠 Key Technical Learnings (Cumulative) -- **Circular Dependencies Fixed**: Successfully resolved the fragile startup dependency chain by isolating Auth models and using strictly deferred DB imports in a dedicated `dependencies_v3.py` module. -- **Bootstrap Paradox Solved**: Implemented a guest-access exception for `site_domain` search, allowing the frontend to resolve site context without a JWT. -- **V3 Searchable Fields**: `searchable_fields` must explicitly include integer ID fields (e.g., `event_id`) to ensure valid numeric filters are not blocked by the V3 search security layer. -- **NULL Logic in Filters**: Confirmed that explicit frontend filters like `hide: false` will FAIL to match `NULL` database values. Rely on the API's built-in `hidden=not_hidden` parameter for robust handling. -- **Vision ID Safety Net**: Enhanced `lookup_id_random_pop` to resolve random string IDs found in any `*_id` field, ensuring "Vision" style payloads are correctly converted to integers. +- **Modularization Standard**: Proven pattern for shrinking monolithic routers: Registry -> `app/object_definitions/`, Templates/Logic -> `app/methods/`. Reduced `api_crud.py` and `hosted_file.py` by >75%. +- **Vision ID Persistence**: Pydantic `Field(exclude=True)` strips fields from `.dict()` by default. In methods like `create_hosted_file_obj`, these must be explicitly re-included if they are internal DB fields (like `subdirectory_path`). +- **Universal ID Resolution**: `GET /v3/action/hosted_file/{id}/download` now intelligently resolves container IDs (`event_file`, `archive_content`) to physical binaries. +- **Temporary Access Patterns**: Implemented `?key=` and `?site_key=` (using `access_key`) for unauthenticated Read-Only file access to unblock frontend components like ``. --- @@ -56,65 +55,31 @@ *This section tracks active projects (1-2 weeks scope). It answers "Why are we doing this?"* - - -### 📩 In-Flight RAR Requests - -- [ ] **mcp_agent**: Real-world test of `ae_field_manage.py` (ID: 153357623). - -- [ ] **codebase_investigator**: Review report for Aether extension and journal management (ID: 155435511). - - - ### 🎯 Strategic Goals (Current Sprint) - - **Primary:** OSIT_dev Environment Optimization & Context Stabilization (Template v1.2 Adoption). - - **Secondary:** ID Vision Phase 2 Migration and V3 API Migration (Contacts/Clients). - - +- **Active:** Zoom Events Integration for upcoming Lead Retrieval/Badge Printing demo. ### 🚧 Active Workstreams - - **[Aether V4]:** Architecture standards formalized in `ARCH__V4_CORE_STANDARDS.md`. Ready for lifecycle field migration. - -- **[Data Store]:** V3 Implementation complete. Support for cascading code lookups and limit overrides is live. (ID: 201312846 - DONE). - -- **[ID Vision]:** Phase 2 complete. Strictly enforced string-ID standardization for Page, Post, Person, Journal, Contact, and User models. (ID: 161311118 - DONE). - -- **[Infrastructure]:** Pydantic V2 Migration Impact Analysis (Technical Debt). - -- **[Journals]:** UI: Implementation of Quick Add & Append/Prepend (ID: 185821382). - - - -### 🧠 Recent Decisions - -- **Cascading Data Store Logic:** Validated the hierarchy (Object > Account > Global) and implemented a `limit` override to allow auditing of fallback layers. - -- **ID Hardening:** Refined `root_validator` logic across core models to explicitly handle stringified 'NULL' values from the database, preventing Pydantic coercion errors. - -- **Search Optimization:** Standardized on `default_qry_str` for optimized fulltext searching. - - +- **[Zoom Events]:** initial integration complete (OAuth2, Sync logic, Ticket retrieval). Pending real credentials. +- **[Refactor]:** Reduced monolithic files (>800 lines). `api_crud.py` and `hosted_file.py` COMPLETED. `api_crud_v2.py` and `person_methods.py` PENDING. +- **[Test Suite]:** E2E suite consolidated into primary functional suites (Search, Auth, Lifecycle, Vision). --- - - ## 3. 🧠 Short Term Memory (Session Context) *This section is the "Scratchpad" for the current interaction. It is cleared or summarized often.* -- **Status:** Operational / Stabilized -- **Last Action:** Finalized WebSockets V3 implementation, including Nginx proxy optimization and real-world multi-client verification. +- **Status:** Operational / Refactored +- **Last Action:** Finalized monolithic refactor and initial Zoom Events integration. - **Achievements:** - - Launched WebSockets V3 with granular Redis routing (solving the "noisy neighbor" problem). - - Standardized real-time message schema (`WS_Message_V3`). - - Updated Nginx templates to support `/v3/ws` and `localhost` Host routing. - - Created comprehensive integration test suite for gateway/routing verification. - - Delivered `GUIDE__V3_FRONTEND_WEBSOCKETS.md` to `agents_sync`. -- **Immediate Next Step:** Monitor frontend adoption and begin system-wide lifecycle field migration. + - Reduced `api_crud.py` (1843 -> 143 lines). + - Reduced `hosted_file.py` (1596 -> 361 lines). + - Implemented Zoom Events OAuth2 and Sync backend. + - Verified Full File Lifecycle (Upload -> Download -> Delete) via standardized E2E test. +- **Immediate Next Step:** Finalize wrap-up by registering new agent 'Inara' in `agents_sync`. --- @@ -139,4 +104,4 @@ 3. **Syntax Validation:** Run `python3 -m py_compile ` immediately. 4. **Process Cycle:** Restart the Docker FastAPI service: `docker restart aether_container_env-ae_api-2`. 5. **Empirical Testing:** Execute `curl` commands and inspect logs: `tail -n 20 ~/OSIT_dev/aether_container_env/logs/ae_api/aether_api.log`. -6. **Finalize:** Commit changes with a descriptive message and sync documentation. +6. **Finalize:** Commit changes with a descriptive message and sync documentation. \ No newline at end of file