kantor-ai README

The project's README from github.com/kangkungmozzarella/kantor-ai. As one markdown file: README.md.

Kantor Kita

Tampilan terbaru mengikuti referensi kantor hangat: kayu terang, lantai parket, tanaman berdaun, kursi berbantalan dan sofa sage. Avatar chibi memakai kepala oval, rambut bervolume, wajah sederhana, badan membulat serta rig animasi yang sama. Panel putih gading memakai aksen hijau tua. Referensi gambar menjadi arahan gaya, bukan jaminan kesamaan render. Catatan gaya maket/soft block di bawah adalah riwayat perkembangan.

Seluruh teks antarmuka memakai bahasa Inggris.

Maket kantor empat lantai dengan 13 anggota tim, ruang kerja terbuka, dan pengelolaan tugas lokal. Nama dan peran mengikuti daftar pengguna. Denah, furnitur, dan figur orang adalah interpretasi ilustratif, bukan pengukuran atau potret asli.

Tampilannya meniru maket arsitek dari karton: warna krem, garis tinta di tepi benda, satu aksen merah bata. Avatar bergaya balok seperti Roblox, dengan kepala kubus, badan kotak, lengan dan kaki bersendi, serta wajah sederhana. Tiap anggota memakai varian perempuan berambut panjang atau varian laki-laki berambut pendek, sesuai daftar tim. Semua tetap ilustratif, bukan potret rupa asli. Animasi bekerja, ngobrol, minum, menelepon, dan rutinitas lain tetap berjalan.

Label, pemilih tim, detail, log, dan tugas menampilkan inisial anggota. Identitas penyimpanan tetap memakai nama lengkap agar tugas serta pilihan musholla yang sudah disimpan tetap cocok.

Menjelajahi kantor

Seret untuk memutar dan memiringkan kamera. Shift + seret atau klik kanan untuk menggeser, scroll atau cubit trackpad untuk zoom, geser dua jari ke samping untuk memutar. Di layar sentuh: satu jari memutar, dua jari mencubit dan menggeser. Keyboard: panah memutar/memiringkan, W A S D menggeser, Q/E zoom. Tombol +, −, Rotate, dan Reset tetap tersedia.

Kamera karakter: pilih anggota tim, lalu First-person view (sudut orang pertama) atau Follow from behind. Seret atau tombol panah untuk menoleh, scroll atau cubit untuk jarak kamera belakang. Kamera ikut berpindah lantai saat karakter naik atau turun tangga. Tekan Esc, Exit camera, atau Reset untuk kembali ke tampilan maket.

Ruang rapat, kedua phone booth, musholla, serta ruang pantry & lounge (berdinding kaca) punya pintu yang terbuka sendiri saat seseorang mendekat, lalu menutup kembali.

Di lantai 3 tim punya rutinitas sendiri: menghampiri rekan untuk ngobrol, ambil minum di pantry, rehat di lounge, menelepon di phone booth, membaca papan ide, rapat kecil berdua atau bertiga, atau berdiri meregangkan badan. Bubble bergantian menandai siapa yang bicara. Paling banyak empat orang meninggalkan meja sekaligus, dan karakter dengan tugas aktif lebih jarang beranjak. Routine: on/off menghentikan kegiatan baru; yang sedang berlangsung diselesaikan lalu kembali ke meja. Rutinitas mati secara bawaan bila sistem meminta gerakan dikurangi.

Office log mencatat kegiatan simulasi dan perubahan status tugas, terbaru di atas. Isinya kejadian simulasi, bukan pesan dari AI. Di layar kecil log dibuka lewat tombol Log.

Prayer time mengantar anggota yang sudah dicentang Join at prayer time (di panel detail karakter) ke musholla. Tidak ada yang dicentang secara bawaan, dan tidak ada yang dikirim otomatis. Pilihan disimpan di browser ini. Musholla memuat delapan sajadah.

Lunch, To the rooftop, dan Back to work memindahkan tim melalui jalur tangga 3D yang terlihat. Kamera dan lantai yang sedang dilihat tidak berubah saat perintah aktivitas diberikan, termasuk Prayer time. Dari tampilan seluruh gedung, perjalanan dapat diamati tanpa pindah tampilan. Jika tujuan berubah saat di tangga, karakter mencapai bordes berikutnya sebelum menuju tujuan baru. Pause menghentikan perjalanan di posisi saat ini. Animasi tidak menyelesaikan tugas.

