Auto-attributes (Phase 1)
Overview
Structured metadata for documents deposited by automatic services (Tower v2, n8n, future agents), separate from manual user attributes. Powers Smart Lists (Listes Automatiques) in IP Magic Box and platform ops tooling.
Canonical repo guide: neo-backend/docs/auto-attributes.md.
How it works
- Ingest:
POST /documentswith Bearer token; optionalBcyip-Agent/Bcyip-Version/Bcyip-Platformheaders. Agent tokens must haveapitokens.agentset (ops/Retool). Technical codesbcyip:agentandbcyip:agent-versionare server-injected. - Manual deposit unchanged: IP Magic Box upload + anchor stays on legacy
POST /files/upload+POST /documents. - Folders:
companies.folders[].type=manual|auto; auto folders filter bytargetAttributeCodesortargetAutoAttributes. - Platform ops:
/platform/*routes useX-Platform-Admin-Token(PLATFORM_ADMIN_TOKENenv).
Key files
src/domains/document/document.service.ts— ingest validation, idempotence, folder resolversrc/domains/document/templates/documents.ts— Tower hall filter (bcyip:agentany value)src/domains/platform/agents/— agent CRUD + allowed codessrc/domains/platform/auto-attribute-codes/— global catalogue + LOVsrc/core/auth/auth.service.ts—apiTokenAgentfromapitokens.agent
Technical decisions
- Separate arrays:
autoAttributes[]vsattributes[]— manual workflows untouched. - No seed scripts: catalogue and agents bootstrapped via platform API.
- Optional
fileId: two-step n8n flow (legacy upload → neo document).
Known issues
- Tower tokens need
apitokens.agent: 'iptower'before agent ingest in prod. - IP Magic Box tokens do not need
apitokens.agentfor manual deposit.
Next steps
-
GET /platform/auto-attribute-codes/:code/observed-valuesfor ops label editor - Phase 2: folder write rules, migration tooling