Commit Graph

28 Commits

Author SHA1 Message Date
Ruslan Bakiev
378df5cb60 Configure dify domain for https 2025-12-08 19:23:53 +07:00
Ruslan Bakiev
dd2233418f chore: regenerate GraphQL types with GetOffersDocument
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 19:22:30 +07:00
Ruslan Bakiev
4116a92d4a Integrate TerminusDB dynamic form into offers flow
- Add terminus_schema_id field to GraphQL Product type
- Update GetProducts.graphql to include terminusSchemaId
- Move add-product.vue to offers/new/[uuid].vue
- Restructure offers/new.vue into offers/new/index.vue
- Update navigation to use product UUID route param
- Form loads schema from product's terminus_schema_id

Flow: Offers -> Add -> Select Product -> Fill Characteristics

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 19:19:09 +07:00
Ruslan Bakiev
f3d1977b21 Rename terminusdb schema.json -> cocoa.json and add @context
- Rename schema file to match schema name (Cocoa)
- Add @context for TerminusDB compatibility
- Schema loaded into TerminusDB at admin/optovia

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 19:11:55 +07:00
Ruslan Bakiev
7e8b0bb6be Prefer UUID for Novu subscriber id 2025-12-08 19:11:55 +07:00
Ruslan Bakiev
3596c3757b feat: unified catalog page with list/map toggle
- Add viewMode toggle (Список/Карта) to catalog page
- Create CatalogHubsSection with country grouping
- Create CatalogOffersSection with status badges
- Create CatalogSuppliersSection with verification badges
- Create CatalogMapView with left panel tabs (Хабы/Офферы/Компании)
- Create CatalogMapItem for clickable list items with flyTo animation
- Integrate with existing MapboxGlobe component

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 19:07:01 +07:00
Ruslan Bakiev
6d6a300481 Tweak user menu button border hover 2025-12-08 19:05:46 +07:00
Ruslan Bakiev
0f96ee24b0 Add cryptography dependency for ES384 JWT 2025-12-08 18:59:42 +07:00
Ruslan Bakiev
8de2cc2278 fix: camelCase location fields on public offers 2025-12-08 18:49:30 +07:00
Ruslan Bakiev
fd05838c4d feat: expose public offers with location data 2025-12-08 18:36:32 +07:00
Ruslan Bakiev
3ae39251c8 chore: update tigerbeetle port 2025-12-08 18:25:06 +07:00
Ruslan Bakiev
562e1b6384 chore: bump dify nginx ports to 18080/18443 2025-12-08 18:13:59 +07:00
Ruslan Bakiev
26e6b3974d UI improvements: lang switcher, catalog cleanup, horizontal cabinet menu
- Move language switcher from header to user dropdown menu
- Remove descriptive text under section headings in catalog page
- Replace vertical sidebar with horizontal tabs in cabinet layout

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 17:53:34 +07:00
Ruslan Bakiev
9b4ecd18e3 chore: default dify nginx ports to 8080/8443 2025-12-08 17:27:56 +07:00
Ruslan Bakiev
62c7750576 fix: simplify odoo-update-modules playbook, remove role
- Make update playbook identical to install playbook structure
- Use infisical run for secrets instead of external role
- Remove ansible/roles/odoo directory

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 17:22:26 +07:00
Ruslan Bakiev
118921495d fix: rewrite odoo-update-modules playbook to use docker exec with infisical
- Create ansible role for Odoo with update_modules task
- Use infisical run to inject secrets from environment
- Execute odoo -u modules --stop-after-init inside container
- Restart service after successful update

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 17:18:55 +07:00
Ruslan Bakiev
45a111550e Run codegen for teamType field
Regenerate GraphQL types after adding teamType to Team model

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 17:13:49 +07:00
Ruslan Bakiev
97b51a3da5 chore: change dify nginx ports to 8080/8443 2025-12-08 17:05:51 +07:00
Ruslan Bakiev
5144a7ff8a chore: add tigerbeetle docker compose 2025-12-08 17:00:41 +07:00
Ruslan Bakiev
19c5a1e60f Add personal cabinet with team type (buyer/seller)
- Add cabinet layout with 1/6 sidebar
- Header: rename "Мои заказы" to "Личный кабинет"
- Add cabinet pages: orders, offers (seller only), new offer
- TeamCreateForm: add team type selection (BUYER/SELLER)
- Sidebar shows "Мои предложения" only for SELLER teams

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:55:55 +07:00
Ruslan Bakiev
ec3d9a350a Add team_type (BUYER/SELLER) to Team model
- Add team_type field to Team model with migration
- Add teamType to GraphQL schema (Team type and CreateTeamInput)
- Update GetMe.graphql and CreateTeam.graphql with teamType field

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:49:19 +07:00
Ruslan Bakiev
a5b4c0a0fd chore: add dify env for deploy 2025-12-08 16:49:19 +07:00
Ruslan Bakiev
f57eeb04d1 chore: add dify docker setup 2025-12-08 16:49:19 +07:00
Ruslan Bakiev
1c8eb5b2b3 fix: use native fetch instead of $fetch in useTerminus
- Replace Nuxt $fetch with native fetch for TerminusDB GraphQL calls
- Fix TypeScript type errors with NitroFetchRequest
- Add explicit return type for getEndpoint function

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:28:30 +07:00
Ruslan Bakiev
e9d6e44228 Fix Tailwind @apply error in add-product.vue
Replace @apply directives with plain CSS - Tailwind v4 requires
@apply to be inside @layer directive

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:12:31 +07:00
Ruslan Bakiev
419a0d19f5 Fix empty GraphQL schemas and update codegen config
- Add placeholder fields to empty Query/Mutation types (GraphQL requires at least one field)
- Remove empty Mutation types where not needed
- Fix kyc endpoint in codegen.ts: /graphql/ -> /graphql/team/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:02:30 +07:00
Ruslan Bakiev
8b2a261404 Unify backend schema structure across all services
All backends now have consistent schemas/ folder with:
- public_schema.py (no auth)
- user_schema.py (ID token)
- team_schema.py (Team Access Token)

Updated:
- teams: added public_schema.py
- kyc: migrated schema.py to schemas/
- exchange: migrated schema.py to schemas/
- orders: migrated schema.py to schemas/

All urls.py now have /graphql/public/, /graphql/user/, /graphql/team/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 15:51:44 +07:00
Ruslan Bakiev
eacd3b9a96 feat: add TerminusDB schema integration and dynamic forms
- Simplify TerminusDB schema to single Cocoa class with 10 properties
- Add terminus_schema_id field to Odoo Product model
- Update FastAPI and GraphQL to expose terminus_schema_id
- Add FormKit for dynamic form generation
- Create useTerminus composable for schema loading and conversion
- Add /dashboard/add-product page with dynamic form rendering

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 15:48:12 +07:00