b3d0bafc22
feat: refine deposit room type workflows
2026-07-17 17:36:04 +08:00
f7328d670d
fix: 归档删除改为软删除
2026-07-17 14:13:17 +08:00
b1f35f9d1a
test: harden business boundary conditions
2026-07-15 00:03:55 +08:00
e45da7f998
feat: improve attendance scheduling and API validation
2026-07-14 23:12:14 +08:00
598b4e8acd
feat: link deposits to bill payment
2026-07-14 16:38:38 +08:00
1f32d1285b
refactor(deposits): remove refund approval remnants
2026-07-13 16:12:56 +08:00
04ef5c42d9
refactor(deposits): remove inline installment creation
2026-07-13 16:12:22 +08:00
cc4f4dae4e
fix: audit remediation — SSE user scoping, FK transactional safety, UI error handling
...
- H4: scoped SSE import progress to exact userId match; non-HTTP events excluded from all subscribers
- H2: moved PRAGMA foreign_key_check inside SQLite transaction before COMMIT; violations rollback preserving old tables
- M1: removed dead axios-style error branch from extractErrorMessage (interceptor already unwraps)
- M2: split handleSave try/catch — save errors vs reload errors shown distinctly
- M3: added provider field validation before AI config test request
- Added SSE scoping regression tests (import service + controller)
- Added FK check failure rollback test (database-migrations.spec)
- Updated controller spec expectations for userId parameter
Co-authored-by: Code Review <branch-review>
2026-07-12 22:59:03 +08:00
b6fca99390
fix: align permission navigation and page access
2026-07-11 14:55:49 +08:00
44105c1689
refactor: remove obsolete scaffolding and dead modules
...
Drop the unused root hello-world controller, empty CommonModule imports, development seeding code, legacy student report entity, stale DTOs, notification hook, and their placeholder tests.
2026-07-10 14:12:56 +08:00
6029d8e2fd
refactor(server): remove Department/UserDepartment entities, CampusScope, and departmentId from all entities
...
- Delete department.entity.ts, user-department.entity.ts
- Remove Department/UserDepartment from entities/index.ts
- Remove departmentId column from 18 entities (AttendanceRecord, ArchiveAttachment, Bill, ClassSchedule, Classroom, ClassroomRental, Deposit, DepositInstallment, ExamScore, LearningRecord, Occupancy, PersonalExpense, ResultArchive, Room, RoomExpense, Student, StudentEnrollment, StudentProfile, StudentReport)
- Remove departments/ module entirely
- Delete campus-scope.ts, campus-scope.middleware.ts (request-utils.ts kept — it's just IP extraction)
- Simplify common.module.ts to empty module
- Remove CampusScopeMiddleware from app.module.ts
- Remove all CampusScope injections and filter calls across all services
- Remove departmentId from all DTOs and controllers
- Simplify dingtalk/wecom sync to only sync users (no dept table)
- Update seed module to remove department seeding
- Clean frontend compilation
2026-07-09 17:51:32 +08:00
da69545f74
fix: null cast for refundStatus in TypeORM
2026-07-06 10:50:24 +08:00
6ba7213cc4
feat(deposits): add refund rejection path with reason
2026-07-06 09:48:20 +08:00
7b298a615c
feat: complete PRD verification fixes and deployment readiness
...
- Add CommonModule to provide/export CampusScope across business modules
- Replace DepartmentsModule imports with CommonModule in 11 modules
- Add missing Class/Tenant repository imports to StudentsModule and SchedulesModule
- Fix service specs with CampusScope, ClassRepository, StudentRepository mocks
- Move better-sqlite3 to optionalDependencies for production Docker builds
- Rewrite Dockerfiles for monorepo root build context
- Update docker-compose.yml service build contexts
2026-07-06 01:55:35 +08:00
df61ebbc5b
feat: auto-populate department_id on create + seed default campus with backfill
2026-07-06 00:05:00 +08:00
cd6364268d
feat: integrate CampusScope.filter() into all business services (12 services + 12 modules)
2026-07-05 23:58:51 +08:00
9d9d4719b5
feat: add Student-User association and activate all notification TODOs
2026-07-05 23:42:22 +08:00
7020e86809
feat: integrate notification creation into business modules (classes, schedules done; bills/occupancies/deposits need student→userId mapping)
2026-07-05 23:25:34 +08:00
898738b775
fix: remove null assignments incompatible with non-null entity types
2026-07-05 20:59:20 +08:00
ab4adf1174
P2-14: Deposit installment tracking + refund approval flow
...
- Add DepositInstallment entity (id, depositId, amount, dueDate, paidDate, status, createdAt)
- Add installments OneToMany relation to Deposit entity with cascade+eager
- Add refund approval fields: refundStatus, refundRequestedAt, refundApprovedBy, refundApprovedAt
- Add installment DTOs (CreateInstallmentDto, UpdateInstallmentDto)
- Add refund approval DTOs (ApproveRefundDto, CreateDepositWithInstallmentsDto)
- Service: add/create/update/delete installments, requestRefund, approveRefund, findPendingRefunds
- Controller: GET deposits/:id, GET pending-refunds, POST :id/installments, PUT installments/:id, DELETE installments/:id, POST :id/request-refund, PUT :id/approve-refund
- Frontend: detail modal with installment list, refund request button, pending refunds tab with approve actions
2026-07-05 20:46:05 +08:00
f962633f67
fix: normalize operation log module names across controllers
2026-07-05 19:38:18 +08:00
4f4cee157a
chore: commit oxfmt formatting changes and verify artifacts
2026-07-02 15:55:09 +08:00
46a817503e
feat(task1): restructure directories for turborepo monorepo
...
- Move backend/ to apps/server/ via git mv
- Move frontend/ to apps/admin/ via git mv
- Create packages/typescript-config/ with base, nestjs, and react-vite presets
2026-07-02 15:05:12 +08:00