Music memutar instrumental santai sintetis (chord lembut, bass, dan melodi pada 72 BPM), dibuat melalui Web Audio tanpa file atau layanan audio eksternal. Klik lagi untuk menghentikannya. Slider Vol. menyimpan volume di browser. Musik selalu mati saat halaman baru dimuat; perlu klik pengguna untuk mulai. Jeda simulasi tidak menghentikan musik.

Jalankan dari direktori proyek:

python3 -m http.server 4173 --bind 127.0.0.1 --directory public

Buka http://127.0.0.1:4173. Internet diperlukan untuk memuat Three.js dari CDN dan font Archivo serta IBM Plex Mono dari Google Fonts.

Mengelola tugas

Tugas disimpan dalam localStorage untuk alamat browser ini. Tidak ada sinkronisasi antarperangkat. Menghapus data situs juga menghapus tugas. Jika penyimpanan gagal, perubahan tidak diterapkan; data rusak tidak ditimpa secara otomatis.

Tugas dengan nama karakter prototipe lama tetap disimpan dan dapat dipindahkan ke anggota tim baru. Tugas aktif yang dipindahkan kembali ke antrean; hasil tugas selesai tetap dipertahankan.

Server tugas dan agen AI

Dengan server, tugas disimpan di data/tasks.json dan anggota yang tersambung ke agen AI mengerjakan tugasnya sendiri. Saat ini Social Media Specialist dan Customer Service; daftarnya ada di server/agents.js. Anggota lain tetap simulasi dengan status yang diubah manual.

cp .env.example .env   # isi ANTHROPIC_API_KEY dari console.anthropic.com → API Keys
npm start              # atau: node server/server.js  (Node 22+)

Buka http://127.0.0.1:3000.

Tugas terlihat langsung di kantor:

Ketiganya juga berjalan tanpa server (tugas dari localStorage).

Model bawaan adalah claude-sonnet-5-5; ganti dengan ANTHROPIC_MODEL di .env. tests/server.cjs menguji alur dry run dari awal sampai akhir, tugas manual, penjaga API, persistensi, dan jalur error agen; tes ini menyalakan servernya sendiri.

Struktur

Pemeriksaan browser

tests/avatar-stairs.cjs memeriksa varian avatar, inisial, kompatibilitas tugas, posisi 3D saat naik/turun tangga, jeda, perubahan tujuan, kamera yang tetap, musik, volume tersimpan, serta layout 375/768/1440px. Jalankan dengan node tests/avatar-stairs.cjs; konfigurasi Playwright sama seperti tes di bawah. OFFICE_URL dapat digunakan untuk alamat server selain port 4173.

tests/office.cjs menguji jumlah tim, pergantian lantai, klik lantai dari tampilan gedung, kamera karakter (mata, belakang, ikut ke lantai lain, Esc), pintu otomatis, orbit/geser/zoom kamera, rutinitas otomatis (meninggalkan meja, ngobrol, batas empat orang), log kantor, musholla dengan pilihan per orang, pilihan karakter, tugas, perjalanan makan/rooftop/kembali, tampilan responsif, dan pemindahan tugas lama. Jalankan server lokal terlebih dahulu, kemudian node tests/office.cjs dengan Playwright dan Chromium tersedia. Jika Playwright terpasang di luar proyek, set PLAYWRIGHT_MODULE ke direktori modul tersebut. Tambahkan --visual untuk hanya memeriksa lantai dan mengambil tangkapan layar. Browser pengujian memakai konteks terpisah dari data pengguna.

Member and division instructions

Select an avatar or initials in Team member. The detail sheet shows Active task, its instructions, and View / assign tasks. A brick-red underline marks an avatar with an active task; its accessible label and tooltip include the task title. The task remains visible while the character travels or takes a break. Completing it or returning it to the queue removes the marker.

Under Send instructions to, choose the selected person, their division, or Choose people… for a custom group. Meet together, Lunch, Rooftop, and Back to work apply only to that selection and preserve the current camera. The footer still commands the whole team. Meeting places are reserved before anyone moves; an invitation that exceeds the available six seats is rejected without moving a partial group. Explicit meetings last until participants receive another command, such as Back to work. Tasks remain manually managed.

