fixes
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
3. **Companies tab** — paginated list with active plan name, legacy/public/custom badge, credits remaining/total, “without plan” filter.
|
||||
4. **Assign plan** — dialog lists all admin plans (ladder + legacy + custom) → `POST /api/admin/plans/assign`.
|
||||
5. **API enrichments** — `GET /api/admin/users` returns `total`, `staff_role`, `resolved_role`, search/filters; `GET /api/admin/companies` returns `total`, `plan_id` / `plan_name` / `plan_is_*`, search.
|
||||
6. **Fix A1 catalog** — Companies tab button + confirm → `POST /api/admin/companies/{id}/fix-catalog` (prompt repair + hygiene; flash counts `prompts`/`hashes`/`categories`).
|
||||
7. **Clone catalog** — existing sandbox clone flow (separate from Fix A1).
|
||||
|
||||
---
|
||||
|
||||
@@ -44,11 +46,41 @@
|
||||
| `GET` | `/api/admin/plans` | Plan picker |
|
||||
| `POST` | `/api/admin/plans/assign` | `{ company_id, plan_id }` |
|
||||
| `POST` | `/api/admin/emails/set-password` | Existing invite tooling |
|
||||
| `POST` | `/api/admin/companies/{id}/fix-catalog` | In-place Fix A1 / catalog hygiene (`confirm=true`) |
|
||||
| `POST` | `/api/admin/companies/{id}/clone-catalog` | Clone source catalog into admin sandbox |
|
||||
|
||||
All under `RequireSession` + `RequirePlatformAdmin` (full admin only).
|
||||
|
||||
---
|
||||
|
||||
## Fix A1 catalog (`POST …/fix-catalog`)
|
||||
|
||||
In-place hygiene for one company (prefer **Platform Demo**; A1 allowed with confirm). Never clears catalog, never mass-reprocesses, never uses A1 as a clone destination.
|
||||
|
||||
**Body:** `{ "confirm": true, "backfill_categories"?: true, "reprocess_sample_limit"?: 25 }`
|
||||
|
||||
**Sequence** (`processing.FixCompanyCatalog`):
|
||||
|
||||
1. Ensure `category_attributes` links (orphan purge only)
|
||||
2. `RepairCompanyCategoryEnhancePrompts` — same map as `RepairA1DemoCategoryEnhancePrompts` / `go run ./cmd/repair-category-prompts -apply`
|
||||
3. Re-apply BuiltIn `product_enhance` templates (when AI prompts service is wired)
|
||||
4. `FixCatalogHygieneWithIDs` — weak enhance hashes, optional category backfill, description/meta hygiene
|
||||
5. Sanitize `processed_attributes`
|
||||
6. Return recommended reprocess `raw_product_id` sample (no auto reprocess)
|
||||
|
||||
**Flash success** (`flash.admin.fixA1Success` — keys `admin.users.fixA1*`):
|
||||
|
||||
| Flash param | `result` field | Also as |
|
||||
|-------------|----------------|---------|
|
||||
| `{prompts}` | `prompts` | `category_prompts_updated` |
|
||||
| `{hashes}` | `hashes` | `weak_hashes_cleared` |
|
||||
| `{categories}` | `categories` | `categories_backfilled` |
|
||||
| `{name}` | company name from UI row | `company_name` |
|
||||
|
||||
UI: Companies tab wrench → confirm dialog → `fixAdminCompanyCatalog` in `$lib/admin-orgs.ts`.
|
||||
|
||||
---
|
||||
|
||||
## Security / performance
|
||||
|
||||
- AuthZ enforced server-side; UI gate is UX only.
|
||||
@@ -66,7 +98,8 @@ All under `RequireSession` + `RequirePlatformAdmin` (full admin only).
|
||||
2. Search users; toggle Staff only; page Next/Previous.
|
||||
3. Assign staff role (admin / developer / support_staff); confirm badge.
|
||||
4. Companies tab → see plan badge; filter Without plan; Assign plan (legacy + public).
|
||||
5. As `support_staff`, confirm `/admin/users` is forbidden (full-admin-only nav).
|
||||
5. Companies tab → Fix A1 catalog on Platform Demo (or A1 with confirm); success flash shows prompts/hashes/categories counts.
|
||||
6. As `support_staff`, confirm `/admin/users` is forbidden (full-admin-only nav).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user