Skip to content

Releases: obcode/plexams.go

v2.0.0

Choose a tag to compare

@peak-bot peak-bot released this 10 Jul 06:40

2.0.0 (2026-07-10)

πŸ“£ Breaking Changes

  • studentregs: carry Primuss and ZPA ancode explicitly (30524ab)

Student registrations now keep BOTH ancode namespaces side by side instead of
overwriting the Primuss ancode with the ZPA ancode at prepare time. Rule: internal
use (plan/slot/conflict) keys on the ZPA ancode; external communication
(Primuss/MUC.DAI) uses the Primuss ancode (per study program, e.g. DE/202). For FK07
exams they are normally equal but never assumed equal β€” the connected exams'
PrimussAncodes mapping is authoritative (handles PrΓΌfungsamt mismatches too).

New value type model.Ancodes{ZpaAncode, PrimussAncodes[]{Program,Ancode}} bundles an
exam's internal/external identity (= ZPAExam.AnCode + PrimussAncodes); helpers
ZPAExam.Ancodes()/PrimussAncodeForProgram() and computed AssembledExam/PlannedExam
.Ancodes() (GraphQL `ancodes` field). Consolidated the duplicate PrimussAncode
map-key struct into model.ZPAPrimussAncodes.

Schema renames (BREAKING, GUI must adapt): RegWithProgram.reg -> primussAncode +
zpaAncode; Student.regs -> zpaAncodes; StudentReg/EnhancedStudentReg.ancode ->
primussAncode (Go field PrimussAncode, bson stays "AnCode"); AnCode.ancode ->
zpaAncode; StudentRegsPerAncodeAndProgram gains zpaAncode + primussAncode.

Pure, unit-tested helper resolveAncodes() replaces the in-place "fixing ancode"
overwrite in PrepareStudentRegs.

Fixes:
- GetStudentRegsForAncode resolved the Primuss ancode from the ZPA ancode directly,
  returning empty registrations for MUC.DAI exams (ZPA != Primuss). Now resolves the
  Primuss ancode per program from zpaExam.PrimussAncodes.
- ValidateConflicts rendered MUC.DAI conflict ancodes with an ancode%1000 decode that
  assumed the never-used base+primussAncode scheme (import assigns 90000-sequential),
  showing "/1" instead of "DE/202". Now renders from the exam's PrimussAncodes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

🎁 Feature

  • csv: add program/primussAncode clarity columns to exam-times export (7fbbee7)

πŸ”€ Code Refactoring

  • db: extract collection name retrieval to a separate function (83f5bed)

v1.247.0

Choose a tag to compare

@peak-bot peak-bot released this 09 Jul 19:30

1.247.0 (2026-07-09)

🎁 Feature

  • email: send As a shared account with planner name + Reply-To (26a9b8d)

πŸ“„ Documentation

  • config: document smtp.fromaddress and the send-as-account pattern (c3e58ee)

πŸ”Ž Tests

  • email: cover send-as-account From and Reply-To resolution (c1404bd)

🚧 Chores

  • memory: correct 554 diagnosis to From-vs-login send-as policy (f9362bc)

v1.246.1

Choose a tag to compare

@peak-bot peak-bot released this 09 Jul 19:13

1.246.1 (2026-07-09)

🐞 Bug Fixes

  • email: use FQDN for Message-ID and HELO to avoid 554 rejection (a5aa70a)

πŸ“„ Documentation

  • config: document smtp.hostname (5f1f864)

πŸ”Ž Tests

  • email: assert Message-ID uses the FQDN, not the local hostname (e9c0b78)

🚧 Chores

  • memory: note Message-ID/HELO FQDN fix (4f623e3)

v1.246.0

Choose a tag to compare

@peak-bot peak-bot released this 09 Jul 19:04

1.246.0 (2026-07-09)

🎁 Feature

  • email: control sender identity β€” envelope-from, planer overrides, dry-run override (bcbda2e)

πŸ“„ Documentation

  • config: document smtp.envelopefrom and smtp.noreplyname (6a67e7d)

πŸ”Ž Tests

  • email: cover sender identity resolution and dry-run override (46236a9)

🚧 Chores

  • memory: planer email overrides + shibboleth-per-user future (632a255)

v1.245.0

Choose a tag to compare

@peak-bot peak-bot released this 09 Jul 17:03

1.245.0 (2026-07-09)

🎁 Feature

  • preplan: compact disjoint-program exams and place oversized SEB with R-Bau overflow (27f6a97)

v1.244.0

Choose a tag to compare

@peak-bot peak-bot released this 09 Jul 06:43

1.244.0 (2026-07-09)

🎁 Feature

  • preplan: expose the pre-planning hard/soft rules for a read-only GUI view (06e5c10)

🐞 Bug Fixes

  • preplan: leftover SEB should be the smallest ones ("je kleiner desto besser") (76442cb)
  • preplan: keep large/same-slot-coupled SEB placed, drop several small ones (7026bc7)

🚧 Chores

  • memory: preplan constraints query + smallest-leftover drop cost (ac9f681)
  • memory: convex drop cost keeps coupled SEB placed (05ffecd)

v1.243.3

Choose a tag to compare

@peak-bot peak-bot released this 09 Jul 04:29

1.243.3 (2026-07-09)

🐞 Bug Fixes

  • exahm: enforce EXaHM/SEB booked-seat capacity over time (cross-slot buffers) (108d8e7)

🚧 Chores

  • memory: cross-slot cumulative EXaHM capacity over time (ca92f3d)

v1.243.2

Choose a tag to compare

@peak-bot peak-bot released this 09 Jul 04:07

1.243.2 (2026-07-09)

🐞 Bug Fixes

  • exahm: rooms may be shared between exams; SEB may split across R-building labs (11828c7)
  • exahm: use global room-packing in the preplan solver, matching validation (6f71808)
  • preplan: show the real German weekday in findings, not always "Mo" (f105200)

🚧 Chores

  • memory: correct packing model (rooms shared, whole-room reverted) (5bad911)
  • memory: sync (weekday fix + global preplan packing) (ed64da3)

merge

  • German weekday in findings + global room-packing in preplan solver (42f1da3)

v1.243.1

Choose a tag to compare

@peak-bot peak-bot released this 09 Jul 03:17

1.243.1 (2026-07-09)

🐞 Bug Fixes

  • exahm: ignore canceled bookings, gate SEB, and pack whole rooms per exam (e6386ca)

🚧 Chores

  • memory: sync Claude memory (canceled-booking root cause + room packing) (dbac2a2)

v1.243.0

Choose a tag to compare

@peak-bot peak-bot released this 08 Jul 21:17

1.243.0 (2026-07-08)

🎁 Feature

  • zpa: mark condition for ZPA persons imported after fetching teachers (efc5ee4)
  • planning: add condition for ZPA persons imported and update titles (9b216a3)

🐞 Bug Fixes

  • exahm: seat-accurate window gate + place small SEB into spare Anny capacity (10b6e38)

🚧 Chores

  • memory: sync Claude memory (seat-accurate EXaHM gate + small SEB fill) (6049ddf)