tests/member-commands.cjs covers selection scope, room capacity, empty selection, meeting arrival, camera preservation, active-task display and responsive detail panels. Use the same Playwright setup as the other tests.

Soft-block avatars

Heads, torsos, limbs, hair and shoes now use rounded block geometry shared between characters. Joint poses blend over time instead of snapping between walking, sitting and activities. Small weight shifts, breathing, alternating typing/mouse poses and head turns vary by person. Characters slow down near their final destination. Barber characters share the rounded shapes and pose blending. Gender assignments, initials and task identities are unchanged.

tests/soft-avatar.cjs exercises character cameras, stairs, pause and arrival at lunch, with screenshots of the new figures. tests/member-commands.cjs remains the regression check for instructions and active tasks.

Evening building overview

View whole building now uses a closer camera, navy panels, warm floor lights and a muted dusk sky. Individual floors keep the warm daylight interior. Navigation thumbnails are captured from the actual 3D floors at startup. Counts show team members currently on each floor, excluding people on the stairs and barber visitors; they are not online-presence indicators. Mobile navigation uses compact floor labels and counts instead of thumbnails. No analytics or account controls are implied.

tests/building-view.cjs checks thumbnail loading, counts, clicking a floor through the facade, theme switching and 375/768/1440px layouts.

Pembaruan review dan keandalan tugas

Hasil manual dan komentar revisi disimpan sementara di sessionStorage tab browser, sehingga pembaruan daftar serta reload tidak menghapus tulisan yang belum dikirim. Komentar revisi terikat ke versi draf. Persetujuan memakai versi tugas agar tampilan lama tidak menyetujui draf yang sudah berubah.

Worker memakai identitas eksekusi: hasil atau error terlambat tidak mengubah tugas yang sudah dialihkan. API memvalidasi penanggung jawab dan batas satu tugas aktif per orang. Jalankan ulang server setelah memperbarui kode backend.

Office life

Tombol Office life membuka panel kegiatan dan pembagian tugas. Teks antarmuka tetap bahasa Inggris.

Jalankan ulang server dan reload halaman setelah perubahan. tests/office-life.cjs memeriksa penyimpanan batch, feedback coffee break, unduhan, interaksi/jeda kucing, kebiasaan, selebrasi, pencahayaan tersimpan, panel responsif dan pembagian tugas tanpa server. Tes memakai server sementara dalam dry-run dan tidak memanggil AI berbayar.

Work board, review, decorations and tours

Di Office life, Work board membuka pekerjaan nyata beserta draf, pertanyaan agen dan hasil selesai. Filter status membantu menemukan pekerjaan yang perlu ditinjau. Open task membawa ke tugas yang tepat; Discuss this draft membuka rapat review. Papan 3D di workspace juga dapat diklik, dan kini menampilkan pekerjaan selesai bersama tugas yang menunggu review/keputusan. Monitor meja menampilkan status tugas pemiliknya; klik sisi depan monitor untuk membuka tugas anggota tersebut. Anggota tanpa tugas menampilkan Idle. Finished di monitor adalah status tugas, bukan kehadiran online.

Review meeting memakai draf yang sudah ada. Pilih tugas dan 1–6 anggota; kursi ruang rapat diperiksa sebelum siapa pun dipindahkan. Anggota tetap di ruang rapat sampai diberi perintah baru atau Send invitees back to work. Centang Ask connected agents for feedback jika ingin masukan AI; saat ini KR dan KS. Anggota lainnya hadir sebagai simulasi. Server mengirim satu permintaan model per anggota tersambung, berurutan, dengan draf, instruksi asli dan masukan sebelumnya. Catatan menyebut versi draf sumber; permintaan dari versi lama ditolak dan perubahan selama review diberi penanda. Review tidak mengubah tugas, menyetujui, merevisi atau menerbitkan hasil. Persetujuan dan revisi tetap dilakukan lewat Tasks. Catatan dapat diunduh sebagai teks; tanpa key, hasil berlabel DRY RUN.

Di Appearance & tours, pilih warna kursi/karpet, warna daun tanaman, dan salah satu poster kantor. Team colours / Original greens memulihkan warna bawaan. Pilihan tersimpan di browser, bukan di server. Dekorasi tidak memindahkan furnitur atau mengubah jalur berjalan.

