feat(jobs): a company's legal state and dated hiring signals #1023
No reviewers
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo!1023
Loading…
Reference in a new issue
No description provided.
Delete branch "941-company-status"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #941
Builds on PR #1019 (#921) and must be merged after it. Until then this diff also shows the #921 commit (it took archive format 74 and accounts migration 0047; this takes format 75 and jobs migration 0041).
What changed
Companygainslegal_state(active, administration, acquired, dissolved),legal_state_since,legal_state_sourceandacquired_by(checked likeparent: not itself, no loop, visible to everybody the company is shared with).CompanyHiringSignal: dated entries (hiring, freeze, laying off) with a source, an author and the day; the history stays on the page. Older than 90 days (SIGNAL_STALE_AFTER_DAYS) reads "as of ".shut_conditionthe tabs use) and stored nowhere.POST/DELETE /companies/{id}/signals) and a vCard note for non-active states.Decisions (from the maintainer)
Legal state and signals are shared with the company; each entry carries author and date; a write share may add/edit (delete, owner and share stay with managers); neutral factual labels; new strings are empty slots for Weblate.
Notes
kind_files) goes to format 5 because it borrows the archive's block; it does not write the new fields yet.Library check
None needed.
Model use
Written with Claude Code, reviewed by the person who opens the PR.
🤖 Generated with Claude Code
A profile held one language's words ("Mme", "iel", "Féminin"), so a record switched from English to French kept showing the English word, and a CV in another language printed the words of the language they were typed in. The maintainer decided (2026-10-15) to store language-neutral concepts and draw them in the language of the page or document, with "Other" the one exception: free text stored and shown as typed. - accounts/addressing.py: concept keys (mr, doctor, doctor_f, she, he, they, female, non_binary ...), per-language word tables with their sources, the subset each language offers, label(field, key, language) (table, then the catalogues for a language or concept the tables lack) and concept_of / stored_value (a word of any language, or a pre-#864 gender word, is the concept; anything else stays as typed). - Gendered titles have a neutral fallback: English and French print Dr and Prof. for both doctor and doctor_f; Portuguese prints Dr./Dr.ª; a bare Dr or Prof. becomes the unmarked concept. - Migration accounts 0047 turns existing values into concepts (frozen table, unmatched text kept), reversible to the word of the record's language. - The form offers (key, label) options, keeps a posted value on a bound form, and stores a word typed under Other as its concept. Documents and the vCard PRONOUNS line resolve the label in their own language; the profile API returns {key, label} and accepts a key, a word or free text. - Archive format 74 and candidate format 22; the importer and the candidate reader map older words to concepts. - Gender never decides pronouns or form of address, or the reverse. Closes #921 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>