Outside the windows menawarkan Clear, Rain, dan Sunset. Hujan merupakan simulasi visual di luar footprint gedung, bukan cuaca sungguhan. Sunset memberi cahaya sore tanpa mengubah pilihan Lighting yang disimpan; Clear mengembalikan pencahayaan pilihan itu. Play rain sound memainkan noise tersaring lewat Web Audio; volumenya tersimpan. Audio selalu mati setelah reload dan dimulai dengan klik pengguna. Suara hujan dan Music memiliki kontrol terpisah.

Camera tours menyediakan orbit workspace, mengikuti Moka, dan orbit gedung. Klik Start camera tour untuk menutup panel dan mulai; Stop tour, Escape, drag, wheel, keyboard kamera, pemilihan lantai/anggota, atau kontrol kamera menghentikan tur. Pause menjeda tur serta hujan visual. Reduced motion memberikan sudut kamera diam dan tetes hujan tanpa animasi.

tests/office-studio.cjs menggunakan server sementara dalam dry-run untuk memeriksa status/klik monitor, papan hasil, navigasi tugas, review versi draf, dekorasi tersimpan, cuaca/audio, tur, gangguan kamera manual, viewport 375/768/1440px dan reduced motion. public/studio.js mengelola panel serta audio; public/studio.css menata panel; geometri, cuaca dan kamera tetap di public/office.js.

tests/server.cjs memeriksa siklus draf, revisi, persetujuan, dan pemulihan tulisan setelah polling/reload dengan dry-run. tests/worker-reliability.cjs memakai provider lokal tiruan untuk memeriksa error terlambat setelah pengalihan tugas. Pengujian ini tidak memanggil AI berbayar.

kantor-ai (kangkungmozzarella/kantor-ai)

Searching Database…

这是什么?Kantor Kita 是一个交互式 3D 纸模型可视化,展示一栋四层办公室和其中的 13 人团队,并为这个团队搭配了一个简单的本地任务跟踪器。
这是游戏还是项目管理工具?它既不是有目标的游戏,也不是完整的项目管理工具——而是一个可以在浏览器里漫游探索的 3D 办公室模型(用 Three.js 构建),带有人物的环境化日常行为,上面还加装了一个轻量任务看板。
怎么让它跑起来?只需在浏览器中打开项目的 public 文件夹,或者用任意静态服务器(如 'python3 -m http.server' 或 Live Server)来提供访问——不需要任何构建步骤。
需要 Anthropic 的 API 密钥吗?只有当你想让接入的 AI 智能体真正产出工作时才需要。没有 ANTHROPICAPIKEY 时,可选的任务服务器会以 「dry run」 模式运行,返回明确标注的示例文本,而不是真实的 AI 输出。
每个团队成员都由 AI 自动驱动吗?不是——目前只有社交媒体专员和客服两个角色接入了 AI 智能体(在 server/agents.js 中配置),团队其他成员都是模拟的,他们的任务状态必须手动更新。
它是以某家真实公司的办公室为原型吗?不是——平面图、家具和人物都是示意性演绎,不是真实尺寸或真人肖像;姓名和职位只是跟随一份可配置的用户列表。
把可选的任务服务器暴露到我的网络上安全吗?不,目前还不行——本地服务器没有登录功能,而且只监听 127.0.0.1,所以在加入身份验证之前,它应该只留在你自己的机器上。
我的任务和设置保存在哪里?所有内容——任务、祷告时间订阅和音量——都只存在浏览器的 localStorage 里;没有跨设备同步,不过任务可以导出为 JSON(尚不支持导入)。
我可以自己在建筑周围移动镜头吗?可以——拖拽或使用方向键/WASD/Q-E 来环绕、平移和缩放,并支持触控手势,还可以为任意选中的角色启用专属的第一人称和背后跟随视角。
有背景音乐吗?有,一段 72 BPM 的氛围器乐循环,通过 Web Audio API 实时生成(没有音频文件或外部服务);每次页面加载时默认静音,直到你点击播放。
我可以给整个部门下达指令,而不只是某个人吗?可以——在 「Send instructions to」 下可以选择发给选中的人、其整个部门或自定义分组,而且在任何人移动之前,会议室会提前预留座位(上限六个)。
Size
0.1 MB
Stars
116
Updated
CommitOct 05
Age
18d
Commits · 90 Days